即使有了这个网站上的所有好技巧,我的 xslt 仍然存在一些问题。我对它很陌生。我有这个源文件:
<?xml version="1.0" encoding="utf-8"?>
<file>
<id>1</id>
<row type="A">
<name>ABC</name>
</row>
<row type="B">
<name>BCA</name>
</row>
<row type="A">
<name>CBA</name>
</row>
</file>
我想添加一个元素并对类型的行进行排序,以获得这个结果
<file>
<id>1</id>
<details>
<row type="A">
<name>ABC</name>
</row>
<row type="A">
<name>CBA</name>
</row>
<row type="B">
<name>BCA</name>
</row>
</details>
</file>
我可以使用这个对行进行排序:
<xsl:template match="file">
<xsl:copy>
<xsl:apply-templates select="@*/row"/>
<xsl:apply-templates>
<xsl:sort select="@type" data-type="text"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
我可以使用它移动行
<xsl:template match="file">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates select="*[not(name(.)='row')]" />
<details>
<xsl:apply-templates select="row" />
</details>
</xsl:copy>
</xsl:template>
但是当我尝试将它们结合起来时,我无法得出正确的答案。希望当我看到事物如何组合时,我能更多地了解 XSLT。由于我正在创建一个新元素<details>
,因此我认为必须在创建新元素之前进行排序<details>
。我必须使用 xslt 1.0。