如何解决为什么xsl:sort选择器不起作用?
| 给定以下XML:<?xml version=\"1.0\"?>
<Things>
<Thing>
<Thing ID=\"0002\"/>
<Name>Bob</Name>
</Thing>
<Thing>
<Thing ID=\"0003\"/>
<Name>Alice</Name>
</Thing>
<Thing>
<Thing ID=\"0001\"/>
<Name>Carol</Name>
</Thing>
</Things>
我想输出按ID属性排序的相同XML。以下样式表可以满足我的要求。注释掉的xsl:sort
(以及我尝试过的几种变体)不起作用-我只是得到原始文档的未分类副本。 (并且没有错误消息。)
如何特别选择Thing元素上的ID属性(以避免在较大文档中可能存在的其他元素上使用ID属性)?
<xsl:stylesheet
xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"
version=\"1.0\">
<xsl:template match=\"node()|@*\">
<xsl:copy>
<xsl:apply-templates select=\"node()|@*\" />
</xsl:copy>
</xsl:template>
<xsl:template match=\"Things\">
<xsl:copy>
<xsl:apply-templates>
<xsl:sort select=\"*/@ID\" data-type=\"number\"/>
<!-- I don\'t understand why this doesn\'t work:
<xsl:sort select=\"Thing/Thing[@ID]\" data-type=\"number\"/>
-->
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
解决方法
你要
<xsl:sort select=\"Thing/@ID\" data-type=\"number\"/>
在发生这种情况的时刻,上下文已经在每个第一级Thing
处,因此排序键是第二级Thing的@ID属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。