我正在尝试使用XPath&读取'student'节点中'class'节点的'division'属性。 XSLT。
<class division="myDiv">
<student rollno="700">
<firstname>Renjith</firstname>
<lastname>R</lastname>
<nickname>Renju</nickname>
<marks>70</marks>
</student>
<student rollno="493">
<firstname>fname1</firstname>
<lastname>lname1</lastname>
<nickname>nick1</nickname>
<marks>95</marks>
</student>
</class>
我的条件是,如果名字是'Renjith',请阅读'class'节点的'division'属性,我相信它是学生节点的父节点。
我使用以下xpath来检查名字是否为'Renjith'
//student[firstname/text() = 'Renjith']
我在学生节点,其名字是'Renjith'。现在我需要从'class'节点获取division属性的值,该节点是学生节点的父节点。 我可以使用以下xpath表达式来实现结果。
1)parent::class/@division
or
2)ancestor::class/@division
我在这里有两个问题
1. b / w表达式有什么区别1&amp; 2?
2.有没有什么方法可以获得'division'属性而不指定父节点名'class'?
我知道'../@division
'可以做到这一点。但我的目的是研究xpath轴。
答案 0 :(得分:1)
..
是parent::node()
的快捷方式,因此parent::node()/@division
是使用父轴的详细方式,如果您坚持这样做的话。至于ancestor::class
,如果您有嵌套的<class><class><student>..</student></class></class>
元素(在语义上可能对您的数据没有意义但在XML中通常是可行的)那么ancestor::class selects both ancestor
类elements while
父元素::类selects only the parent
class`。