使用XPATH和当前属性名称的元素的XSLT值

时间:2011-12-15 15:25:51

标签: xslt xpath


我正在尝试创建XSL转换。 我的XML看起来像这样:

<DataRepository>
  <Contents>
    <Content uniqueID="1" name="some.name" ...>
      <Description>Content description</Description>
    </Content>
    ...
  </Contents>
  <Tests>
    <Test>
      <Content uniqueID="1"/>
      <Content uniqueID="2"/>
      <Content uniqueID="N">
    </Test>
    ...
  </Tests>
</DataRepository>

在转换后的文档中,我想通过显示内容描述来呈现测试内容 XLS代码片段负责:

<xsl:for-each select="DataRepository/Tests/Test">
  <h2><u><xsl:value-of select="@name"/></u></h2>
    <ol>
      <xsl:for-each select="Content">
        <li><xsl:value-of select="//DataRepository/Contents/
                 Content[@uniqueID='{@uniqueID}']/Description"/></li>
      </xsl:for-each>
    </ol>
  </xsl:for-each>

我在输出中得到空行,没有显示说明。 如果我用实际数字替换{@uniqueID},它就会起作用。

你能否建议我做错了什么?

1 个答案:

答案 0 :(得分:3)

使用current()函数引用当前节点的uniqueID属性:

<xsl:value-of select="/DataRepository/Contents/
             Content[@uniqueID=current()/@uniqueID]/Description"/>