我想只获取XML文件中只包含一个使用XPath的属性的元素。
这是XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<livre titre="Mon livre">
<auteurs>
<auteur nom="nom1" prenom="prenom1" />
<auteur nom="nom2" prenom="prenom2" />
</auteurs>
<sections>
<section titre="Section1">
<chapitre titre="Chapitre1">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
<chapitre titre="Chapitre2">
<paragraphe>Premier paragraphe</paragraphe>
</chapitre>
</section>
<section titre="section2">
<chapitre titre="Chapitre1">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
</section>
</sections>
</livre>
这就是我试图做的事情:
/descendant-or-self::node()[count(self::node()/attribute::node()) = 1]
但它不起作用。
但是我写的XPath查询选择了包含多个属性的所有元素,我只想选择只包含一个属性的元素。
XPath查询的结果应该是这样的:
Description: titre="Mon livre"
XPath location: /livre[1]
Start location: 2:1
End location: 20:9
Description: titre="Section1"
XPath location: /livre[1]/sections[1]/section[1]
Start location: 8:5
End location: 16:19
Description: titre="Chapitre1"
XPath location: /livre[1]/sections[1]/section[1]/chapitre[1]
Start location: 9:13
End location: 12:24
Description: titre="Chapitre2"
XPath location: /livre[1]/sections[1]/section[1]/chapitre[2]
Start location: 13:13
End location: 15:24
Description: titre="section2"
XPath location: /livre[1]/sections[1]/section[2]
Start location: 17:9
End location: 18:19
我该怎么做?
答案 0 :(得分:1)
这应该有效:
//*[count(@*)=1]
p.s。,我得到6个项目,对于该数据,chapitre
下还有另一个section2
。