只接受xslt中的前一个兄弟姐妹

vig*_*esh 5 xslt xpath

我正在使用XSLT 1.0.目前我在<w:t>模板中.我想检查前面的兄弟姐妹w:r(id=3)是否有<w:fldChar w:fldCharType="end"/>.

我想立即前面的兄弟,而不是w:rid=2id=1.

<t xmlns:w="http://example.com">
    <w:r id="1">
        <w:fldChar w:fldCharType="start"/>
    </w:r>
    <w:r id="2">
        <w:fldChar w:fldCharType="separate"/>
    </w:r>
    <w:bookmarkStart w:id="0" w:name="tocStartRef_1"/>
    <w:r id="3">
        <w:fldChar w:fldCharType="end"/>
    </w:r>
    <w:bookmarkEnd w:id="0"/>
    <w:r id="4">
        <w:rPr>
            <w:rStyle w:val="Span"/>
            <w:rFonts w:ascii="arial" w:eastAsia="arial" 
                      w:hAnsi="arial" w:cs="arial"/>
            <w:b/>
            <w:sz w:val="32"/>
        </w:rPr>
        <w:t>Fonts</w:t>
    </w:r>
</t>
Run Code Online (Sandbox Code Playgroud)

Jef*_*tin 12

preceding-sibling像这样使用xpath 轴:

preceding-sibling::w:r[1]/w:fldChar/@w:fldCharType = 'end'
Run Code Online (Sandbox Code Playgroud)

它将选择最近的([1])preceding-sibling命名w:r,然后下降到任何名为的子元素w:fldChar,然后命名任何属性w:fldCharType,然后如果存在其文本的任何此类节点'end',则返回true.

  • 此外,值得一提的是,"祖先","祖先 - 或者自我","在前"和"在前 - 兄弟"轴都是反向轴,因此位置谓词看起来令人惊讶. (8认同)