我有一些我没写过的XSLT,但我必须保留它。在某些时候,它使用generate-id()创建一个空div,然后由脚本进一步操作。问题是div在另一个div中(我以为这有点无意义,但无论如何都是可以接受的)并且两者都被赋予相同的id!我尝试使用Xalan,然后再使用JRE变换器,结果相同。然后我尝试使用Eclipse / Xalan XSLT调试器,当我踩到它时,一切正常......
XSLT看起来像这样:
<xsl:template match="listed">
<xsl:variable name="showwhat">
<xsl:call-template name="IdentifyAudience"/>
</xsl:variable>
<xsl:if test="string-length($showwhat) > 0">
<div>
<xsl:attribute name="id">
<xsl:value-of select="generate-id()"/>
</xsl:attribute>
<xsl:call-template name="Blah"/>
<xsl:apply-templates/>
</div>
</xsl:if>
</xsl:template>
XML片段是这样的:
<listed id='ID39AF705AE17A000F337B000A' mode='html'>
<ul>
<li>Blah blah</li>
</ul>
</listed>
<listed id='ID39AF715892AE000F337B002B' mode='html'>
<ul>
<li>Blech blech.</li>
</ul>
</listed>
我很欣赏这有点复杂 - 任何线索?请?
答案 0 :(得分:4)
问题在于您未向我们展示的代码。
generate-id()
函数为参数节点或上下文节点返回唯一标识符字符串,否则。
因此,它对于唯一节点是唯一的...您可能在具有相同上下文节点的两个内容模板中调用p / 0函数。这怎么可能?嗯......
<xsl:call-template name="Blah"/>
call-template
指令不会更改上下文节点