2011-12-15 90 views
1


我试图创建XSL转换。 我的XML看起来是这样的:使用XPATH和当前属性名称的XLST元素值

<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}它的作品。

请问你能提出我做错了什么?

+0

源文档的XML。你还可以举一个你想要的输出的例子吗?目前还不清楚你认为`{@uniqueID}`应该做什么。 – 2011-12-15 15:31:42

回答

3

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

没有很好地形成
<xsl:value-of select="/DataRepository/Contents/ 
      Content[@uniqueID=current()/@uniqueID]/Description"/> 
+1

这解决了问题!谢谢! – alzix 2011-12-15 16:54:39