想要转换(排序)“特定标签的元素”
我是XSLT的新手。因此需要了解XSLT如何处理特定标签。
当前XML
<root>
<tag>bla bla bla</tag>
<tag>foo foo foo</tag>
<tag>
<particular-tag>
<element attrib="2"/>
<element attrib="3"/>
<element attrib="4"/>
<element attrib="1"/>
</particular-tag>
<particular-tag>
<element attrib="5"/>
<element attrib="3"/>
<element attrib="4"/>
</particular-tag>
</tag>
</root>
所需的XML
<root>
<tag>bla bla bla</tag>
<tag>foo foo foo</tag>
<tag>
<particular-tag>
<element attrib="1"/>
<element attrib="2"/>
<element attrib="3"/>
<element attrib="4"/>
</particular-tag>
<particular-tag>
<element attrib="3"/>
<element attrib="4"/>
<element attrib="5"/>
</particular-tag>
</tag>
</root>
先谢谢了。您可以向我建议在线学习资源,在这里我可以使用XML-XLST。
答案 0 :(得分:-1)
此XSLT将产生预期的结果:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="particular-tag">
<xsl:copy>
<xsl:apply-templates select="*">
<xsl:sort select="@attrib"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:-1)
这应该产生您想要的结果。 希望对您有所帮助。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8"/>
<xsl:template match="particular-tag">
<particular-tag>
<xsl:apply-templates select="element">
<xsl:sort select="@attrib"/>
</xsl:apply-templates>
</particular-tag>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:choose>
<xsl:when test="node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:apply-templates select="@*"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>