5

文字列をノードに変換したいと思います。ノードを取るように定義されたメソッドがありますが、値は文字列です (ハードコードされています)。その文字列をノードに変換するにはどうすればよいですか?

したがって、XQuery メソッドが与えられた場合:

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

foo メソッドに渡したい文字列があります。メソッドが文字列を受け入れるように、文字列をノードに変換するにはどうすればよいですか。

4

5 に答える 5

10

MarkLogic ソリューション:

文字列をノードに変換する最良の方法は、次を使用することです。

xdmp:unquote($string).

逆に、ノードを文字列に変換する場合は、次のようにします。

xdmp:quote($node).

言語に依存しないソリューション:

ノードから文字列は次のとおりです。

fn:string($node)
于 2008-09-23T14:15:11.177 に答える
9

XML マークアップを含む文字列について話している場合は、標準化されたソリューション (XPath/XQuery Functions 3.0 から) もあります。

于 2012-08-02T19:36:40.223 に答える
9

文字列からテキストノードを作成する場合は、テキストノード コンストラクターを使用します。

text { "your string goes here" }

または、文字列コンテンツで要素を作成したい場合は、次のような要素を作成できます。

element (some-element) { "your string goes here" }
于 2008-11-09T21:47:17.230 に答える
3

この質問に対する答えは、使用されているエンジンによって異なります。たとえば、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)
于 2008-09-23T14:43:50.937 に答える