【发布时间】:2017-03-23 20:47:36
【问题描述】:
我有一个 XML 文件,其中包含许多相同类型的嵌套元素。我希望能够按名称属性值对它们进行排序。这是文件的示例
<configurations>
<configuration xmlns="http://locomotive/bypass/docx" name="managed">
<configuration name="tracking-component">
<configuration name="disks"/>
<configuration name="cycles"/>
</configuration>
<configuration name="network-component" class="singular">
<configuration name="data-component"/>
<configuration name="node"/>
<configuration name="modal"/>
</configuration>
</configuration>
</configurations>
目标是让上述文件按如下方式排序:
<configurations>
<configuration xmlns="http://locomotive/bypass/docx" name="managed">
<configuration name="tracking-component" class="singular">
<configuration name="data-component"/>
<configuration name="modal"/>
<configuration name="node"/>
</configuration>
<configuration name="network-component">
<configuration name="disks"/>
<configuration name="cycles"/>
</configuration>
</configuration>
</configurations>
我试过这个样式表,但它没有输出任何东西:
<xsl:stylesheet version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//*[local-name() = 'Configuration']">
<xsl:copy>
<xsl:apply-templates select="Configuration/@name">
<xsl:sort select="."/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这是我想要制作的:
<configurations>
<configuration xmlns="http://locomotive/bypass/docx" name="managed">
<configuration name="network" class="singular">
<configuration name="data-component"/>
<configuration name="modal"/>
<configuration name="node"/>
</configuration>
<configuration name="tracking-component">
<configuration name="cycles"/>
<configuration name="disks"/>
</configuration>
</configuration>
</configurations>
network-component 属性现在按正确的字母顺序显示在tracking-component 属性之前。 network-component和tracking-component中的配置属性也是按字母顺序排列的。
请帮忙。
【问题讨论】:
-
我改进了 XML 部分的缩进,并通过在处理指令
<xsl:stylesheet version="1.0"的末尾添加>来清理 XSLT 部分。
标签: xslt transformation