2011-03-11 63 views
2

for-each語句中,我想爲每個匹配的節點生成ID。似乎無法使用XSLT中的generate-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中調用這個函數?提前致謝!

回答

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指令某些屬性。

+0

乾杯,完美的作品! – slhck 2011-03-11 13:59:46

+0

@slhck:我很高興這很有幫助。 – 2011-03-11 14:00:35