假设我有一个像这样的xml文档
XML文件:
<document>
<educationalsection>
educational details
</educationalsection>
<professionalsection>
professional section details
</professionalsection>
</document>
我创建了XSL以将其收敛到我所需的格式但问题是如果我想更改部分的顺序我该怎么做?例如,如果我希望专业部门在不改变xml的情况下获得教育,那怎么可能呢?我需要添加到现有的xsl或xml中,以便当我的Web应用程序发送xml进行转换时,它可以具有Web应用程序指定的不同元素顺序。
答案 0 :(得分:2)
此样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pOrder" select="'professionalsection,educationalsection'"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*">
<xsl:sort select="string-length(
substring-before(
concat(',',$pOrder,','),
concat(',',name(),',')))"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出:
<document>
<professionalsection>
professional section details
</professionalsection>
<educationalsection>
educational details
</educationalsection>
</document>
答案 1 :(得分:1)
xsl:apply-templates
和xsl:for-each
元素可以包含xsl:sort
个子元素,可用于对所选的子节点进行排序。您可以随时使用不同的排序顺序。
您还可以使用mode
上的xsl:template
属性,使用不同的排序顺序选择不同的模板。