XPath获取最大ID

时间:2010-12-06 10:56:42

标签: xml xpath

XML来源:

<schools>
    <school>
        <name>School A</name>
        <student>
            <name>Student A</name>
            <id>12345</id>
        </student>
        <student>
            <name>Student B</name>
            <id>45678</id>
        </student>
    </school>
    <school>
        <name>School C</name>
        <student>
            <name>Student C</name>
            <id>91178</id>
        </student>
        <student>
            <name>Student D</name>
            <id>99999</id>
        </student>
    </school>
</schools>

我仍然是XPath的初学者。我想让学生获得整体最高ID(例如99999),而不是每所学校。我无法更改我的python代码

tree.xpath(" ... ")

我只能修改xpath。我试过"//student[not(../student/id > id)],但这给了我各个学校最高学生。我想要的是整体最高ID。我该如何修改我的xpath?

编辑: 我如何从学校开始写作?如果我想要“最高ID”学生退学的学校名称,我的意思是什么?

3 个答案:

答案 0 :(得分:12)

怎么样:

//student[not(../../school/student/id > id)]

或者更简单:

//student[not(//student/id > id)]

要获得具有最高学生ID的<school/>元素,我相信这会有效:

//school[student[not(//student/id > id)]]

答案 1 :(得分:2)

使用:

/schools/school[student[not(../../school/student/id > id)]]/name

或更短(仅适用于此架构):

/*/school[*/id[not(//id > .)]]/name

答案 2 :(得分:2)

为了完整性......如果您可以使用XPath 2.0,则可以使用max(),如下所示:

/*/school[*/id = max(//id)]/name

它比XPath 1.0中的要容易一些。

但是AFAIK你没有Python中的XPath 2.0。所以请使用@ cdhowie's或@Alejandro的答案。