Xml 使用XSLT迭代节点并获取属性值
我有一个结构如下的XML文件:Xml 使用XSLT迭代节点并获取属性值,xml,xslt,hyperlink,Xml,Xslt,Hyperlink,我有一个结构如下的XML文件: <entries> <entry> <sense> <definition> <RegDef> <w ID="1">word1</w><w ID="2">word2</w> </RegDef> </definition> </sens
<entries>
<entry>
<sense>
<definition>
<RegDef>
<w ID="1">word1</w><w ID="2">word2</w>
</RegDef>
</definition>
</sense>
</entry>
<entry>
<sense>
<definition>
<RegDef>
<w ID="12">word3</w><w ID="43">word4</w><w ID="413">word5</w>
</RegDef>
</definition>
</sense>
</entry>
.
.
.
</entries>
单词1单词2
单词3单词4单词5
.
.
.
我想迭代每个节点,获取属性ID的值,并将其显示为超链接
我试过了
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="entries/entry">
<html>
<a href="{concat('http://example.com/show.php?id=', entries/entry/list/sense/definition/w[@ID='0'])}">word</a>
</html>
</xsl:template>
</xsl:stylesheet>
但是它没有给我任何ID。我希望每个属性ID的值在url处连接它,然后将属性在url处连接的单词放入标记中
我希望输出是:值和类似的超链接,我希望每个超链接的属性与节点word1和word2上的属性相同,因为每个循环可能会让您开始
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="entries/entry/sense/definition/RegDef">
<xsl:for-each select="w">
<html>
<a href="{concat('http://example.com/show.php?id=', @ID)}">
<xsl:value-of select="."/>
</a>
</html>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这是可行的,但我的实际XML结构有点不同。我有另一个节点()。当我运行带有节点的示例时,它会返回一个错误:“此页面包含以下错误:第1列第5行的错误:文档末尾的额外内容”。。。