简单的preceding-sibling select returns 意想不到的结果
Simple preceding-sibling select returns unexpected results
我正在尝试学习 XPath/XQuery BaseX。 XPath 查询 return 有一些我无法解释的结果。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<manual>
<chapter>
<section>
<itemizedlist type="Ordered" mark="1">
<listitem>
<para/>
</listitem>
<listitem>
<para/>
</listitem>
</itemizedlist>
<CWD>
<para>1</para>
</CWD>
<para/>
<CWD>
<para>2</para>
</CWD>
<para/>
<itemizedlist>
<listitem>
<para/>
</listitem>
<listitem>
<para/>
</listitem>
</itemizedlist>
<CWD>
<para>3</para>
</CWD>
<para/>
<itemizedlist>
<listitem>
<para/>
</listitem>
<listitem>
<para/>
</listitem>
</itemizedlist>
</section>
</chapter>
</manual>
XPath:
//CWD[preceding-sibling::itemizedlist[1]]
预期结果:CWD 元素紧跟在 itemizedlist 之后,因此:
<CWD>
<para>1</para>
</CWD>
<CWD>
<para>3</para>
</CWD>
实际结果:
<CWD>
<para>1</para>
</CWD>
<CWD>
<para>2</para>
</CWD>
<CWD>
<para>3</para>
</CWD>
为什么查询 return CWD 2,我是如何滥用前面的同级轴的?
使用 //CWD[preceding-sibling::*[1][self::itemizedlist]]
检查前一个兄弟元素是否为 itemizedlist
元素。
我正在尝试学习 XPath/XQuery BaseX。 XPath 查询 return 有一些我无法解释的结果。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<manual>
<chapter>
<section>
<itemizedlist type="Ordered" mark="1">
<listitem>
<para/>
</listitem>
<listitem>
<para/>
</listitem>
</itemizedlist>
<CWD>
<para>1</para>
</CWD>
<para/>
<CWD>
<para>2</para>
</CWD>
<para/>
<itemizedlist>
<listitem>
<para/>
</listitem>
<listitem>
<para/>
</listitem>
</itemizedlist>
<CWD>
<para>3</para>
</CWD>
<para/>
<itemizedlist>
<listitem>
<para/>
</listitem>
<listitem>
<para/>
</listitem>
</itemizedlist>
</section>
</chapter>
</manual>
XPath:
//CWD[preceding-sibling::itemizedlist[1]]
预期结果:CWD 元素紧跟在 itemizedlist 之后,因此:
<CWD>
<para>1</para>
</CWD>
<CWD>
<para>3</para>
</CWD>
实际结果:
<CWD>
<para>1</para>
</CWD>
<CWD>
<para>2</para>
</CWD>
<CWD>
<para>3</para>
</CWD>
为什么查询 return CWD 2,我是如何滥用前面的同级轴的?
使用 //CWD[preceding-sibling::*[1][self::itemizedlist]]
检查前一个兄弟元素是否为 itemizedlist
元素。