7

view.xml に次のフォーム データ インスタンスがあるとします。

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:exforms="http://www.exforms.org/exf/1-0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xhtml:head>
<xforms:instance id="instanceData">
    <form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <fruits>
     <fruit>
        <fruit-name>Mango</fruit-name>
     </fruit>
     <fruit>
        <fruit-name>Apple</fruit-name>
     </fruit>
     <fruit>
        <fruit-name>Banana</fruit-name>
     </fruit>
</fruits>
</form>
</xforms:instance>
</xhtml:head>

上記のインスタンスからすべての果物の名前を選択したいと思います。次の方法を試しましたが、常に最初の果物が選択されます。

instance('instanceData')/fruits/fruit[*]/fruit-name
instance('instanceData')/fruits/fruit/fruit-name
instance('instanceData')/fruits/fruit[position()>0]/fruit-name

XPATHでこれを克服する方法を提供してください

4

3 に答える 3

14

これを試して

             "//fruit-name"

ドキュメント階層内のどこにいても、すべてのフルーツ名を検索する必要があります。

于 2011-03-03T11:10:53.797 に答える
4

質問にあるものと同じように見える<fruit-name>インスタンスinstanceData( ) からすべてを選択する場合は、次のようにします。<xforms:instance id="instanceData">

instance('instanceData')/fruits/fruit/fruit-name

これが機能しない場合、一般的な理由の 1 つは、インスタンスを含むドキュメントにデフォルトの名前空間宣言があることですxmlns="http://www.w3.org/1999/xhtml"。これがある場合は、インスタンスを宣言する場所でそのデフォルトの名前空間宣言を元に戻す必要があります。

<xforms:instance xmlns="" id="instanceData">

(そして、これが問題である場合、私のアドバイスは、デフォルトの名前空間宣言を使用しないことです。これまで。代わりに、どこでもプレフィックスを宣言xmlns:xhtml="http://www.w3.org/1999/xhtml"して使用しています。)xhtml

于 2011-03-04T18:52:18.913 に答える
0

最初: xml のノードの末尾が間違っていることを指摘する方法は、タイプミスである可能性があります。

<service>

2番目:XPATHは非常に有効ですが、解析するときは、単一​​の値ではなく一連のノードのように結果セットを反復処理する必要があります。

例) JDOM :< Element.selectObject 対 selectSingleNodes 対 selectAsArray 種類。

XForms では、結果セットを繰り返し処理して果物のリストを取得する必要があります。

果物の名前だけが必要な場合は、試すことができます

instance('instanceData')/fruits/fruit/fruit-name/text()
于 2011-03-03T14:26:21.533 に答える