xquery:从父级向上选择多个级别的祖先
我正在尝试选择父节点前面的xquery:从父级向上选择多个级别的祖先,xquery,ancestor,Xquery,Ancestor,我正在尝试选择父节点前面的祖先节点的值。以下是该文档的示例im-trg.xml: <trg> <category> <h2>Accounting and Auditing</h2> <ul> <li>Laws and Regulations <ul> <li><a href="url1">Regulation S-X</
<trg>
<category>
<h2>Accounting and Auditing</h2>
<ul>
<li>Laws and Regulations
<ul>
<li><a href="url1">Regulation S-X</a></li>
</ul>
</li>
<li>Staff Guidance
<ul>
<li>No Action Letters
<ul>
<li><a href="url2">Robert Van Grover, Esq., Seward and Kissel LLP</a> (November 5, 2013)</li>
</ul>
</li>
</ul>
</li>
</ul>
</category>
</trg>
会计和审计
- 法律法规
- 工作人员指导
- 没有行动信
- (2013年11月5日)
我的问题是:
for $x in doc("C:\im-trg.xml")//li/a
return
<item>
<title>{data($x)}</title>
<documentType>{data($x/ancestor::li[2])}</documentType>
<category>{data($x/ancestor::category/h2)}</category>
</item>
用于文档中的$x(“C:\im trg.xml”)//li/a
返回
{data($x)}
{data($x/祖先::li[2])}
{data($x/祖先::category/h2)}
我得到:
<item>
<title>Regulation S-X</title>
<documentType>Laws and RegulationsRegulation S-X</documentType>
<category>Accounting and Auditing</category>
</item>
S-X规则
法律法规S-X法规
会计和审计
例如,我只想选择的父级<item>
<title>Regulation S-X</title>
<documentType>Laws and Regulations</documentType>
<category>Accounting and Auditing</category>
</item>
S-X规则
法律法规
会计和审计
及
Robert Van Grover,Esq.,Seward和Kissel律师事务所
没有行动信
会计和审计
我不认为我可以从根开始,因为父
data($x/ancestor::li[2]/text())
祖先::li[2]
正在选择第二个
祖先,从起始节点向上看,因为祖先::
是一个反向轴。如果您想要最接近的一个,请将其更改为祖先::li[1]
右侧,li[1]与父级相同,li[2]是指向根的下一个li。li[2]文本是我想要捕获以填充xml元素(documentType值),但没有子ul/lis的任何文本。我不明白为什么我得到了li[2]+li[1]。可能返回值是正确的,在本例中,li[1]是li[2]的后代,因此两者都返回。
data($x/ancestor::li[2]/text())