XSL按多个属性排序?

时间:2015-05-27 05:16:39

标签: xml sorting xslt xpath

假设我有一些像这样的数据,其中一些节点有一个名为" idNumber"有些人有一个名为" serialNumber":

<data>
    <product>
        <name> Chair </name>
        <idNumber> 12 </idNumber>
    </product>

    <product>
        <name> Table </name>
        <idNumber> 16 </idNumber>
    </product>

    <product>
        <name> Lamp </name>
        <serialNumber> 13 </serialNumber>
    </product>

    <product>
        <name> Fan </name>
        <idNumber> 10 </idNumber>
    </product>

    <product>
        <name> Desk </name>
        <serialNumber> 15 </serialNumber>
    </product>
</data>

我需要按照它们的编号对它们进行排序,无论是idNumber还是serialNumber;结果将是:

粉丝 - 10

主席 - 12

Lamp -13

Desk -15

表 - 16

我尝试使用:

<xsl:sort select="idNumber"/>
<xsl:sort select="serialNumber"/>

然而,这并不是我想要的,因为它尝试按第一种方式排序,即使它没有该元素。我需要一种方法来排序,考虑到两者并选择正确的方法并正确地命令它们。这甚至可能吗?

2 个答案:

答案 0 :(得分:0)

使用此:

<xsl:sort select="idNumber | serialNumber"/>

答案 1 :(得分:0)

您可以使用以下xsl:sort指令:

<xsl:sort select="concat(normalize-space(idNumber),normalize-space(serialNumber))" data-type="number"/>