我有一个XMLLike这个
<GLLines DataTypeID="GEN" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<GLLine>
<SYS_COMPANY_CODE>NB</SYS_COMPANY_CODE>
<ACCT_DOC_NUM>12720829</ACCT_DOC_NUM>
<ACCT_DOC_LINE>22114739</ACCT_DOC_LINE>
</GLLine>
<GLLine>
<SYS_COMPANY_CODE>NB</SYS_COMPANY_CODE>
<ACCT_DOC_NUM>12720827</ACCT_DOC_NUM>
<ACCT_DOC_LINE>22114740</ACCT_DOC_LINE>
</GLLine>
<GLLine>
<SYS_COMPANY_CODE>NB</SYS_COMPANY_CODE>
<ACCT_DOC_NUM>12720830</ACCT_DOC_NUM>
<ACCT_DOC_LINE>22114739</ACCT_DOC_LINE>
</GLLine>
<GLLine>
<SYS_COMPANY_CODE>NB</SYS_COMPANY_CODE>
<ACCT_DOC_NUM>12720830</ACCT_DOC_NUM>
<ACCT_DOC_LINE>22114738</ACCT_DOC_LINE>
</GLLine>
</GLLines>
我想按照DOC NUM和acct doc行进行排序。我试过XSLT,但我不知道该怎么做。所以我得错了答案
答案 0 :(得分:2)
以身份转换开头,只是将输入复制到输出不变。
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
现在,您可以为GLLines
元素添加特定模板,以对其子项进行排序
<xsl:template match="GLLines">
<xsl:copy>
<xsl:apply-templates select="GLLine">
<!-- sort first on the ACCT_DOC_NUM -->
<xsl:sort select="ACCT_DOC_NUM" data-type="number" order="ascending" />
<!-- for lines with the same doc num, sort by line -->
<xsl:sort select="ACCT_DOC_LINE" data-type="number" order="ascending" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
答案 1 :(得分:-1)
试试这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()">
<xsl:sort select="ACCT_DOC_NUM"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>