0

パラメータとして 2 つの文字列を受け取る XML ドキュメント内の特定の要素の値に対して、XQuery の matches 関数を使用したいと考えています。要素のテキスト値をパラメーターとして関数に渡す必要があります。しかし、 $title/text() を使用すると、文字列として受け入れられず、エラーが発生します

4

1 に答える 1

1

私は(より多くの情報が不足しているために...)あなたは次のようなことをするつもりだったと思います:

let $doc := <doc>
  <title>Abc</title>
  <title>Cde</title>
  </doc>
for $title in $doc/title
return matches($title, "Cde")

代わりに、あなたは次のようなことをしたと思います。

let $doc := <doc>
  <title>Abc</title>
  <title>Cde</title>
  </doc>
        (: oh no! :)
let $title := $doc/title
return matches($title, "Cde") 

これにより、 2つのアイテム$titleのシーケンスを含む変数が作成されます。しかし 、引数を受け入れるだけで失敗するため、(BaseXなどで)次のように不平を言います。 text()fn:contains()xs:string?xs:string+

[XPTY0004] Single item expected, (<title>...</title>, <title>...</title>) found.
于 2012-10-31T10:17:39.520 に答える