使用XSLT迭代标记

使用XSLT迭代标记,xslt,Xslt,我有一个如下所示的xml结构 名字01 名称02 姓名03 名字04 如何迭代NameList的子标记并使用XSLT的xsl:for-each显示它们? 我的输出应该是 name01 name02 名称03 名字04 谢谢我不完全确定你想要什么,但也许是这样 <xsl:template match="/"> <xsl:for-each select="NameList"> <xsl:value-of select="."/>

我有一个如下所示的xml结构


名字01
名称02
姓名03
名字04

如何迭代NameList的子标记并使用XSLT的xsl:for-each显示它们? 我的输出应该是

name01
name02
名称03
名字04


谢谢

我不完全确定你想要什么,但也许是这样

<xsl:template match="/">

    <xsl:for-each select="NameList">
        <xsl:value-of select="."/>          
    </xsl:for-each>
</xsl:template> 


实际上没有必要为每个使用xsl:for。您可以通过模板匹配来实现这一点,模板匹配通常是XSLT中最受欢迎的方法

您需要一个模板来匹配名称列表元素,您可以在其中输出所需的任何“包含”元素,然后开始选择子元素

  <xsl:template match="NameList">
     <table>
         <xsl:apply-templates select="Name" />
     </table>
  </xsl:template>

然后,您就有了一个与Name元素实际匹配的模板,您可以在其中以您想要的任何格式输出它。比如说

  <xsl:template match="Name">
    <tr>
      <td>
         <xsl:value-of select="." />
      </td>
    </tr>
  </xsl:template>

初学者可以尝试以下XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="NameList">
     <table>
         <xsl:apply-templates select="Name" />
     </table>
  </xsl:template>
  <xsl:template match="Name">
    <tr>
      <td>
         <xsl:value-of select="." />
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>


如果您确实想在格式化或输出元素方面获得更多帮助,您真的需要在问题中提到这一点。谢谢

Thx。我得到了结果。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="NameList">
     <table>
         <xsl:apply-templates select="Name" />
     </table>
  </xsl:template>
  <xsl:template match="Name">
    <tr>
      <td>
         <xsl:value-of select="." />
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>