0

ノードの以下の要素のみを名前で表示しようとしています。

Xpathでは、ここに私の声明があります://akweny[parent::akwen/nazwa="Atlantycki"]

そして、これが私のXMLファイルです

<?xml version="1.0" encoding="utf-8"?>
    <akweny>
        <akwen>
            <nazwa>Atlantycki</nazwa>
            <typ>ocean</typ>
            <powierzchnia>106450</powierzchnia>
            <akweny>
                <akwen>
                    <nazwa>Północne</nazwa>
                    <typ>morze</typ>
                    <powierzchnia>750</powierzchnia>
                </akwen>
                <akwen>
                    <nazwa>Batyckie</nazwa>
                    <typ>morze</typ>
                    <powierzchnia>386</powierzchnia>
                    <akweny>
                        <akwen>
                            <nazwa>Botnicka</nazwa>
                            <typ>zatoka</typ>
                            <powierzchnia>117</powierzchnia>
                        </akwen>
                    </akweny>
                </akwen>
            </akweny>
        </akwen>
        <akwen>
            <nazwa>Spokojny</nazwa>
            <typ>ocean</typ>
            <powierzchnia>179700</powierzchnia>
        </akwen>
    </akweny>

そして、ここに私のDTDがあります

<?xml version="1.0" encoding="utf-8"?>
<!ELEMENT akweny (akwen+)>
<!ELEMENT akwen (nazwa, typ, powierzchnia, akweny?)>
<!ELEMENT nazwa (#PCDATA)>
<!ELEMENT typ (#PCDATA)>
<!ELEMENT powierzchnia (#PCDATA)>

そして、これが私のXqueryステートメントです

declare function app:PokazRodzica($node as node(), $model as map(*), $name as xs
:string?) {

<table border="1" width="100%">
<th>Podrzędne</th><th>Nazwa</th><th>Typ</th><th>Powierzchnia</th><th>Edycja</th>
{
    (:DOBRE ZAPYTANIE
    for $x in doc('/db/Dane/akweny.xml/')//akweny[parent::akwen/nazwa="Atlantycki"]
    parent::akwen/nazwa="Atlantycki"]/text()
    :)

    for $x in doc('/db/Dane/akweny.xml/')//akweny[parent::akwen/nazwa="Atlantycki"]
    let $nazwa := $x/nazwa
    let $typ := $x/typ
    let $powierzchnia := $x/powierzchnia
        return 
           <tr>
            <th><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> {count($nazwa/text())} KLIK</th>
            <th bgcolor="#F46978">{$nazwa}</th>
            <th>{$typ}</th>
            <th>{$powierzchnia}</th>
            <th>Edytuj</th>
            </tr>
}
</table>
};

私のxmlでXpathをすばやくテストするには、次のツールを使用できます:http://www.online-toolz.com/tools/xpath-editor.php

大きな問題は、Exist-DB データが正しく表示されないことです。

私の結果は考えられません...しかし、それはノードの親でなければなりません...

何が間違っているのかわかりません。私を助けてください。

4

1 に答える 1

2

eXist-db のテンプレート システムを使い始める前に、eXide で XPath をテストする必要があります。

でドキュメントを参照します/db/Dane/akweny.xml/。これによりエラーは発生しませんが、最後の「/」はドキュメント名の一部ではないため、削除する必要があります。

次に、XPath を確認する必要があります//akweny[parent::akwen/nazwa="Atlantycki"]。「Atlantycki」の値を持つ子を持つakwenyakwenを持つものを見つけようとしていますか? nazwa1つしかありません。

<akweny>
    <akwen>
        <nazwa>Północne</nazwa>
        <typ>morze</typ>
        <powierzchnia>750</powierzchnia>
    </akwen>
    <akwen>
        <nazwa>Batyckie</nazwa>
        <typ>morze</typ>
        <powierzchnia>386</powierzchnia>
        <akweny>
            <akwen>
                <nazwa>Botnicka</nazwa>
                <typ>zatoka</typ>
                <powierzchnia>117</powierzchnia>
            </akwen>
        </akweny>
    </akwen>
</akweny>

それとも何か他のものを取得しようとしていますか?

入力してみる

doc('/db/Dane/akweny.xml')//akweny[parent::akwen/child::nazwa eq "Atlantycki"]

eXide で XPath を調整し、一度に 1 ステップずつ追加して、必要な結果が得られるようにします。

おそらく、あなたはこのようなものを探しています:

<table border="1" width="100%">
<th>Podrzędne</th><th>Nazwa</th><th>Typ</th><th>Powierzchnia</th><th>Edycja</th>
{
let $nodes := doc('/db/Dane/akweny.xml/')//akweny[parent::akwen/nazwa="Atlantycki"]
for $x in $nodes/*
let $nazwa := $x/nazwa/text()
let $typ := $x/typ/text()
let $powierzchnia := $x/powierzchnia/text()
    return 
       <tr>
        <th><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> {count($nazwa/text())} KLIK</th>
        <th bgcolor="#F46978">{$nazwa}</th>
        <th>{$typ}</th>
        <th>{$powierzchnia}</th>
        <th>Edytuj</th>
        </tr>
}</table>

これが終わったら、 app:PokazRodzica() 関数をどこかで、たとえば index.html で呼び出す必要があることを思い出してください。関数自体は何も表示しません (上記の wst のように)。

タイトルのスペルを「XQuery で XPath を使用した eXist-db での表示でエラー」に修正してください。

于 2014-03-05T07:40:03.410 に答える