【发布时间】:2021-06-13 11:02:25
【问题描述】:
我正在使用 xpath 1.0,我想选择当前子节点的父节点的兄弟姐妹。
我所在的当前节点是<w:instrText>,我怎样才能获得仅在<!-- SELECT FROM HERE -->和<!-- SELECT TILL HERE -->范围内的父兄弟节点<w:r>?
<w:p>
<w:pPr>
<w:rPr>
<w:lang w:val='en-US'/>
</w:rPr>
</w:pPr>
<w:r>
<w:t>TEXT 1</w:t>
</w:r>
<w:r w:rsidR='002D5530'>
<w:t xml:space='preserve'> </w:t>
</w:r>
<!-- SELECT FROM HERE -->
<w:r w:rsidR='002D5530'>
<w:fldChar w:fldCharType='begin'/>
</w:r>
<w:r w:rsidR='002D5530'>
<w:instrText xml:space='preserve'> SOME DYNAMIC TEXT THAT CAN CHANGE </w:instrText> <!-- My cursor is here! -->
</w:r>
<w:r w:rsidR='002D5530'>
<w:fldChar w:fldCharType='separate'/>
</w:r>
<w:r w:rsidR='00E5783C'>
<w:t>SOME DYNAMIC TEXT</w:t>
</w:r>
<w:r w:rsidR='002D5530'>
<w:fldChar w:fldCharType='end'/>
</w:r>
<!-- SELECT TILL HERE -->
<w:r w:rsidR='002D5530'>
<w:fldChar w:fldCharType='begin'/>
</w:r>
<w:r w:rsidR='002D5530'>
<w:instrText xml:space='preserve'> SOME DYNAMIC TEXT THAT CAN CHANGE </w:instrText>
</w:r>
<w:r w:rsidR='002D5530'>
<w:fldChar w:fldCharType='separate'/>
</w:r>
<w:r w:rsidR='00E5783C'>
<w:t>SOME DYNAMIC TEXT</w:t>
</w:r>
<w:r w:rsidR='002D5530'>
<w:fldChar w:fldCharType='end'/>
</w:r>
</w:p>
这是我尝试过的,但只有 3 个节点...
../preceding-sibling::w:r[w:fldChar/@w:fldCharType='begin'] | ../following-sibling::w:r[w:fldChar/@w:fldCharType='end']
【问题讨论】:
-
可以使用哪些模式来区分您想要的范围?范围是否总是以包含
w:fldChar/@w:fldCharType='begin'的w:r开头?范围是否总是以包含w:fldChar/@w:fldCharType='end'的w:r结尾?w:r/w:*节点是否总是按照此处所示的顺序出现(fldchar、instrText、fldChar、t、fldChar)? -
@DavidDenenberg 1st:是的;第二:是;第三:是的; ;)
标签: xpath