Xml 使用XSLT迭代节点并获取属性值

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

我有一个结构如下的XML文件:

<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行的错误:文档末尾的额外内容”。。。