我不确定xsl:sort指令是如何工作的.我需要通过标签名称(对于diffing)对元素进行排序,我似乎无法想出如何使其工作.我的第一个虽然是修改身份转换,只是修改它来包括排序语句,但我不完全确定如何做到这一点.
<xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"> <!-- xsl:sort ? --> </xsl:apply-templates> </xsl:copy> </xsl:template>
这种转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="@*"> <xsl:sort select="name()"/> </xsl:apply-templates> <xsl:apply-templates select="node()"> <xsl:sort select="name()"/> </xsl:apply-templates> </xsl:copy> </xsl:template> </xsl:stylesheet>
当应用于此XML文档时:
<t b="x" c="y" a="t"> <c/> <b/> <a/> </t>
产生所需的排序输出:
<t a="t" b="x" c="y"> <a></a> <b></b> <c></c> </t>
注意:
>不仅元素而且属性都被排序(后者是依赖于实现的,但可以使用MSXML).>对于差异使用排序的XML是不可靠的,因为将XML文档转换为排序表示不是1:1映射.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。