我有这个xml文件
<book>
<chapter category="AIRCRAFT">
<title>Flight Controls</title>
<section>Bombardier</title>
<orderedlist>
<listitem><para>list item 1</para></listitem>
<listitem><para>list item 2</para></listitem>
<listitem><para>list item 3</para></listitem>
</orderedlist>
</section>
</chapter>
<chapter category="PILOT">
<title>Flight Operations</title>
<section>
<title>Crew Bases</title>
<orderedlist>
<listitem><para>list item 1</para></listitem>
<listitem><para>list item 2
<note>
<para>Note: Additional information.</para>
</note>
</para>
</listitem>
<listitem><para>list item 3</para></listitem>
</orderedlist>
</section>
</chapter>
<chapter category="MAINTENANCE">
<title>Maintenance</title>
<section>
<title>Maintenance Bases</title>
<orderedlist>
<listitem><para>list item 1</para></listitem>
<listitem><para>list item 2</para></listitem>
<listitem><para>list item 3</para></listitem>
</orderedlist>
</section>
</chapter>
<chapter category="COMPANY">
<title>Company Policy Manual</title>
<section>
<title>Employment Standards and Eligibility</title>
<orderedlist>
<listitem><para>list item 1</para></listitem>
<listitem><para>list item 2</para></listitem>
<listitem><para>list item 3</para></listitem>
</orderedlist>
</section>
</chapter>
</book>
我需要回答这两个问题:
1)如果在para元素内,测试它是否位于章节内,category属性设置为“MAINTENANCE”
2)如果在listitem元素内,测试是否还有其他listitem
我只需要陈述。
答案 0 :(得分:2)
您可以使用ancestor::
轴执行(1):
ancestor::chapter[1]/@category = 'MAINTENANCE'
和(2)使用preceding-sibling::
preceding-sibling::listitem
如果当前上下文节点是listitem
,如果&#34;在listitem元素内,那么这是有效的&#34;可能包括后代节点(para
元素节点或其中的文本节点)然后你需要更像
ancestor-or-self::listitem[1]/preceding-sibling::listitem
(如果当前上下文节点不是listitem
,请在树上直到你点击一个,然后从那里,查看是否有任何前面的listitem
兄弟节点)