问题标签 [xquery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
37753 浏览

sql - XML query() 有效,value() 需要找到单例 xdt:untypedAtomic

我有一个存储为文本的类型化 xml 文档。因此,我使用通用表表达式将数据类型转换为 xml,以便能够使用 XML 方法:

查询有效,将元素返回给我。但我只对价值感兴趣:

这给了我以下错误:

'value()' 需要一个单例(或空序列),找到类型为 'xdt:untypedAtomic *' 的操作数

我用谷歌搜索的内容说 XPATH/XQUERY 需要在括号内和/或需要“[1]” - 两者都没有工作。xml 中只有一个 student-id 元素,但我猜架构允许更多?

此外,我想检索许多元素值 - 有没有办法声明命名空间一次而不是每个方法调用?

0 投票
1 回答
368 浏览

sql-server - 如何构建 XQuery 以根据某些标签和属性的存在来包含/排除行?

我有一个审计/日志系统,它使用原始 XML 来表示应用程序执行的操作。我想通过在应用程序的 SQL Server 数据库的表中使用 XML 列来大大改进这个系统。

表中的每一行都将包含一个日志条目,并且每个条目都应包含一个或多个标签,这些标签用于以语义方式描述操作,允许我以匹配应用程序审计需求的方式进行搜索,例如:

我的意图是通过指定标签和属性的组合来包含或排除行,从而从该表中返回行集(例如“包含带有标签的所有行,invoice但排除带有属性的行userId='7'”,或“包含带有标签的所有行,invoice但排除行带标签delete

我希望通过使用简单过滤器结构的组合以编程方式来表示我希望包含或排除行的标记和属性的组合。

我使用的结构如下所示:

我的目标是接受其中的一组并生成一个查询,该查询返回与任何单个包含过滤器匹配的任何行,而不匹配任何单个排除过滤器。

我应该并且可以将这个布尔逻辑编码到生成的 XPath 本身中,还是我正在查看在输出的查询中有多个 SELECT 语句?我是 XQuery 的新手,感谢您提供任何帮助。谢谢!

0 投票
2 回答
3029 浏览

sql - 没有命名空间 SQL2008 的 XQuery 插入

这是我的根元素。我编写了一个存储过程来将元素插入其中。总结一下存储过程,这里是SQL

现在,当 MSSQL 插入时,还会插入一个空的命名空间,所以结果是这样的

现在我尝试使用两者

但我最终得到了无处不在的前缀和每个元素的命名空间声明。

在缺少逻辑来处理 MSSQL 放入的前缀的代码库中会出现问题。最后,我只想在我的 xml 根目录中插入一个新元素并将命名空间留空(使用根默认值?)。我对此很陌生,但据我所知,如果我的根元素中有一个命名空间,那么所有子节点不应该都有我的根的默认命名空间吗?

0 投票
3 回答
33710 浏览

sql-server-2005 - 在 SQL Server 中使用 value() 从 xml 列获取多条记录

此 SQL 仅返回第一个 Activity 元素。我如何选择它们?如果我删除查询中的 [1],我会收到“value() 需要单例”的错误。

0 投票
1 回答
353 浏览

sql - UDF 在文本和 base64 xml 属性之间自动切换

我的应用程序将数据序列化为各种 XML 属性,并根据数据以文本或 base64 格式发送。在后一种情况下,属性名称将为“attribute-base64”。因此,在 SQL 服务器端,可以使用以下约定来解码 XML:

我正在尝试编写一个 UDF,它将接受 XML 和属性名称作为输入并输出一个字符串。如何生成 XQuery?我试过这样做,但它不起作用:

调用时:

返回结果不是值,而是 'root[1]/@v'... 显然,SQL 服务器将 sql:variable("@xquery") 理解为 XML 值,而不是 XQuery。任何想法我需要做什么?

0 投票
2 回答
146 浏览

xpath - C#在规则中指定什么查询语言来拉出两个书节点

嗨,目前,我有一个基于规则的系统,其中传入的 xml 消息与规则匹配,如果规则命中,则处理数据包。为了获得匹配,我使用 xpath 来选择 xml 中的单个值,并在规则中将它们指定为组合的 xpath:regexp 表达式,类似这样。

/书店/书[1]/标题:(.+)

例如,上面将匹配“Everyday Italian”

但是我正在尝试找到一个查询或者一个新的查询语言表达式,它允许我为上述经典 msdn docs book.xml 选择所有书籍节点,这样如果我在规则中指定查询表达式,我可以使用解析器将其提升,并直接针对 xml 文件使用它来拉出书籍节点。

我不知道 xpath 是否可以做到。我在看 XQuery,但它似乎罗嗦。XSLT 可能可以做到,但它很冗长。有任何想法吗。

他们是一种指定表达式的简单方法,以便它会提升所有书籍节点,或者说 1 和 2,或 1 和 3。

谢谢。鲍勃。

0 投票
4 回答
2871 浏览

java - 使用 Commons Digester 解析成 HashMap

我需要将 xml 解析为 HashMap,其中的“键”是两个元素属性的串联。xml 看起来像:

在地图的第一个条目中,我想将 'p1.c1' 作为地图键,而将 'value1' 作为地图值。如何做到这一点?

0 投票
2 回答
4695 浏览

xml - 在 XQuery 中输出 CDATA

我将如何使用 XQuery 进行转换

?

另外,我将如何转变

?

如果重要的话,我正在使用 XSLPalette.app。

0 投票
1 回答
2381 浏览

tsql - 使用通配符通过 Xquery 检索第一个值

在 SQL Server 2008 中未分配架构的 XmlData 列中,如何在特定节点级别提取第一项?例如,我有:

我认为这不起作用,因为如果在第二级有多个具有不同名称的节点,则可以返回每个节点中的第一个(并且value()需要选择一个单例。因为我不知道任何节点的名称是什么节点将是,有没有办法总是选择第一个节点在第二级?

0 投票
3 回答
35940 浏览

sql - varchar字段中的SQL Server xml字符串解析

我在用于存储 xml 数据的表中有一个 varchar 列。是的,我知道我应该使用 xml 数据类型,但我认为这是在 xml 数据类型可用之前设置的,所以我现在必须使用 varchar。:)

存储的数据类似于以下内容:

我需要解析文件名以获取两个下划线之间的数字,在这种情况下为“456”。文件名的第一部分“不应该”改变长度,但中间的数字会。如果第一部分的长度确实发生了变化,我需要一个可行的解决方案(你知道它会改变,因为“不应该改变”似乎总是意味着它会改变)。

对于我现在所拥有的,我正在使用 XQuery 提取文件名,因为我认为这可能比直接字符串操作更好。我将字符串转换为 xml 来执行此操作,但我不是 XQuery 专家,所以我当然会遇到问题。我找到了一个 XQuery 函数(substring-before),但无法让它工作(我什至不确定该函数是否可以与 SQL Server 一起工作)。可能有一个 XQuery 函数可以轻松执行此操作,但如果有我不知道。

因此,我使用类似于以下内容的查询从表中获取文件名:

由此我假设我可以将它转换回一个字符串,然后执行一些 instring 或 charindex 函数来确定下划线的位置,以便我可以将所有这些封装在一个子字符串函数中以挑选出部分我需要。无需过多讨论,我很确定我最终可以通过这种方式完成它,但我知道必须有一种更简单的方法。这种方式会在 SQL 语句中产生一个巨大的不可读字段,即使我将它移到一个函数中,试图弄清楚发生了什么仍然会令人困惑。

我敢肯定有比这更容易的,因为它似乎是简单的字符串操作。也许有人可以指出我正确的方向。谢谢