1

XML ドキュメントを読み取り、ドキュメントを更新するための入力フォームを作成する Xform を作成しています。ただし、明らかに名前空間の問題が原因で、私の Xpath 式は解決されません。インスタンス ファイルに名前空間がない場合、私のフォームは単純なインスタンスで正常に動作します。ただし、名前空間のサポートが必要です。

インスタンス ファイルの名前空間は「ai:inventory」です。

インスタンスデータを参照しています

XPath 式が適切な要素を見つけることができるように、名前空間のプレフィックス "ai" をどこで宣言する必要がありますか? /ai:在庫/商品 ?

HTML の開始タグにプレフィックスを作成しようとしましたが、役に立ちませんでした。

ありがとう、

4

3 に答える 3

1

XFormsインスタンスはそれ自体がXMLドキュメントであるため、フォーム内のすべてのインスタンスに適切な名前空間宣言を含める必要があります。

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:ai="http://example.com/">
  <head>
    <xf:model>
      <xf:instance>
        <ai:inventory xmlns="" xmlns:ai="http://example.com/">
          <product>foo</product>
        </ai:inventory>
      </xf:instance>
    </xf:model>
  </head>
  <body>
    <xf:output ref="/ai:inventory/product"/>
  </body>
</html>

インスタンスが(外部リソースではなく)インラインの場合にXPathを正しく評価するプロセッサがいくつかありますが、その動作に依存することはお勧めしません。

于 2010-04-06T13:33:20.910 に答える
0

通常、名前空間宣言は現在の要素とすべての降順要素に適用されます。モデルとビューの両方で同じ名前空間を使用する必要がある場合は、htmlタグが適しています。このようなもの:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:ai="yournamespace">
  <head>
    <xf:model>
      <xf:instance xmlns="">
        <ai:inventory>
          <product>Hello</product>
        </ai:inventory>
      </xf:instance>
    </xf:model>
  </head>
  <body>
    <xf:output ref="/ai:inventory/product"/>
  </body>
</html>

インスタンスで名前空間のない要素を使用し、デフォルトの名前空間としてXHTMLも使用する場合は、例のように、xmlns=""を使用してデフォルトの名前空間を再宣言する必要があることに注意してください。

于 2010-04-06T08:00:13.210 に答える
0

両方の回答が修正されました。しかし、私の問題は、xsltforms xsl スタイルシートを使用して xform をレンダリングすることに関連していることがわかりました。orbeonに切り替えたとき、すべてがうまくいきました。

于 2010-04-06T20:04:55.343 に答える