使用 xslt 对 xsd 格式的 XML 进行排序

使用 xslt 对 xsd 格式的 XML 进行排序

按升序对 xsd 格式的 XML 进行排序

由于 XML 中的 xsd 格式,我的 xslt 解决方案不起作用,如果是 xsd 应该使用什么?

这是我的 XML 输入:

4 1 7 我尝试过:

<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform"> <xsl:template match="/*"> xsl:copy xsl:apply-templates <xsl:sort select="number"/> </xsl:apply-templates> </xsl:copy> </xsl:template>

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet> 我期望的输出是:

1 4 7

答案1

我认为你想要一些接近这个的东西(省略命名空间和其他声明):

<xsl:template match="/">
  <xsl:element name="test">
    <xsl:for-each select="//number">
      <xsl:sort select="text(.)" data-type="number"/>
      <xsl:copy-of select="." />
    </xsl:for-each>
  </xsl:element>
</xsl:template>

相关内容