gpt4 book ai didi

xpath - XQuery 在 baseX 中返回错误

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

下面是 XML 文件 -

<Chapters>
<Chapter>
<Name>Introduction</Name>
<Heads>
<Head>
<No>1</No>
<Title>History of Internet</Title>
<Desc>
..............
</Desc>
</Head>
<Head>
<No>2</No>
<Title>History of HTML</Title>
<Desc>
..............
</Desc>
</Head>
</Heads>
</Chapter>
<Chapter>
<Name>Learn HTML</Name>
<Heads>
<Head>
<No>1</No>
<Title>Browsers</Title>
<Desc>
..............
</Desc>
</Head>
<Head>
<No>2</No>
<Title>Browser War</Title>
<Desc>
..............
</Desc>
</Head>
<Head>
<No>3</No>
<Title>HTML, DHTML</Title>
<Desc>
..............
</Desc>
</Head>
</Heads>
</Chapter>
</Chapters>

我想列出 Chapters/Chapter/Name=Introduction 和 Chapters/Chapter/Heads/Head/No=1以下是我在 baseX 中执行的查询 -

/Chapters/Chapter[contains(Name,'Introduction') and contains(Heads/Head/No,'1')]/Heads/Head/Title

这是错误 -

查询:Chapter/Chapter[contains(Name,'Introduction') and contains(Heads/Head/No,'1')]/Heads/Head/Title

错误:[XPTY0004] 需要单个项目,(元素编号 { ... },元素编号 { ... })找到。

根据 baseX 网站,错误 XPTY0004 的描述是 -

如果表达式的类型错误或无法转换为指定的类型,则会引发此错误。它可以静态(在查询编译期间)或动态(在运行时)引发。

我做错了什么??

最佳答案

/Chapters/Chapter
[contains(Name,'Introduction')
and
contains(Heads/Head/No,'1')
]
/Heads/Head/Title

contains() 的第一个参数必须是单个字符串,但对于上述表达式中对 contains() 的第二个引用, Heads/Head/No 参数的计算结果为两个元素。

表达式的更正是:

/Chapters/Chapter
[Name[contains(.,'Introduction')]
and
Heads/Head/No[contains(.,'1')]
]
/Heads/Head/Title

备注:看来您实际上需要测试是否相等——而不是遏制。这可以通过多种方式表达,其中一种是:

/Chapters/Chapter
[Name eq 'Introduction']
and
Heads/Head/No[. eq '1']
]
/Heads/Head/Title

关于xpath - XQuery 在 baseX 中返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10545442/

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