Я пытаюсь запустить этот код:
<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>
Но это не работает (нет элементов, созданных для select1). Если я удаляю / * / * / APP, чтобы напечатать весь документ как метку элемента (изменив метку на ref = ".", Он извергает данные.
Не могу понять, почему он не может пройти через элементы, для которых jax-rx указан как ns ... любые обходные пути (запрос отлично работает в XMLSpy)?
Обновление на основе самого раннего ответа (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>
Я исследовал проблему дальше, основываясь на 1-м ответе ниже, и проблема, похоже, связана не со способностью анализировать элементы с пространствами имен, а, возможно, с тем, как была реализована отправка XForms (или с моим плохим пониманием, в этом случае я запрашиваю исправлено через ответ на этот вопрос). Проблема с отправкой XForms заключается в неправильной замене экземпляра при попытке заменить = «текст», но, вероятно, также влияет на замену = «экземпляр», кажется, замена происходит а) только на экземпляре по умолчанию и б) происходит неправильно по сравнению со спецификацией говорит, что есть (от http://www.w3.org/TR/xforms11/#submit-data-replacement):
Если атрибут замены содержит значение «текст» и ответ на отправку соответствует медиатипу XML (как определено спецификаторами типа контента в [RFC 3023]) или типу текстового мультимедиа (как определено спецификатором типа контента text / *), затем данные ответа кодируются в виде текста и заменяют содержимое целевого узла замены.
Хорошо, это можно доказать, заполнив все содержимое экземпляра в метке элемента в select1, обратите внимание, что приведенный выше идентификатор отправки getData пытается заменить targetref, который даже не существует в идентификаторе экземпляра, на который есть ссылка, но это работает (это не работает, если я правильно поставил targetref для идентификатора экземпляра, на который есть ссылка; другими словами, это работает, только если targetref указывает на действительный узел в экземпляре 'default' (который оказывается первым экземпляром) , а не идентификатор экземпляра, на который ссылаются.
И даже когда он работает, он не заменяет контент в узле targetref (и я не знаю, где именно он (механизм замены представления Orbeon) размещает этот контент, все, что я знаю, это то, что он помещает этот контент где-то в экземпляр по умолчанию, но где - во вновь созданном текстовом узле?)
Вам нужно будет изменить ресурс отправки на URL-адрес, на котором доступен пример файла данных, извините, не могу сделать его более автономным.