xml - 如何使用 XPath 显示所有节点子节点、子节点以及更深层的节点

标签 xml xpath xquery exist-db

这是DTD文件

<?xml version="1.0" encoding="utf-8"?>
<!ELEMENT akweny (akwen+)>
<!ELEMENT akwen (nazwa, typ, powierzchnia, akweny?)>
<!ELEMENT nazwa (#PCDATA)>
<!ELEMENT typ (#PCDATA)>
<!ELEMENT powierzchnia (#PCDATA)>

例如 XML(其有效 ofc)

    <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE akweny SYSTEM "akweny.dtd">
<akweny>
    <akwen>
        <nazwa>Atlantycki</nazwa>
        <typ>ocean</typ>
        <powierzchnia>106450</powierzchnia>
        <akweny>
            <akwen>
                <nazwa>Północne</nazwa>
                <typ>morze</typ>
                <powierzchnia>750</powierzchnia>
            </akwen>
            <akwen>
                <nazwa>Batyckie</nazwa>
                <typ>morze</typ>
                <powierzchnia>386</powierzchnia>
                <akweny>
                    <akwen>
                        <nazwa>Botnicka</nazwa>
                        <typ>zatoka</typ>
                        <powierzchnia>117</powierzchnia>
                    </akwen>
                </akweny>
            </akwen>
        </akweny>
    </akwen>
    <akwen>
        <nazwa>Spokojny</nazwa>
        <typ>ocean</typ>
        <powierzchnia>179700</powierzchnia>
    </akwen>
</akweny>

当然这里是简单的 Xpath

    let $nodes := doc('/db/Dane/akweny.xml')//akweny[ancestor::akwen/nazwa="Atlantycki"]
        for $x in $nodes/*
        let $nazwa := $x/nazwa/text()
..
            return 

但是如果我将 nazwa="Atlantycki"更改为 nazwa="Północne"则什么也没有显示。这是正确的吗?

最佳答案

如果我将 nazwa="Atlantycki"更改为 nazwa="Północne",则不会显示任何内容。这是正确的吗?”。是的,这是预期的行为。

基本上,这个 XPath 查询:

//akweny[ancestor::akwen/nazwa="Atlantycki"]

将搜索 <akweny>具有祖先的元素:

<akwen>具有子元素的元素:

<nazwa>Atlantycki</nazwa>

所以如果你改变nazwa="Atlantycki"nazwa="Północne"该查询不会返回任何内容。因为唯一<akwen>满足查询的元素不是任何元素的父元素 <akweny>元素:

<akwen>
    <nazwa>Północne</nazwa>
    <typ>morze</typ>
    <powierzchnia>750</powierzchnia>
</akwen>

换句话说 <akweny> 元素满足查询

关于xml - 如何使用 XPath 显示所有节点子节点、子节点以及更深层的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277748/

相关文章:

xml - Xquery:查找最接近给定数字的值

带有序列的 XQuery != 运算符

XQuery:映射到序列数组

java - 在滑动选项卡布局中停留在同一选项卡中时切换到不同的 fragment

java - Java MAVEN 示例中的 XpathException 表达式使用未绑定(bind)的命名空间前缀

javascript - 如何使用 css 选择器或 xpath 读取 html 标签的 innerHTML 值?

javascript - XML XPath 和 XSLT 的 JSON 等价物是什么?

xml - 查找 xml 节点的完整 xpath

html - 匹配父类的XPath

python - (不是这样)子节点到列表的高级 xsl 转换