似乎无法在XSLT中使用generate-id

时间:2011-03-11 13:45:20

标签: xml transform xslt

for-each语句中,我想为每个匹配的节点生成ID。

给出一些XML文件:

<event attr1="qwertz">
  <test>Test</test>
</event>
<event attr1="asdfg">
  <test>Test</test>
</event>

......以及以下规则:

<xsl:for-each select="event">
  <xsl:element name="event">
    <xsl:attribute name="id">id/{generate-id(test)}</xsl:attribute>
  </xsl:element>
</xsl:for-each>

我总是得到这样的东西:

<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
...

在XSLT中调用此函数的正确语法是什么?提前谢谢!

1 个答案:

答案 0 :(得分:2)

使用:

<event id="id/{generate-id(test)}"/>

或详细:

<xsl:element name="event">
    <xsl:attribute name="id">
        <xsl:text>id/<xsl:text>
        <xsl:value-of select="generate-id(test)"/>
    </xsl:attribute>
</xsl:element>

注意:属性值模板仅适用于文字结果元素,仅适用于XSLT指令的某些属性。