XQuery是一种用于查询和操作XML数据的函数式语言。它是XPath的超集,它添加了诸如创建新节点和更强大的FLWOR表达式等功能。虽然它与XSLT共享其数据模型,但XQuery针对查询而非转换数据进行了优化,因此它具有受SQL启发的不同设计。
https://stackoverflow.com/q/79268606/3387716的后续问题 转换此 HTML 后: ... 后续问题https://stackoverflow.com/q/79268606/3387716 转换此 HTML 后: <body> <section id="s1"> <h2 class="move me to s1">First</h2> <p>Hello</p> <h2 class="do not touch me">Second</h2> <p>World</p> </section> <section id="s2"> <h2>Third</h2> <p>Foo</p> <div> <h2 class="move me to s2">Fourth</h2> </div> <p>Bar</p> </section> </body> 与 xidel 的 x:replace-nodes: xidel --output-node-format=html --xquery ' x:replace-nodes(//body, ./section[.//h2[@class]], function($e) { element { $e/name() } { $e/@*[not(name()="class")], attribute class { ($e//h2[@class])[1]/@class }, x:replace-nodes($e/node(), ($e//h2[@class])[1]/@class, ()) } }) ' 我在结束body标签之前得到了一个多余的空行: <body> <section id="s1" class="move me to s1"> <h2>First</h2> <p>Hello</p> <h2 class="do not touch me">Second</h2> <p>World</p> </section> <section id="s2" class="move me to s2"> <h2>Third</h2> <p>Foo</p> <div> <h2>Fourth</h2> </div> <p>Bar</p> </section> </body> 有人知道这是为什么吗?怎么摆脱它? 这是解析 HTML 片段时xidel的固有问题: 一个简单的 `xidel --output-node-format=html --xpath '//body' 输出多余的空行... 我能想到的唯一解决方法是 normalize-space 结束 body 标签之前的文本节点。
当我将结果包装在新元素中时,为什么 BaseX XQuery 结果格式会发生变化?
我正在 BaseX 编辑器中逐步构建 XQuery(我的第一次 XQuery 尝试)。在最后一步,结果格式发生了变化,我不明白为什么。我和X真的很难相处……
我有一个XML文件: 莫比迪克 赫尔曼梅尔维尔 日出之夜 杰夫·曾特纳 我有一个 XML 文件: <xml> <title>Moby-Dick</title> <author>Herman Melville</author> <title>Sunrise Nights</title> <author>Jeff Zentner</author> <author>Brittany Cavallaro</author> <price>14.52€</price> <title>My Salty Mary</title> <author>Cynthia Hand</author> <author>Brodi Ashton</author> <author>Jodi Meadows</author> </xml> 我想将其转变为: <xml> <book> <title>Moby-Dick</title> <author>Herman Melville</author> </book> <book> <title>Sunrise Nights</title> <author>Jeff Zentner</author> <author>Brittany Cavallaro</author> <price>14.52€</price> </book> <book> <title>My Salty Mary</title> <author>Cynthia Hand</author> <author>Brodi Ashton</author> <author>Jodi Meadows</author> </book> </xml> 逻辑是每次遇到 book 时创建一个新的 title 并将所有后续节点放入该书中。 这是我迄今为止尝试过的: let $books := ( doc("books.xml")/xml/* => fold-left((array{}, 0), function($acc, $node) { let $arr := $acc[1], $idx := $acc[2] return if (name($node) = "title") then ($arr => array:append($node), $idx+1) else ($arr => array:put($idx, ($arr => array:get($idx), $node)), $idx) }) )[1] return <xml>{for $book in $books return <book>{$book}</book>}</xml> 但是我明白了 <xml> <book> <title>Moby-Dick</title> <author>Herman Melville</author> <title>Sunrise Nights</title> <author>Jeff Zentner</author> <author>Brittany Cavallaro</author> <price>14.52€</price> <title>My Salty Mary</title> <author>Cynthia Hand</author> <author>Brodi Ashton</author> <author>Jodi Meadows</author> </book> </xml> 旁白:group by似乎对解决当前问题没有用,所以我尝试“手动”对书籍进行分组,但我不知道这是否是正确的方法;欢迎任何提示。 如果您可以选择使用 XSLT 2.0+,这非常简单: <xsl:template match="booke" group-starting-with="title"> <book> <xsl:copy-of select="current-group()"/> </book> </xsl:template> 在 XQuery 3.1 中,可以使用 FLWOR window 子句来完成。 for tumbling window $w in books/* start at $s when $s[self::title] return <book>{$w}</book> 未测试。
使用 XQuery/XPath 计算多个 XML 文件中的不同值
我有几个 XML 文件,它们都具有相同的结构。我需要找到每个元素中出现的所有不同值并对每个不同的出现次数进行计数。 这样做的最佳方法是什么...
在 Informatica 中,我在应用程序集成过程中构建了 Xquery 代码行: fn:sum(对于 $j 从 0 到 fn:days-from-duration(xs:date($temp.t_laatsteLeverDatum) - fn:current-date()) 返回...
如何在 xml 中查找具有特定值的属性而不将特定元素放入 MarkLogic Xquery?
价值 萨德夫 价值 萨德夫 <book> <abc x="1">value</abc> <xyz>sadf</xyz> </book> <book> <ijk x="1">value</ijk> <xyz>sadf</xyz> </book> <book> <plm x="1">value</plm> <xyz>sadf</xyz> </book> 我有像上面这样的xml,我想要属性x=1(元素名称不固定)的所有xml。我可以使用 XPath 轻松完成此操作,但我需要在巨大的数据集上运行此查询,那么我们是否有任何 cts 查询来使其更快?或者更好的方式来查询这个? 不幸的是,查询属性的内置 cts:* 函数必须指定元素 QName。如果您不知道哪些元素可能具有该属性,那么创建字段索引或TDE可能会更容易。 一种选择是使用通用 XPath 创建一个 path 字段,例如 //*/@x 或 /book/*/@x 如果您启用字段值搜索的选项,那么您可以使用如下查询: cts:field-value-query("x", "1")
这是我的计算表达式函数和calculateMinus函数 将函数 local:calculateExpression($expression) 声明为 xs:decimal { 让$结果:= if ($表达式/uli:times) th...
下面是我的 Xquery 代码。关注计算表达式 导入模式命名空间 uli = "http://www.cs.man.ac.uk/~sattler/" at "examSchema.xsd"; 将变量 $examFile 声明为 xs:str...
在 Docker 容器中安装期间,eXist-DB 索引设置失败
我创建了一个基于 eXist-DB 的应用程序。该应用程序应部署在 Docker 容器内。我的应用程序依赖于一些繁重的预计算,这应该将结果存储在数据库中-
我使用以下命令使用 xidel -e 提取两个值。 '//输入[@name="qid"]/@value[1]' “//跨度[@id='trueFinalResultCount']” 但我想将这两个结果放入 TSV 格式。 结果1<...
Marklogic 应用程序服务器 8001-连接被拒绝错误
我已经在Windows操作系统上安装了MarkLogic服务器。我能够访问查询控制台和仪表板应用程序。但是,我无法通过端口 8001 访问管理服务器。我收到...
如何更新 MarkLogic 中非常大的文档的 XML 集合?
我正在 MarkLogic 中处理一个大型 XML 文件——大约 50MB,长 700,000 行。该任务涉及使用 XQuery 模块添加和删除特定集合。以前,我使用 xdmp:invoke-
如何使用 ml-gradle 在 MarkLogic 中安装/扩展自定义剩余扩展?
我想要 ml-gradle 通过 ml-gradle 安装/扩展自定义休息端点。 您能否提供一些示例或详细信息,以及如何为此配置 ml-gradle? 我能够...
当我运行当前的 XHTML 页面时,出现以下错误: 检索数据/db/apps/HTML_Student/SVG_Bezier_Curve.xq 当我运行当前的 XHTML 页面时,出现以下错误: Retrieved_Data <?xml version="1.0" ?><exception><path>/db/apps/HTML_Student/SVG_Bezier_Curve.xq</path><message>exerr:ERROR org.exist.xquery.XPathException: err:XPST0003 expecting "return", found ';' [at line 4, column 79]</message></exception> 这是我的 XHTML 代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>SVG_Bezier_Curve</title> <link rel="stylesheet" type="text/css" href="http://localhost:8080/exist/rest/db/apps/HTML_Student/SVG_Bezier_Curve.css"/> <script language="javascript" src="http://localhost:8080/exist/rest/db/apps/HTML_Student/SVG_Bezier_Curve_2.js"> </script> </head> <body> <input type="text" id="My_Text" value="I was here."/> <input type="button" onclick="Setup2()"/> <input type="button" onclick="Setup()"/> <p id="My_Paragraph"/> <svg xmlns="http://www.w3.org/2000/svg" id="My_SVG" height="500" width="500"> <path id="Bezier_Curve_1"/> <path id="Bezier_Curve_2" d="M 300, 200 A 50, 50 0,0,1 400,200" stroke="red" stroke-width="3" fill="none"> </path> </svg> </body> </html> 这是我的Javascript代码: function Setup() { var Bezier_Curve_Identification; var Attribute_Name; var Attribute_Name_2; var Coordinate; var My_Properties; document.getElementById("My_Text").value = "My Setup."; Attribute_Name = "d"; Attribute_Name_2 = "style"; My_Properties = "stroke: blue; stroke-width: 3; fill: none;"; Coordinate = "M 300 200 A 20 20 0 0 0 400 200"; Bezier_Curve_Identification = document.getElementById('Bezier_Curve_1'); Bezier_Curve_Identification.setAttribute(Attribute_Name, Coordinate); Bezier_Curve_Identification.setAttribute(Attribute_Name_2, My_Properties); } function Setup2() { var SVG_Data; var Retrieved_Data; SVG_Data = new XMLHttpRequest(); SVG_Data.open("GET","http://localhost:8080/exist/rest/db/apps/HTML_Student/SVG_Bezier_Curve.xq", true); SVG_Data.onreadystatechange = function () { if (SVG_Data.readyState == 4) { Retrieved_Data = SVG_Data.responseText; document.getElementById("My_Text").value = "Retrieved_Data " + Retrieved_Data;} }; SVG_Data.send();} 这是我的 XML: <SVG_Data_Collection xmlns="http://www.TedTheSpeedlearner.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TedTheSpeedlearner.com SVG_Bezier_Curve_Data_Schema.xsd"> <Bezier_Curve_1> <Main_Attribute>d</Main_Attribute> <Initial_Attribute>M</Initial_Attribute> <Coordinate_Start>300 200</Coordinate_Start> <Arc_Attribute>A</Arc_Attribute> <Bezier_Arc>20 20 0 0 0</Bezier_Arc> <Terminal_Coordinate>400 200</Terminal_Coordinate> <Style_Attribute>style</Style_Attribute> <Style_Color>stroke: red;</Style_Color> <Style_Width>stroke-width: 3;</Style_Width> <Style_Fill>fill: none;</Style_Fill> </Bezier_Curve_1> <Bezier_Curve_2> <Main_Attribute>d</Main_Attribute> <Initial_Attribute>M</Initial_Attribute> <Coordinate_Start>300 200</Coordinate_Start> <Arc_Attribute>A</Arc_Attribute> <Bezier_Arc>20 20 0 0 0</Bezier_Arc> <Terminal_Coordinate>400 200</Terminal_Coordinate> <Style_Attribute>style</Style_Attribute> <Style_Color>stroke: blue;</Style_Color> <Style_Width>stroke-width: 3;</Style_Width> <Style_Fill>fill: none;</Style_Fill> </Bezier_Curve_2> </SVG_Data_Collection> xquery version "3.0"; declare default element namespace "http://www.TedTheSpeedlearner.com" declare option exist:serialize "method=text media-type=text/plain" let $header-addition := response:set-header("Access-Control-Allow-Origin","*") let $doc := doc("SVG_Bezier_Curve_Data.xml")/SVG_Data_Collection/Bezier_Curve_1 let $First_Data_Name := $doc/Main_Attribute let $Data := concat($First_Data_Name, "*") let $Second_Data_Name := $doc/Initial_Attribute let $Data := concat($Data, $Second_Data_Name, "-") let $Third_Data_Name := $doc/Coordinate_Start; let $Data := concat($Data, $Third_Data_Name, "-") let $Fourth_Data_Name := $doc/Arc_Attribute let $Data := concat($Data, $Fourth_Data_Name, "-") let $Fifth_Data_Name := $doc/Bezier_Arc let $Data := concat($Data, $Fifth_Data_Name, "-") let $Sixth_Data_Name := $doc/Terminal_Coordinate let $Data := concat($Data, $Sixth_Data_Name) return $Data 我很想添加我的 XQuery 代码,但这个框不允许我添加。 我有我的代码的照片,但您不让我在不复制和粘贴代码的情况下发布照片。 当此框不允许我向您提供代码时,我如何向您提供代码? 您需要用分号终止声明,即 try declare default element namespace "http://www.TedTheSpeedlearner.com"; declare option exist:serialize "method=text media-type=text/plain";
从MarkLogic上的XQuery,是否可以使用缩进序列化JSON节点? 可以使用 xdmp:quote() 通过 XML 来完成此操作,但对 JSON 节点使用相同的代码会返回一个长而扁平的
https://qt4cg.org/specifications/xquery-40/xquery-40.html#id-deep-lookup 介绍映射和数组的深度查找运算符。虽然 BaseX 和 Saxon XQJ 处理器实现了这个 Xquery 4.0 (...
我不知道为什么很难找到一个非商业包,它基本上可以在 XML 输入上运行 XQuery,并带有字符串或文件。在那里找不到太多非商业的东西。 我试过了