Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno XSLT šablona

Zdravím
potřeboval bych poradit jak napsat xslt šablonu, nejde mi tedy o celou šablonu, tu mám téměř hotovou, ale o jeden konkrétní bod.
vstupní xml vypadá zhruba takto:

<data>
 <Doklad>
  <Cislo>A123456</Cislo>
  <Datum>2017.05.12</Doklad>
  <Polozky>
    <Polozka cislo=1>
    <Cena>12,5</Cena>
    <Pocet>5</Pocet>
     .....
    </Polozka>

    <Polozka cislo=2>
    <Cena>12,5</Cena>
    <Pocet>5</Pocet>
     .....
    </Polozka>
  </Polozky>
 </Doklad>
</data>

pomocí xslt šablony dělám trochu jiné xml a narazil jsem na problém, že položky potřebuji "přeložit" buď v tomto tvaru

<PolDokladu id="cislo_z_puvodni_polozky">

nebo

<PolDokladu>
<ID>cislo_z_puvodni_polozky<ID>

Předem díky za rady.

Předmět Autor Datum
K atribútom sa vieš dostať pomocou znaku @: <xsl:stylesheet version="1.0" xmlns:xsl="www.w3.org/199…
los 01.06.2017 07:13
los
Díky moc za radu, ale nedělá to přesně to co bych potřeboval. pokud použiji zápis: <ID><xsl:value-of…
BraskaPK 01.06.2017 12:44
BraskaPK
Toto je výstup xsltproc, ktorý dostanem pri použití tej šablóny na tvoj vstup (mierne upravený, aby…
los 01.06.2017 19:27
los
Asi jsem nějaký natvrdlý, zkusil jsme to vše ještě jednou a dělá to přesně to co potřebuji. Děkuji z… poslední
BraskaPK 02.06.2017 08:36
BraskaPK

K atribútom sa vieš dostať pomocou znaku @:

<xsl:stylesheet version="1.0" xmlns:xsl="www.w3.org/1999/XSL/Transform">
        <xsl:template match="/data">
                <Doklady>
                        <xsl:for-each select="Doklad">
                                <xsl:for-each select="Polozky">
                                        <xsl:for-each select="Polozka">
                                                <PolDokladu>
                                                        <ID><xsl:value-of select="@cislo"/></ID>
                                                </PolDokladu>
                                        </xsl:for-each>
                                </xsl:for-each>
                        </xsl:for-each>
                </Doklady>
        </xsl:template>
</xsl:stylesheet>

Díky moc za radu, ale nedělá to přesně to co bych potřeboval.
pokud použiji zápis:
<ID><xsl:value-of select="@cislo"/></ID>

ve výstupním xml mám

<ID ID="eb124d8b-7bf9-439c-aead-519df83ee2a2" />

Ale já bych potřeboval
<ID>eb124d8b-7bf9-439c-aead-519df83ee2a2</ID>

Pro jistotu jsme zkusil i <xsl:element name="ID"><xsl:copy-of select="@Cislo"/></xsl:element>, ale výsledek je bohužel stejný.

Toto je výstup xsltproc, ktorý dostanem pri použití tej šablóny na tvoj vstup (mierne upravený, aby z toho bolo XML):

$ xsltproc test.xslt test.xml
<?xml version="1.0"?>
<Doklady><PolDokladu><ID>1</ID></PolDokladu><PolDokladu><ID>2</ID></PolDokladu></Doklady>

Ak ti to dá taký výstup, ako píšeš, tak mi z toho vychádza, že si buď použil inú šablónu, alebo tvoj XSLT procesor nie je XSLT procesor. Si si istý, že si použil tú šablónu, čo som sem dal? Aký XSLT procesor používaš?

Zpět do poradny Odpovědět na původní otázku Nahoru