1

「consulta.xq」という名前の XQ ファイルに次のクエリがあります。

declare namespace xs = "http://www.w3.org/2001/XMLSchema";
declare variable $word as xs:string+ external;

for $entry in doc("cni_es_cushimariano2008")//e 
where $entry//l[matches(., $word)] 
return <e>{$entry//r//text()} --> {$entry//l//text()}</e>

私のデータベース「cni_es_cushimariano2008」には、次の構造/データがあります。

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
<alphabet>aeiobchjmnñprsty</alphabet>
<section id="main" type="standard">
    <!-- cuidarse (de alguien). aamaantsi. -->
    <e>
        <p>
            <l>cuidarse (de alguien)</l>
            <r>aamaantsi<s n="verbo intransitivo"/>
                <s n="infinitivo"/>
            </r>
        </p>
    </e>
    <!-- celoso. aamaantsi. -->
    <e>
        <p>
            <l>celoso</l>
            <r>aamaantsi<s n="adjetivo"/>
            </r>
        </p>
    </e>
    <!-- traer. aamaantsi. -->
    <e>
        <p>
            <l>traer</l>
            <r>aamaantsi<s n="verbo transitivo"/>
                <s n="infinitivo"/>
            </r>
        </p>
    </e>
</section>
</dictionary>

次のコマンドライン命令を実行しようとしています

$ basex -b$word=celoso consulta.xq

しかし、期待した結果が得られず、次のメッセージが表示されます。

[XPDY0002] No value assigned to $word as xs:string+.

私は Basex と XQuery を使用する専門家ではないので、役に立ちそうな回答に感謝します。前もって感謝します。

4

1 に答える 1

1

文字は$おそらくコマンド シェルによって解釈され、$word宛先に到達しません。エスケープする必要があるかもしれませんが、

$ basex -b\$word=celoso consulta.xq

または省略しても、

$ basex -bword=celoso consulta.xq
于 2013-08-09T08:16:40.480 に答える