xslt - Unexpected result from xsltproc - libXML -
i helping user when ran problem.
i have piece of xslt try create 2 keys, 1 first occurrence (in same parent) of element containing given value on descendant , second 1 other occurrences same value on descendant. (sorry bad english)
this first key, goal create set "the first of siblings", given record/id, indexed generate-id() value:
<xsl:key name ="key1" match="datapage[not( preceding-sibling::datapage/record/id = record/id )]" use="generate-id()"/>
in second key try dapapage elements "not first of siblings", given record/id, indexed generate-id() of "the first of siblings" same record/id:
<xsl:key name="key2" match="datapage[ preceding-sibling::datapage/record/id = record/id ]" use="generate-id(preceding-sibling::datapage[ record/id = current()/record/id ][last()])" />
and templates
<xsl:template match="/*"> <xsl:copy> <xsl:apply-templates select="datapage"/> </xsl:copy> </xsl:template> <xsl:template match="datapage"> <xsl:copy> <xsl:for-each select="key('key1',generate-id())"> <key1> <xsl:copy-of select="."/> </key1> </xsl:for-each> <xsl:for-each select="key('key2',generate-id())"> <key2> <xsl:copy-of select="."/> </key2> </xsl:for-each> </xsl:copy> </xsl:template> </xsl:stylesheet>
i tested xslt xml:
<?xml version="1.0" encoding="utf-8"?> <page> <datapage> <record> <id>0</id> <desc>aaa</desc> <amount>11</amount> </record> </datapage> <datapage> <record> <id>0</id> <desc>bbb</desc> <amount>22</amount> </record> </datapage> <datapage> <record> <id>0</id> <desc>ccc</desc> <amount>333</amount> </record> </datapage> </page>
transforming xalan get, expected, following result:
<page> <datapage> <key1> <datapage> <record> <id>0</id> <desc>aaa</desc> <amount>11</amount> </record> </datapage> </key1> <key2> <datapage> <record> <id>0</id> <desc>bbb</desc> <amount>22</amount> </record> </datapage> </key2> <key2> <datapage> <record> <id>0</id> <desc>ccc</desc> <amount>333</amount> </record> </datapage> </key2> </datapage> <datapage/> <datapage/> </page>
however when use libxml xsltproc this:
<page> <datapage> <key1> <datapage> <record> <id>0</id> <desc>aaa</desc> <amount>11</amount> </record> </datapage> </key1> </datapage> <datapage/> <datapage/> </page>
what wrong construction of key2, or xslproc bug?
hard certain, yes, looks error in xsltproc. @ least, don't see wrong in key constructor , saxon 9.4.0.3 agrees xalan , not xsltproc on output.
Comments
Post a Comment