Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XPath以获取最大ID_Xml_Xpath - Fatal编程技术网

Xml XPath以获取最大ID

Xml XPath以获取最大ID,xml,xpath,Xml,Xpath,XML来源: <schools> <school> <name>School A</name> <student> <name>Student A</name> <id>12345</id> </student> <student>

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。我已经尝试了
“//student[not(../student/id>id)]
,但这给了我来自各个学校的id最高的学生。我想要的是总体最高id。我应该如何修改xpath

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

关于:

//student[not(../../school/student/id > id)]
或者,更简单地说:

//student[not(//student/id > id)]
要获得具有最高学生ID的
元素,我相信这将起作用:

//school[student[not(//student/id > id)]]
使用:

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


为了完整起见……如果可以使用XPath 2.0,可以使用
max()
,如下所示:

/*/school[*/id = max(//id)]/name
这比XPath1.0中的要简单一些


然而,如果你没有Python中可用的XPath 2.0,那么就用@cdhowie或@Alejandro的答案吧。

我该如何从学校层面开始写作?我的意思是,如果我想要“最高ID”学生退出的学校名称怎么办?@Kaung:我已经在我的答案中添加了这个表达式。
/schools/school[student[not(../../school/student/id > id)]]/name
/*/school[*/id[not(//id > .)]]/name
/*/school[*/id = max(//id)]/name