Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xquery:从父级向上选择多个级别的祖先_Xquery_Ancestor - Fatal编程技术网

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</

我正在尝试选择父节点前面的
  • 祖先节点的值。以下是该文档的示例im-trg.xml:

    <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())