我試圖運行此代碼:Orbeon的itemset元素的實現不能使用名稱空間遍歷元素?
<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>
其中retrievalControl包含此文件:
<?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>
但它不工作(沒有用於選擇1創建的項目)。如果我刪除/ */*/APP,以便將整個文檔打印爲項目標籤(通過將標籤修改爲ref =「。」,它將數據發送出去。遍歷低於該具有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>
?
我根據下面的第一個響應進一步調查了問題,問題似乎不是機智h用命名空間解析元素的能力,但也許與XForms提交的實現方式有關(或者我的理解很差,在這種情況下,我通過對這個問題的迴應來糾正)。 XForms提交的問題是在嘗試replace =「text」時發生錯誤的實例替換,但可能也會影響replace =「instance」,它會出現替換髮生在a)僅在默認實例上,並且b)與規範(從http://www.w3.org/TR/xforms11/#submit-data-replacement):
如果替換屬性包含值「text」並且提交響應符合XML媒體類型(由[RFC 3023]中的內容類型說明符定義)或文本媒體類型(由text/*的內容類型說明符定義),則響應數據被編碼爲文本並替換替換目標節點的內容。
好的,這可以通過在select1中的項目標籤中填充實例的全部內容來證明,請注意,上面的提交ID getData試圖替換一個甚至不存在於參考的實例ID中的targetref ,但它是有效的(如果我正確地爲所引用的實例ID放置targetref,則它不起作用;換句話說,它只在targetref指向'default'實例中的有效節點時才起作用(恰好是第一個實例),而不是引用的實例ID 即使它工作,它也不會替換targetref節點中的內容(我不知道它在哪裏(Orbeon的提交替換機制)放置該內容,我只知道它將該內容放置在默認實例中的某處,但在哪裏 - 在新創建的文本節點中?)
您需要將提交資源修改爲示例數據文件可用的URL,抱歉無法使其更爲獨立。
如果由於某種原因,您應該能夠編輯您的問題,請將其標記爲供版主注意。 – 2011-02-09 12:32:24
編輯我的問題很好,但編輯問題的標題,不這麼認爲...... – user557060 2011-02-17 11:20:41