1

我有一些 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) &gt; 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>

我很欣赏这有点复杂 - 有什么线索吗?请?

4

1 回答 1

4

问题在于您没有向我们展示的代码。

generate-id()函数返回参数节点或上下文节点的唯一标识符字符串,否则。

所以,它对于唯一节点是唯一的......您可能在具有相同上下文节点的两个内容模板中调用 p/0 函数。这怎么可能?出色地...

<xsl:call-template name="Blah"/> 

call-template指令不改变上下文节点

于 2010-12-03T18:44:05.837 回答