我一直试图找出以下XPath表达式在XML中的含义:
paper/publisher/parent::*/author
/bib//address[ancestor::book]
/bib//author/ancestor::*//zip
1)第一个是显示所有以作者为根元素的父母?什么是* /意味着
2)第二个列出了书下的所有祖先根元素?
3)第三个我真的不知道,它列出了所有的zip节点
对于祖先节点的整体运作方式感到困惑,请给出一些指导。
答案 0 :(得分:0)
第一个XPath表达式使用parent::
轴和元素通配符节点测试。从publisher
元素开始,它会跳起来#34;到它的父级paper
元素,然后选择author
子元素。如果存在author
兄弟,它仅选择publisher
元素。它可以更紧凑地编写,并避免使用paper
元素上的谓词过滤器使用此XPath查找节点树:{/ 1>
XPath选择所有paper[publisher]/author
元素作为address
元素的后代,并且也是bib
元素的后代(可能是book
元素的后代。 bib
祖先)。方括号是谓词,它过滤通过表达式测试的节点。在这种情况下,它必须是book
元素的后代才能通过"传递"测试并被选中。
此XPath查找作为元素的后代的任何zip
元素,该元素是author
元素的祖先,是bib
元素的后代。 / p>
下面是XPath轴的可视化,以便了解选择祖先,父,兄弟,后代等意味着什么。
使用XPath可视化工具可能会有所帮助,以便针对某些示例XML评估您的XPath表达式,并查看哪些是和未被选中。