使用XPATH和当前属性名称的XLST元素值
问题描述:
我试图创建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}
它的作品。
请问你能提出我做错了什么?
答
使用current()
函数引用uniqueID
属性当前节点的:
<xsl:value-of select="/DataRepository/Contents/
Content[@uniqueID=current()/@uniqueID]/Description"/>
+1
这解决了问题!谢谢! – alzix 2011-12-15 16:54:39
源文档的XML。你还可以举一个你想要的输出的例子吗?目前还不清楚你认为`{@uniqueID}`应该做什么。 – 2011-12-15 15:31:42