我是XSLT的新手,虽然到目前为止我已成功完成了许多任务......但排序让我很难过.
我需要一个小例子的帮助,这样我才能理解xsl:sort更好.
我的xml数据如下所示:
<NewTerms>
<newTerm>Zebra</newTerm>
<newTerm>Horse</newTerm>
<newTerm>Cat</newTerm>
<newTerm>Lion</newTerm>
<newTerm>Jaguar</newTerm>
<newTerm>Cheetah</newTerm>
<newTerm>Deer</newTerm>
<newTerm>Buffalo</newTerm>
<newTerm>Dog</newTerm>
</NewTerms>
Run Code Online (Sandbox Code Playgroud)
我只想简单地从xsl表中按字母顺序对它们进行排序.我写的xsl(&不工作)如下:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="NewTerms">
<xsl:apply-templates>
<xsl:sort select="newTerm"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
我很确定我还没有理解xsl:sort函数是怎么回事.如果你帮助我完成这个小例子......我想我会更好地理解它.
谢谢.
茉莉
我假设你想要一个有效的XML结构作为输出,因为你<xsl:output>的方法是"XML".你可以试试这个:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no" />
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()">
<xsl:sort select="."/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
这给出了这个输出:
<?xml version="1.0" encoding="UTF-8"?>
<NewTerms>
<newTerm>Buffalo</newTerm>
<newTerm>Cat</newTerm>
<newTerm>Cheetah</newTerm>
<newTerm>Deer</newTerm>
<newTerm>Dog</newTerm>
<newTerm>Horse</newTerm>
<newTerm>Jaguar</newTerm>
<newTerm>Lion</newTerm>
<newTerm>Zebra</newTerm>
</NewTerms>
Run Code Online (Sandbox Code Playgroud)
这对你有帮助吗?
您还可以查看排序的定义,例如:http: //www.w3schools.com/xsl/el_sort.asp http://www.w3.org/TR/xslt#sorting
最好的问候,彼得
| 归档时间: |
|
| 查看次数: |
5282 次 |
| 最近记录: |