2010-12-03 109 views
1

我有一些XSLT,我没有写,但我必须保持它。在某些时候,它使用generate-id()来创建一个空的div,然后由脚本继续操作。问题在于div是在另一个div内的(我认为这有点无意义,但无论如何都可以接受),并且两个都被赋予相同的ID!我用Xalan尝试过,然后再用JRE变压器得到相同的结果。然后,我尝试使用Eclipse/Xalan的XSLT调试器,当我跨过的东西,这一切工作正常...为什么generate-id()函数返回两次相同的id?

的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> 

我很欣赏这有点复杂 - 任何线索?请?

+0

你的说法,你得到不正确的结果不能被reproed除非你提供一个完整的XML文档(尽可能小)和一个完整的XSLT转换(尽可能小)。请提供这些,或者你的问题不是真的可以回答的问题。 – 2010-12-03 17:23:05

+0

您发布的XML片段是什么?如果是这样的结果,它并没有用那个XSLT代码生成,因为那个用'id`生成`div`,但结果中没有`div'。 – khachik 2010-12-03 17:27:39

回答

4

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

generate-id()函数返回一个唯一标识符字符串为自变量节点或上下文节点否则

因此,它对于独特的节点是唯一的......您可能正在使用相同的上下文节点调用两个​​内容模板中的p/0函数。这是可行的吗?嗯......

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

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

相关问题