私はこのコードを実行しようとしています:
<xforms:select1 xmlns:xbl="http://www.w3.org/ns/xbl"
xmlns:fb="http://orbeon.org/oxf/xml/form-builder"
xmlns:pipeline="java:org.orbeon.oxf.processor.pipeline.PipelineFunctionLibrary"
appearance="xxforms:tree"
bind="retrievalControl-bind"
id="retrievalControl-control-laidOut">
<xforms:label ref="$form-resources/retrievalControl/label"/>
<xforms:help ref="$form-resources/retrievalControl/help"/>
<xforms:itemset nodeset="instance('fr-form-instance')/retrievalSection/retrievalControl/*/*/APP">
<xforms:label ref="NAME"/>
<xforms:value />
</xforms:itemset>
ここで、retrieveControl には次のドキュメントが含まれています。
<?xml version="1.0" encoding="utf-8"?><jax-rx:results xmlns:jax-rx="http://jax-rx.sourceforge.net"><jax-rx:result><APP count="1">
<NAME>ABCD</NAME>
<ID>12</ID>
</APP>
</jax-rx:result></jax-rx:results>
しかし、それは機能しません (select1 に対して作成されたアイテムはありません)。/ */ */APP を削除して、ドキュメント全体をアイテム ラベルとして印刷すると (ラベルを ref="." に変更すると、データが吐き出されます。
ns として指定された jax-rx を持つ要素をトラバースできない理由がわかりません...回避策 (クエリは XMLSpy で正常に動作します)?
以下の最も早い回答 (1 月 27 日) に基づく更新:
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner">
<xhtml:head>
<xforms:model>
<xforms:instance>
<instance>
<weird/>
</instance>
</xforms:instance>
<xforms:instance id="fr-form-instance">
<form>
<retrievalSection>
<retrievalControl>
<jax-rx:results xmlns:jax-rx="http://jax-rx.sourceforge.net">
<jax-rx:result>
<APP count="1">
<NAME>ABCD</NAME>
<ID>12</ID>
</APP>
</jax-rx:result>
</jax-rx:results>
</retrievalControl>
</retrievalSection>
</form>
</xforms:instance>
<xforms:bind id="fr-form-binds" nodeset="instance('fr-form-instance')">
<xforms:bind id="retrievalSection-bind" nodeset="retrievalSection" name="retrievalSection">
<xforms:bind id="retrievalControl-bind" nodeset="retrievalControl" name="retrievalControl"/>
</xforms:bind>
</xforms:bind>
<xforms:submission resource="http://AURLWhereOurExampleDataFileIsAvailale"
method="get"
id="getData"
replace="text"
instance="fr-form-instance"
targetref="/instance/weird"
serialization="none">
<xforms:message ev:event="xforms-submit-error" level="modal">A submission error occurred:<xforms:output value="event('error-type')"/>
</xforms:message>
</xforms:submission>
<xforms:send ev:event="xforms-ready" submission="getData"/>
</xforms:model>
</xhtml:head>
<xhtml:body>
<xforms:select1 xmlns:xbl="http://www.w3.org/ns/xbl"
xmlns:fb="http://orbeon.org/oxf/xml/form-builder"
xmlns:pipeline="java:org.orbeon.oxf.processor.pipeline.PipelineFunctionLibrary"
appearance="xxforms:tree"
bind="retrievalControl-bind"
id="retrievalControl-control-laidOut">
<xforms:itemset nodeset="instance('fr-form-instance')">
<!--<xforms:itemset nodeset="instance('fr-form-instance')/retrievalSection/retrievalControl/*/*/APP">-->
<!--<xforms:itemset nodeset="instance()/*/*/APP">-->
<xforms:label ref="."/>
<xforms:value/>
</xforms:itemset>
</xforms:select1>
</xhtml:body>
以下の最初の回答に基づいて問題をさらに調査しましたが、問題は名前空間を使用して要素を解析する機能ではなく、おそらく XForms Submission の実装方法にあるようです (または、私の理解が不十分な場合は、この質問への回答)。XForms Submission の問題は、replace="text" で試みた場合のインスタンス置換の失敗ですが、おそらく replace="instance" にも影響します。置換は、a) デフォルト インスタンスでのみ発生し、b) 仕様と比較して正しく発生しないようです。これは(http://www.w3.org/TR/xforms11/#submit-data-replacementから):
replace 属性に値 "text" が含まれ、送信応答が XML メディア タイプ ([RFC 3023] のコンテンツ タイプ指定子で定義されている) またはテキスト メディア タイプ (text/* のコンテンツ タイプ指定子で定義されている) に準拠している場合)、その後、応答データはテキストとしてエンコードされ、置換対象ノードのコンテンツを置換します。
わかりました。これは、インスタンスのコンテンツ全体を select1 の item-label に入力することで証明できます。上記の送信 ID getData は、参照されているインスタンス ID にも存在しない targetref を置き換えようとしていますが、機能することに注意してください。 (参照されているインスタンス ID の targetref を正しく配置すると機能しません。つまり、targetref が「デフォルト」インスタンス (たまたま最初のインスタンス) の有効なノードを指している場合にのみ機能します。インスタンス ID が参照されます. そしてそれが機能する場合でも、それは targetref ノードのコンテンツを置き換えません (そして、それ (Orbeon の送信置換メカニズム) がそのコンテンツをどこに配置するかは正確にはわかりません.デフォルトのインスタンスですが、どこで - 新しく作成されたテキスト ノードですか?)
サンプル データ ファイルが利用可能な URL に送信リソースを変更する必要があります。