xml - 使用 eXist-db 使用 xpath 和 xquery 解析 xml 文件

标签 xml xpath exist-db

我需要获取 <TITLE>使用 XQuery 来自以下 XML 的元素(我使用的是 eXist-db)。

<?xml-stylesheet href="shakes.xsl" type="text/xsl"?>
<!--!DOCTYPE PLAY PUBLIC "-//PLAY//EN" "play.dtd"-->
<ClinicalDocument xmlns="urn:hl7-org:v3">
    <PLAY>
        <TITLE>The Tragedy of Hamlet, Prince of Denmark</TITLE>
    </PLAY>
</ClinicalDocument >

当我尝试使用下面的 XQuery 时,我没有得到预期的输出。

xquery version "3.0";

doc("/db/apps/demo/data/hamlet.xml")/ClinicalDocument/PLAY/TITLE

我认为该问题与 xmlns 有关。 <ClinicalDocument> 中存在的属性标签:

<ClinicalDocument xmlns="urn:hl7-org:v3">

如何修改 XQuery 以检索所需的 XML 元素?

最佳答案

声明映射到 XML 默认命名空间的前缀,并使用该前缀引用命名空间中的元素,如下所示:

declare namespace d = "urn:hl7-org:v3";
doc("/db/apps/demo/data/hamlet.xml")/d:ClinicalDocument/d:PLAY/d:TITLE

在这里测试:http://www.xpathtester.com/xquery/a88f300bbeacdbd846d7aec887d48a0b

关于xml - 使用 eXist-db 使用 xpath 和 xquery 解析 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35262822/

相关文章:

xml - 用于查找标签名称包含 'Name' 的元素的 XPath 表达式

Python - 无法使用 selenium chromewebdriver 下载文件 - 'Failed - Download error'

xquery - 我如何编写一个 XQuery 来测试正在使用的 XQuery 版本?

java - 在与之交互之前如何等待另一个应用程序(eXist-db)启动(使用java)?

c# - 在 Razor 应用程序中使用 C# 在 linq to xml Expression 中动态设置字段

xml - 您能否将 Maven pom.xml 文件重构为可重用的 XML 片段?

c# - 如何删除 <anyType xsi :type ="my type"> from xml output

Java:从 wsdl 获取示例请求 XML

java - Selenium CSS 选择器语法用于检查类和文本

variable-assignment - XSLTforms 或 betterForm 是否支持变量 (var)?