Xpath: 第一个 letter/string 紧跟在元素之后
Xpath: First letter/string immediately following element
我有以下XML种可能性:
<metamark/><anything>. <anything2>bla</anything2>.</anything>
<metamark/>.<anything> <anything2>bla</anything2>.</anything>
<metamark/><anything><anything2>bla</anything2>.</anything>
我想得到第一个“.”所以我尝试了:
starts-with(metamark[not(descendant::text())]/following-sibling::text()[1],'.')
上面第 2 行工作正常,但我错过了第 1 行。所以我做到了:
starts-with(metamark[not(descendant::text())]/following-sibling::text()[1],'.') or starts-with(metamark[not(descendant::text())]/following-sibling::*[1]/text()[1],'.')
现在适用于上面的所有行。但是第 3 行不应该是真的,因为我只想要“。”要么紧跟在空 <metamark/>
之后,要么紧跟在紧随其后的兄弟的第一个字符串之后,但如果在“.”
之前该兄弟的任何后代元素中有文本,则不会
简而言之:第一个文本(最接近元素后的实际结束“>”。我将如何实现?
怎么样:"The first text node that follows any <metamark>
as long as it starts with '.'
"
//metamark[not(descendant::text())]/following::text()[1][starts-with(., '.')]
在
<r>
<metamark/><anything>. yes1<anything2>bla</anything2>. no1</anything>
<metamark/>. yes2<anything> <anything2>bla</anything2>. no2</anything>
<metamark/><anything><anything2>bla</anything2>. no3</anything>
</r>
此检索
'. yes1'
'. yes2'
following::
轴忽略嵌套,这对这个任务很有用。
我有以下XML种可能性:
<metamark/><anything>. <anything2>bla</anything2>.</anything>
<metamark/>.<anything> <anything2>bla</anything2>.</anything>
<metamark/><anything><anything2>bla</anything2>.</anything>
我想得到第一个“.”所以我尝试了:
starts-with(metamark[not(descendant::text())]/following-sibling::text()[1],'.')
上面第 2 行工作正常,但我错过了第 1 行。所以我做到了:
starts-with(metamark[not(descendant::text())]/following-sibling::text()[1],'.') or starts-with(metamark[not(descendant::text())]/following-sibling::*[1]/text()[1],'.')
现在适用于上面的所有行。但是第 3 行不应该是真的,因为我只想要“。”要么紧跟在空 <metamark/>
之后,要么紧跟在紧随其后的兄弟的第一个字符串之后,但如果在“.”
简而言之:第一个文本(最接近元素后的实际结束“>”。我将如何实现?
怎么样:"The first text node that follows any <metamark>
as long as it starts with '.'
"
//metamark[not(descendant::text())]/following::text()[1][starts-with(., '.')]
在
<r>
<metamark/><anything>. yes1<anything2>bla</anything2>. no1</anything>
<metamark/>. yes2<anything> <anything2>bla</anything2>. no2</anything>
<metamark/><anything><anything2>bla</anything2>. no3</anything>
</r>
此检索
'. yes1'
'. yes2'
following::
轴忽略嵌套,这对这个任务很有用。