0

我有练习在不使用“for-each”的情况下对 xml 文件进行排序。使用我的脚本,我得到了条目,但它们没有排序。

Xml 文件: http ://www.w3schools.com/xml/cd_catalog.xml

<xsl:stylesheet version = '1.0'
 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="CD">
<br/>
<xsl:apply-templates select="TITLE" >
  <xsl:sort select="TITLE"/>
</xsl:apply-templates>

</xsl:template>

谢谢

4

2 回答 2

1

因为 CD 中只有一个 TITLE,所以我假设您喜欢按 TITLE 对 CD 进行排序:尝试以下操作:

<xsl:stylesheet version = '1.0'
 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="CATALOG">
   <xsl:apply-templates select="CD" >
     <xsl:sort select="TITLE"/>
   </xsl:apply-templates>
 </xsl:template>

<xsl:template match="CD">
  <xsl:value-of select="TITLE" />
  <br/>
</xsl:template>

 </xsl:stylesheet> 
于 2013-06-14T11:25:26.897 回答
-1

您的模板有点错误...首先您没有根匹配模板,其次您正在迭代,TITLE而您应该迭代CD

<xsl:stylesheet version = '1.0'
 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
    <xsl:apply-templates select="CD" >
        <xsl:sort select="TITLE"/>
    </xsl:apply-templates>
</xsl:template>

<xsl:template match="CD">
    <xsl:value-of select="TITLE" />
</xsl:template>

您看到的输出可能不是由您的模板生成的,而是由应用到的默认模板生成的/

于 2013-06-14T11:22:21.923 回答