代码之家  ›  专栏  ›  技术社区  ›  Daniel C. Sobral

xpath 3.0递归查询

  •  0
  • Daniel C. Sobral  · 技术社区  · 6 年前

    <elems>
        <elem id="n">
            <property name="xxx" value="yyy"/>
            ...
        </elem>
    </elems>
    

    inherits @id <elem> .所以,基本上,我想查询 <

    <elems>
        <elem id="1">
            <property name="a" value="alpha"/>
        </elem>
        <elem id="2">
            <property name="inherits" value="1"/>
            <property name="b" value="bravo"/>
        </elem>
        <elem id="3">
            <property name="inherits" value="2"/>
            <property name="c" value="charlie"/>
        </elem>
    </elems>
    

    因此查询具有属性的元素 c 会回来的 3 它的反面会回来 1 2 .对具有属性的元素的查询 b 会回来的 它的反面会回来 1个 .最后,对具有属性的元素的调用 a 会回来的 1个 ,请

    1 回复  |  直到 6 年前
        1
  •  2
  •   Mads Hansen    6 年前

    XPath3.0允许您定义函数,但是因为它们是匿名的,所以它们不能(很容易)调用自己。

    What is a Y-combinator? .但我从来没有真正的头脑围绕着它们,也不会在现实生活中尝试这样做,因为有一个更简单的解决方案:在XQuery或XSLT中使用命名函数,这使得递归非常简单。事实上,在XSLT3.0中,您甚至不需要递归,可以使用 xsl:iterate

    推荐文章