使用XSLT按多个属性对特定XML文件进行排序
下面是XML结构。我必须先按类别名称排序,然后按首选项名称排序,然后对值列表本身进行排序。我是xslt新手。如何实现多重订购使用XSLT按多个属性对特定XML文件进行排序,xml,sorting,xslt,Xml,Sorting,Xslt,下面是XML结构。我必须先按类别名称排序,然后按首选项名称排序,然后对值列表本身进行排序。我是xslt新手。如何实现多重订购 正文 正文 B C A. 正文 IP_许可证 ITAR_许可证 排除许可证 如何通过浏览器应用xslt。如何在XML中引用xslt 编辑: 我现在尝试了如下的方法。第一个问题是输出中缺少一些属性,如描述。我想我不太理解应用模板。 第二个问题是这些值没有排序。类别名称和首选项名称已排序 您没有非常清楚地解释您的需求:例如,没有提示您要生成什么输出(是HTML吗?)。如果
正文
正文
B
C
A.
正文
IP_许可证
ITAR_许可证
排除许可证
如何通过浏览器应用xslt。如何在XML中引用xslt
编辑:
我现在尝试了如下的方法。第一个问题是输出中缺少一些属性,如描述。我想我不太理解应用模板。
第二个问题是这些值没有排序。类别名称和首选项名称已排序
您没有非常清楚地解释您的需求:例如,没有提示您要生成什么输出(是HTML吗?)。如果要在类别内对首选项进行排序,可以执行以下操作
<xsl:template match="category">
<xsl:apply-templates select="preference">
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:template>
同样,对于其他要排序的内容,请尝试以下方法:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/preferences">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="category">
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="category">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="preference">
<xsl:sort select="@name"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="context">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="value">
<xsl:sort select="."/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我需要XML输出。我基本上想对两个大的XML文件进行排序,然后比较和合并它们。如何配置它以保留XML标记?我感觉您还没有真正掌握基本知识。当你还处在第一级的时候,问一些这样的问题不是很有成效,因为你可能不理解答案。找一本好书,完成介绍章节中的练习,遇到困难时回到这里。描述≠ 描述