我试图通过域名(不值)排序每个元素的属性,以规范化的一些XML数据的代表性。 这样做是为了保持文本的差异最小当属性被添加或移除,并防止不同的编辑器从引入等价变体。 这些XML文件是源代码控制之下,开发商是想diff的变化,而不诉诸专门的XML工具。
我很惊讶地发现没有一个XSL例如如何这一点。 基本上我只想身份与排序的属性变换。 我想出了以下与好像是我所有测试用例的工作:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="*|/|text()|comment()|processing-instruction()">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:sort select="name(.)"/>
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
作为一个总XSL的n00b我将不胜感激风格或效率的任何意见。 我想,因为它似乎至少不是一个常见的例子可能是有益的张贴在这里。