gpt4 book ai didi

XPATH 1.0 相当于 SQL 中的 ALL

转载 作者:行者123 更新时间:2023-12-03 16:12:04 26 4
gpt4 key购买 nike

在 SQL 中使用嵌套查询和“ALL”关键字的 XPATH 1.0 等效项是什么?例如,考虑以下代码段。

<parent> a <child gender = "male">b</child>
<child gender = "female>c</child></parent>
<parent> z <child gender = "male"> y </child></parent>

我应该如何检索所有 child 的性别=“男性”的节点。这可以在 SQL 中通过编写一个子查询来返回 child 的性别,然后将其与 ALL 关键字嵌套以检查所有 child 是否都是男性来完成。

Q2
另外,我如何检索只有一个(男性) child 的所有 parent 。还要考虑父节点可能有其他节点。计算 parent 有名字“ child ”的 child 的数量,并检查 child 是否是我正在考虑解决问题的方式。这是最好的方法还是有更好的方法?

注意:在我的作业中,我面临一个需要类似查询的问题。我试图自己找到答案,但找不到。请帮忙

最佳答案

How should i retrieve nodes where ALL children have gender = "male". 

使用 :
/*/parent[child
and
(not(child[not(@gender) or not(@gender='male')]))
]

本次全选parent 的元素:
  • 是 XML 文档顶部元素的子元素,并且
  • 有一个 child child ,和
  • 谁的所有child child 有一个gender属性,和
  • 谁的所有child child gender属性的字符串值为“男性”

  • 这里我们使用了非常通用和有用的 double-negation law

    您的第二个问题 :

    Q2 Also how do I retrieve all parents with one and only one(male) child.



    使用 :
    /*/parent[child[@gender='male']
    and
    not(child[2])
    ]

    这选择 :
  • 任意 parent作为 XML 文档顶部元素的子元素的元素,以及
  • 那有一个 child child 的gender属性的字符串值为 "male",而
  • 那没有第二个 child child 。

  • 基于 XSLT 的验证 :
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/">
    <xsl:copy-of select=
    "/*/parent[child
    and
    (not(child[not(@gender) or not(@gender='male')]))
    ]"/>
    ==========

    <xsl:copy-of select=
    "/*/parent[child[@gender='male']
    and
    not(child[2])
    ]"/>

    </xsl:template>
    </xsl:stylesheet>

    当此转换应用于以下 XML 文档时 (提供的一个,扩展为更具代表性):
    <t>
    <parent> a
    <child gender="male">b</child>
    <child gender="female">c</child>
    <child gender="female">d</child>
    </parent>
    <parent> e
    <child gender="male">f</child>
    <child gender="male">g</child>
    <child gender="female">h</child>
    </parent>
    <parent> z
    <child gender="male">x</child>
    <child gender="male">y</child>
    </parent>
    <parent> t
    <child gender="male">u</child>
    </parent>
    </t>

    计算两个 XPath 表达式,并将这些计算的结果(选定元素)复制到输出 :
    <parent> z
    <child gender="male">x</child>
    <child gender="male">y</child>
    </parent>
    <parent> t
    <child gender="male">u</child>
    </parent>
    ==========

    <parent> t
    <child gender="male">u</child>
    </parent>

    关于XPATH 1.0 相当于 SQL 中的 ALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886888/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com