xml – XSLT按名称排序节点?

前端之家收集整理的这篇文章主要介绍了xml – XSLT按名称排序节点?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不确定xsl:sort指令是如何工作的.我需要通过标签名称(对于diffing)对元素进行排序,我似乎无法想出如何使其工作.我的第一个虽然是修改身份转换,只是修改它来包括排序语句,但我不完全确定如何做到这一点.
  1. <xsl:template match="@*|node()">
  2. <xsl:copy>
  3. <xsl:apply-templates select="@*|node()">
  4. <!-- xsl:sort ? -->
  5. </xsl:apply-templates>
  6. </xsl:copy>
  7. </xsl:template>
这种转变:
  1. <xsl:stylesheet version="1.0"
  2. xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output omit-xml-declaration="yes" indent="yes"/>
  4. <xsl:strip-space elements="*"/>
  5.  
  6. <xsl:template match="node()|@*">
  7. <xsl:copy>
  8. <xsl:apply-templates select="@*">
  9. <xsl:sort select="name()"/>
  10. </xsl:apply-templates>
  11.  
  12. <xsl:apply-templates select="node()">
  13. <xsl:sort select="name()"/>
  14. </xsl:apply-templates>
  15. </xsl:copy>
  16. </xsl:template>
  17. </xsl:stylesheet>

当应用于此XML文档时:

  1. <t b="x" c="y" a="t">
  2. <c/>
  3. <b/>
  4. <a/>
  5. </t>

产生所需的排序输出

  1. <t a="t" b="x" c="y">
  2. <a></a>
  3. <b></b>
  4. <c></c>
  5. </t>

注意:

>不仅元素而且属性都被排序(后者是依赖于实现的,但可以使用MSXML).>对于差异使用排序的XML是不可靠的,因为将XML文档转换为排序表示不是1:1映射.

猜你在找的XML相关文章