垂直输出XSL和XML

时间:2012-02-03 20:23:38

标签: html xml xslt xpath

我正在研究XML中的一个简单字典,现在我试图将一些单词垂直输出,但它们都出现在没有空格的行上。

这是一些XML文件

<thesaurus>
  <dictionary>
    <language>English</language>
    <word type="1">word 1</word>
    <word type="2">word 2</word>
    <word type="3">word 3</word>
    <word type="4">word 4</word>
    <word type="5">word 5</word>
    <word type="6">word 6</word>
    </dictionary>
</thesaurus>

这是我的第一个“差不多”的解决方案

  <xsl:template match="/">
    <html>
      <body>

          <xsl:apply-templates select="//word">

          <xsl:sort order="ascending"/>
        </xsl:apply-templates>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

该解决方案只打印出所有这样的单词

  

AgentsColorFoundationsGrainPartialPogotypePretendSilentStrollTender

我的第二次尝试是这样的

 <xsl:for-each select="thesaurus">
         <h1> <xsl:value-of select="//word"/></h1>
               </xsl:for-each>

通过这种方式,我可以设置单词的样式,并且它们将打印垂直,但问题是只有第一个单词是打印。 = /

提示会很棒:)

由于

1 个答案:

答案 0 :(得分:1)

使用此模板:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <html>
      <body>
        <xsl:apply-templates select="*/*/word">
          <xsl:sort order="ascending"/>
        </xsl:apply-templates>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="word">
    <xsl:value-of select="."/>
    <br/>
  </xsl:template>

</xsl:stylesheet>

输出:

<html>
  <body>word 1<br />word 2<br />word 3<br />word 4<br />word 5<br />word 6<br /></body>
</html>