XQuery是一种用于查询和操作XML数据的函数式语言。它是XPath的超集,它添加了诸如创建新节点和更强大的FLWOR表达式等功能。虽然它与XSLT共享其数据模型,但XQuery针对查询而非转换数据进行了优化,因此它具有受SQL启发的不同设计。
XML 到 JSON 转换 Xquery Marklogic 期间返回的不同元素文本值
我们正在使用下面的示例 xml,并要求将其作为 JSON 响应返回。 所以我使用 json:transform-to-json() 函数来执行 XML 到 JSON 的转换。 在下面的示例中,...
我有以下 XQuery 命令来检索 qconsole 上的文档 声明命名空间 xsi = "http://www.w3.org/2001/XMLSchema-instance"; (/record[@xsi:noNamespaceSchemaLocation eq 'h...
使用 XQuery 命名空间循环 XML 数据并将其插入 MS SQL Server 表时出错
说明: 我目前正在执行一项任务,涉及解析 XML 文档并将其数据插入 SQL Server 表中。 XML文档包含发票信息,我需要循环
Xquery 架构如下所示:https://www.ncbi.nlm.nih.gov/data_specs/schema_alt/NCBI_BlastOutput2.xsd(Blast+ 命令行上的 Outfmt = 16)。 目标是: 包括搜索词(目前只有一个,
我在 SQL 表的一列中有 XML,我运行的每个查询都返回 null。我试过将 XML 复制到记事本并将其另存为 XML 文件,然后通过 PowerShell 访问它。这是...
我有大量数据,因为我也有 .svg 文件格式,它有 xlink 命名空间,但很少有 svg 文档没有 xlink 命名空间,加载时必须跳过这些文档
在 XQuery 中,当我尝试执行以下函数时, fn:number('10.12') 结果是 10.12 但如果我尝试将其转换为十进制, xs:decimal(fn:number('10.12')) 结果是 10.
我是sparql的新手。因此尝试着手编写代码。 我尝试编写以下代码但没有得到结果,当我尝试传递“sub”参数时我没有得到任何结果。
根据定义,xml 值是一个字符串,还是曾经做过任何解释(忽略 xsd 类型或诸如 xs:element 之类的东西)?例如: 嗨 ...
为了学习 XQuery,我尝试在 BaseX 中运行以下 XQuery 命令 让 $x := doc("test.xq")//h2/following-sibling 返回 $x::h2 我认为它应该等同于 让 $x := doc("t...
我正在尝试编写一个条件,如果元素包含预定义列表中的所有属性但我似乎无法正确获取 XPath。 示例数据: 让 $元素 := 我正在尝试编写一个条件,如果元素包含预定义列表中的所有属性但我似乎无法正确获取 XPath。 示例数据: let $element := <country type="" class="" ref="" ana=""/> return if($element/@*[local-name() = ('type', 'class', 'ref', 'ana')]) then 'All attributes are present' else 'You can add attributes' 如果存在任何属性,第一个条件返回 true,我不确定正确的 XPath 是什么以确保它们都存在。 谢谢, 薇诺娜
遵循这个答案: 猫 xquery.txt 声明命名空间 w = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; 复制 $input := doc("/tmp/file.xml") 修改删除节点$
示例 XML: 1234 金 斯科特 价值1 示例 XML: <outerTag> <innerElement> <Id>1234</Id> <fName>Kim</fName> <lName>Scott</lName> <customData1>Value1</customData1> <customData2>Value2</customData2> <position>North<position> <title/> </innerElement> <innerElement> <Id>5678</Id> <fName>Brian</fName> <lName>Davis</lName> <customData3>value3</customData3> <customData4>value4</customData4> <customData5>value5</customData5> <position>South<position> <title/> </innerElement> </outerTag> 预期产出: <outerTag> <innerElement> <Id>1234</Id> <fName>Kim</fName> <lName>Scott</lName> <customData1>Value1</customData1> <customData2>Value2</customData2> <position>North<position><title/></position> </position> </innerElement> </outerTag> 我知道我可以只使用好的选择Xpath来做这个把戏,但我试图弄清楚如何使用delete和xidel来正确XQuery。 我从this试过: xidel --xml -e ' let $element := //innerElement[not(Id["1234"])] declare function local:process-xml ($element) { $element update delete node } ' file.xml 我得到: An unhandled exception occurred at $00000000006174CA: ERangeError: Range check error $00000000006174CA $000000000061782C $0000000000629536 $000000000062E638 $000000000055C12B 或 $ xidel --xquery ' let $element := //innerElement[./not(Id["1234"])] declare function local:process-xml ($element) { $element update delete node } ' file.xml 我得到同样的错误。 或者使用 纯 XQuery: $ xidel --xml --xquery ' let $input := /outerTag modify delete node $input/innerElement[Id ne "1234"] return $input ' file.xml 我得到错误: Error: err:XPST0003: Missing whitespace or symbol in line 2 column 5 modify delete node $input/innerElement[Id ne "1234"] ^^^^ error occurs around here 令人沮丧xidel无法处理这种纯粹的XQuery解决方案。 这里是一个纯 XQuery 解决方案,在 BaseX 10.5 中测试 XQuery declare context item := document { <outerTag> <innerElement> <Id>1234</Id> <fName>Kim</fName> <lName>Scott</lName> <customData1>Value1</customData1> <customData2>Value2</customData2> <position>North</position> <title/> </innerElement> <innerElement> <Id>5678</Id> <fName>Brian</fName> <lName>Davis</lName> <customData3>value3</customData3> <customData4>value4</customData4> <customData5>value5</customData5> <position>South</position> <title/> </innerElement> </outerTag> }; copy $input := . modify delete node $input/outerTag/innerElement[Id ne "1234"] return $input 输出 <outerTag> <innerElement> <Id>1234</Id> <fName>Kim</fName> <lName>Scott</lName> <customData1>Value1</customData1> <customData2>Value2</customData2> <position>North</position> <title/> </innerElement> </outerTag> XQuery #2 以文件名作为参数 declare base-uri 'e:\Temp\'; declare option db:stripws "true"; copy $input := doc("input.xml") modify delete node $input/outerTag/innerElement[Id ne "1234"] return $input Linux 版本: copy $input := doc("/tmp/file.xml") modify delete node $input/outerTag/innerElement[Id ne "1234"] return $input Xidel 不支持“XQuery 更新”。参见邮件列表讨论。 附带说明:虽然可以使用 Xidel 编辑 XML,但它的目标不是成为一个完全成熟的编辑器。 Benito 创建 Xidel 的初衷是作为提取器。 你可以使用transform(),但是wiki已经很久没有更新了,目前这个功能已经被弃用了: $ xidel -s file.xml -e ' transform( /, function($x){ if (name($x)="innerElement" and $x/Id="5678") then () else $x } ) ' --output-node-format=xml --output-node-indent pxp:transform(..) is deprecated, use x:transform-nodes(..) <outerTag> <innerElement> <Id>1234</Id> <fName>Kim</fName> <lName>Scott</lName> <customData1>Value1</customData1> <customData2>Value2</customData2> <position>North</position> <title/> </innerElement> </outerTag> 相反,我会推荐x:replace-nodes(),它更容易使用: $ xidel -s file.xml -e 'x:replace-nodes(//innerElement[Id="5678"],())' \ --output-node-format=xml --output-node-indent 来自xidel doc的尝试示例: $ xidel --xml -e ' let $delete := //innerElement[not(Id="1234")] return transform(/, function($e){ $e[not($delete[$e is .])]}) ' file.xml 看起来有点复杂 编辑:此语法现已弃用。 如果这可以简化或使用普通的纯XQuery作为这个答案.将接受另一个答案
示例 XML: 1234 金 斯科特 价值1 示例 XML: <outerTag> <innerElement> <Id>1234</Id> <fName>Kim</fName> <lName>Scott</lName> <customData1>Value1</customData1> <customData2>Value2</customData2> <position>North<position> <title/> </innerElement> <innerElement> <Id>5678</Id> <fName>Brian</fName> <lName>Davis</lName> <customData3>value3</customData3> <customData4>value4</customData4> <customData5>value5</customData5> <position>South<position> <title/> </innerElement> </outerTag> 预期产出: <outerTag> <innerElement> <Id>1234</Id> <fName>Kim</fName> <lName>Scott</lName> <customData1>Value1</customData1> <customData2>Value2</customData2> <position>North<position><title/></position> </position> </innerElement> </outerTag> 我从this试过: xidel --xml -e ' let $element := //innerElement[./Id[text()="1234"]]//innerElement declare function local:process-xml ($element) { $element update delete node } ' file.xml 我得到: An unhandled exception occurred at $00000000006174CA: ERangeError: Range check error $00000000006174CA $000000000061782C $0000000000629536 $000000000062E638 $000000000055C12B 或 $ xidel --xquery ' let $element := //innerElement[./Id[text()="1234"]]//innerElement declare function local:process-xml ($element) { $element update delete node } ' file.xml 我得到同样的错误。 来自xidel doc的尝试示例: xidel --xml -e ' let $delete := //innerElement[./Id[text()="1234"]]//innerElement return transform(/, function($e){ $e[not($delete[$e is .])]}) ' file.xml 但它给了我所有的 XML 树,没有删除节点。 与xmlstarlet是that简单如: $ xmlstarlet format --recover file 2>/dev/null | xmlstarlet ed -d '//innerElement[./Id[text()="1234"]]//innerElement' 找到方法: xidel --xml -e ' let $delete := (//innerElement)[2] return transform(/, function($e){ if ($delete[$e is .]) then () else $e }) ' -e '//innerElement[text()="1234"]' file.xml 如果可以简化,将接受另一个答案
使用 SaxonJS 2.5(浏览器)的 XQuery 3.1 评估
我想要的 我需要创建一个 Javascript 函数,以获取针对 XML 评估 XQuery 3.1 表达式的结果。 功能: 必须接收两个参数:XML 文档 (
我得到一个无效的 XQuery 语法,语法没有通过使用 java 的静态验证错误
我收到此错误:无效的 XQuery 语法,语法未通过静态验证。 eac4.gestor.GestorException 在 eac4.gestors.GestorOrdinador.inserir(GestorOrdinador.java:57) 在 eac4.gestors.
XQuery 在 oXygen 中运行时能否构建并保存输出文档?
我在 oXygen 中运行 XQuery 3.1 以从输入 XML 创建输出 HTML。 在 eXist-DB 中运行 XQuery 时,可以将其中的 html 框架和 FLWOR 语句声明为变量,
在 SQL Server 中列出所有带有命名空间前缀的 xml 节点
我想列出 SQL Server 中所有带有命名空间前缀的 xml 节点。 以下查询的结果不包含节点的命名空间前缀。是否可以将 cbc:ID 列为 "c...
我需要将下面的 XML 转换为 CSV,这样对于空 xml 标记,CSV 文件中不能有任何逗号。 例如,考虑下面的 XML 1