In a for-each
statement, I want to generate IDs for every matched node.
Given some XML file:
<event attr1="qwertz">
<test>Test</test>
</event>
<event attr1="asdfg">
<test>Test</test>
</event>
... and the following rule:
<xsl:for-each select="event">
<xsl:element name="event">
<xsl:attribute name="id">id/{generate-id(test)}</xsl:attribute>
</xsl:element>
</xsl:for-each>
I always get something like this:
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
...
What is the corr开发者_如何学JAVAect syntax for calling this function in XSLT? Thanks in advance!
Use:
<event id="id/{generate-id(test)}"/>
Or the verbose:
<xsl:element name="event">
<xsl:attribute name="id">
<xsl:text>id/<xsl:text>
<xsl:value-of select="generate-id(test)"/>
</xsl:attribute>
</xsl:element>
Note: Attribute Value Templates are only for literal result elements and only some attributes of XSLT instructions.
精彩评论