Fórum Root.cz

Hlavní témata => Software => Téma založeno: ZAJDAN 19. 09. 2023, 11:03:54

Název: Odlišná funkcionalita procesorů XSLT
Přispěvatel: ZAJDAN 19. 09. 2023, 11:03:54
Ahoj...
k jistému projektu musím použít nástroj, který používá JDK XSLT processor
Má to problém, když v proměnné segments mám cyklus, ve kterém se odkazuji na $xsl/Pack
Vrací to chybu: FilterParentPath(variable-ref(xml/result-tree), step("child", 34))'.

Kód: [Vybrat]
<xsl:variable name="xml">
   <xsl:for-each select="/Msg/Body/Payload[@id=&apos;CallSQL&apos;]/ResultSet/Row">
      <Pack>
         <ItemCode><xsl:value-of select="ItemCode"></xsl:value-of></ItemCode>
      </Pack>
   </xsl:for-each>
</xsl:variable>
                   
<xsl:variable name="segments">
   <xsl:for-each select="$xml/Pack">
      <Pack>
         <SequenceNumber><xsl:value-of select="position()"></xsl:value-of></SequenceNumber>
      </Pack>
   </xsl:for-each>
</xsl:variable>

Stejný způsob zkouším v online XSLT procesoru, který používá Saxonica....pravděpodobně .NET XSLT processor a tam vše funguje v pořádku.
Je normální, aby s takovýmto případem byli trable dle použitého XSLT procesoru?
Název: Re:odlišná funkcionalita XSLT procesorů
Přispěvatel: ZAJDAN 19. 09. 2023, 11:26:01
Tak vyřešeno....
dle https://www.xml.com/pub/a/2003/07/16/nodeset.html (https://www.xml.com/pub/a/2003/07/16/nodeset.html)
je potřeba použít node-set()
Kód: [Vybrat]
...
<xsl:for-each select="exsl:node-set($xml)/Pack">
...