使用XSLT迭代标记

时间:2013-07-31 09:34:48

标签: xslt

我有像下面这样的xml结构,

<NameList> <Name>name01</Name> <Name>name02</Name> <Name>name03</Name> <Name>name04</Name> </NameList>

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

name01
name02
姓名03,2
姓名04,2

谢谢

2 个答案:

答案 0 :(得分:1)

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

<xsl:template match="/">

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

它推出

    name01 name02 name03 name04 

答案 1 :(得分:1)

没有必要使用 xsl:for-each 。您可以使用模板匹配来完成此操作,这通常是XSLT中最受青睐的方法。

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

  <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>

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