在 XQuery 中如何将字符串转换为节点?

发布于 2024-07-06 03:13:06 字数 263 浏览 12 评论 0原文

我想将字符串转换为节点。 我有一个定义为获取节点的方法,但我拥有的值是一个字符串(它是硬编码的)。 如何将该字符串转换为节点?

因此,给定一个 XQuery 方法:

define function foo($bar as node()*) as node() {
  (: unimportant details :)
}

我有一个要传递给 foo 方法的字符串。 如何将字符串转换为节点以便该方法接受该字符串。

I would like to convert a string into a node. I have a method that is defined to take a node, but the value I have is a string (it is hard coded). How do I turn that string into a node?

So, given an XQuery method:

define function foo($bar as node()*) as node() {
  (: unimportant details :)
}

I have a string that I want to pass to the foo method. How do I convert the string to a node so that the method will accept the string.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

单身情人 2024-07-13 03:13:06

MarkLogic 解决方案:

将字符串转换为节点的最佳方法是使用:

xdmp:unquote($string).

相反,如果您想将节点转换为字符串,您可以使用:

xdmp:quote($node).

与语言无关的解决方案:

节点到字符串是:

fn:string($node)

MarkLogic solutions:

The best way to convert a string into a node is to use:

xdmp:unquote($string).

Conversely if you want to convert a node into a string you would use:

xdmp:quote($node).

Language agnostic solutions:

Node to string is:

fn:string($node)
春风十里 2024-07-13 03:13:06

如果您想从字符串中创建 text 节点,只需使用 text 节点构造函数:

text { "your string goes here" }

或者如果您更喜欢使用以下命令创建 元素字符串内容,您可以构造一个 元素 ,如下所示:

element (some-element) { "your string goes here" }

If you want to create a text node out of the string, just use a text node constructor:

text { "your string goes here" }

or if you prefer to create an element with the string content, you can construct an element something like this:

element (some-element) { "your string goes here" }
浅唱ヾ落雨殇 2024-07-13 03:13:06

如果您谈论的是包含 XML 标记的字符串,也有标准化的解决方案(来自 XPath/XQuery Functions 3.0):

If you are talking about strings that contain XML markup, there are standardized solutions (from XPath/XQuery Functions 3.0) as well:

冰葑 2024-07-13 03:13:06

这个问题的答案取决于所使用的引擎。 例如,Saxon 的用户使用 saxon:parse 方法。

事实上,XQuery 规范没有内置此功能。

一般来说,只有当您需要从 CDATA 部分提取一些嵌入的 XML 时,您才真正需要使用它。 否则,您可以从文件系统读取文件,或直接内联声明XML

大多数情况下,您会使用声明性形式,而不是硬编码字符串,例如(使用Stylus studio)

declare namespace my = "http://tempuri.org";

declare function my:foo($bar as node()*) as node() {
    <unimportant></unimportant>
} ;

let $bar := <node><child></child></node>

return my:foo(bar)

The answer to this question depends on what engine is being used. For instance, users of Saxon, use the saxon:parse method.

The fact is the XQuery spec doesn't have a built in for this.

Generally speaking you would only really need to use this if you needed to pull some embedded XML from a CDATA section. Otherwise you can read files in from the filesystem, or declare XML directly inline.

For the most you would use the declarative form, instead of a hardcoded string e.g. (using Stylus studio)

declare namespace my = "http://tempuri.org";

declare function my:foo($bar as node()*) as node() {
    <unimportant></unimportant>
} ;

let $bar := <node><child></child></node>

return my:foo(bar)
起风了 2024-07-13 03:13:06

您还可以使用 fn:parse-xml(xs:string) 将当前有效的 XML 字符串转换为文档。

you also can use fn:parse-xml(xs:string) to convert your current valid XML string into a document.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文