Xslt通过自定义字符串值

时间:2015-05-12 11:50:38

标签: xml sorting xslt xslt-1.0

<?xml version="1.0" encoding="UTF-8" ?>
<DriverRights>
<STAFF>
<EmpDetails>
<StaffID>123456789</StaffID>
<Type>Lorry ABC</Type>
</EmpDetails>
<EmpDetails>
<StaffID>123456789</StaffID>
<Type>Jeep</Type>
</EmpDetails>
</STAFF>
</DriverRights>
<DriverRights>
<STAFF>
<EmpDetails>
<StaffID>7899878887</StaffID>
<Type>Lorry ABC</Type>
</EmpDetails>
<EmpDetails>
<StaffID>7899878887</StaffID>
<Type>SUV IX</Type>
</EmpDetails>
<EmpDetails>
<StaffID>7899878887</StaffID>
<Type>Jeep</Type>
</EmpDetails>
</STAFF>
</DriverRights>
<DriverRights>
<STAFF>
<EmpDetails>
<StaffID>5432101235</StaffID>
<Category>Jeep</Category>
</EmpDetails>
</STAFF>
</DriverRights>

我正试图按照我想要的方式排序......我想按照Lorry ABC,SUV IX和Jeep排序......我正在使用

<xsl:sort data-type="number" order="ascending"
     select="((STAFF/EmpDetails/Type='Lorry ABC') * 1)+ 
     ((STAFF/EmpDetails/Type=='SUV IX') * 2)+ 
     ((STAFF/EmpDetails/Type=='Jeep') * 3)"/>

但我意识到,似乎没有正确排序staffID有多种类型的地方。所以我试图看看我是否可以先对儿童笔记进行排序然后使用上面的<xsl:sort>

但我是xslt的新手,并试图将其弄清楚 - 任何建议都会受到赞赏......

1 个答案:

答案 0 :(得分:0)

如果我正确猜测(!),你想做:

<xsl:apply-templates select="DriverRights">
    <xsl:sort data-type="number" order="descending"
              select="4*(STAFF/EmpDetails/Type='Lorry ABC') 
              + 2*(STAFF/EmpDetails/Type='SUV IX') 
              + (STAFF/EmpDetails/Type='Jeep')"/>
</xsl:apply-templates>