Odlišná funkcionalita procesorů XSLT

ZAJDAN

  • *****
  • 2 091
    • Zobrazit profil
    • E-mail
Odlišná funkcionalita procesorů XSLT
« kdy: 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?
« Poslední změna: 19. 09. 2023, 11:34:39 od Petr Krčmář »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


ZAJDAN

  • *****
  • 2 091
    • Zobrazit profil
    • E-mail
Re:odlišná funkcionalita XSLT procesorů
« Odpověď #1 kdy: 19. 09. 2023, 11:26:01 »
Tak vyřešeno....
dle 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">
...
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.