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

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -