XBL에서 자체 구성 요소를 만들고있어 그 안에 제출 자료를 사용해야합니다. 내가 자원 및 결과 XPath를 제공과 더불어, REST 제출을 호출 할제출시 동적으로 XPath 설정
<xbl:binding element="fr|myControl" id="fr-myControl" xxbl:mode="lhha binding value">
<metadata xmlns="....">
....
<templates>
<instance label=""/>
<view>
<fr:myControl id="" appearance="minimal" xpath="" xmlns="" resource="" >
<xf:label ref=""/>
<xf:hint ref=""/>
<xf:help ref=""/>
<xf:alert ref=""/>
</fr:myControl>
</view>
</templates>
<control-details>
<xf:input ref="@resource">
....
</xf:input>
<xf:input ref="@xpath">
....
</xf:input>
</control-details>
</metadata>
....
: 그리고 나는 사용자가 (자동 완성 제어와 같은) 폼 빌더에서 제공 할 수있는 제출 된 두 개의 매개 변수 (자원, XPath를) 가지고 폼 빌더 사용자 (@resource
및 @xpath
) 기준 :
<xf:model>
<xf:instance id="result"><value/></xf:instance>
<xf:instance id="sub"><value/></xf:instance>
<xf:instance id="resource"><value/></xf:instance>
<xf:instance id="xpath"><value/></xf:instance>
....
<xf:submission id="my-submission" instance="sub"
mediatype="application/xml"
method="get"
resource="{instance('resource')}"
replace="instance"
serialization="none"/>
<xf:action id="populate-data-binding">
<xf:action context="instance('sub')"
ev:event="xforms-submit-done"
ev:observer="my-submission">
<xf:action>
<!-- there is a problem-->
<xf:var as="xs:string" name="control-value" value="instance('xpath')"/>
<xf:setvalue ref="instance('result')" value="$control-value"/>
</xf:action>
</xf:action>
</xf:action>
</xf:model>
....
<xf:var name="resource-avt" xbl:attr="xbl:text=resource" xxbl:scope="outer"/>
<xf:var name="resource" xbl:attr="xbl:text=resource" >
<xf:action ev:event="xforms-enabled xforms-value-changed">
<xf:setvalue ref="instance('resource')" value="$resource"/>
</xf:action>
</xf:var>
<xf:var name="xpath-avt" xbl:attr="xbl:text=xpath" xxbl:scope="outer"/>
<xf:var name="xpath" xbl:attr="xbl:text=xpath" as="xs:string">
<xf:action ev:event="xforms-enabled xforms-value-changed">
<xf:setvalue ref="instance('xpath')" value="$xpath"/>
</xf:action>
</xf:var>
내 문제 위에서 강조된 라인이다 /pathToResult
: instance('xpath')
에서 I는, 예를 들어 폼 빌더의 사용자에 의해 제공되는 파라미터의 값을 갖는다. /pathToResult
과 연결된 제출 리소스에서 XML 결과의 일부를 가져 오려고합니다. 응답 XML에 대한 예를 들어, 대신 예상 된 결과의 /pathToInstance
: 그러나 불행하게도 instance('result')
에서이 결과 인스턴스의
<xml>
<blabla>bla</blabla>
<pathToResult>MY RESULT !!!</pathToResult>
</xml>
예상 값은 다음과 같습니다 MY RESULT !!!
대신 /pathToResult
.
<xf:var as="xs:string" name="control-value" value="/pathToResult"/>
가 잘 작동하지만,이 경우 경로가 하드 코드 :이 같은 코드를 수정하지만 경우
. 대신 Form Builder 사용자에게 컨트롤 구성에서 XPath 표현식을 지정할 기회를 제공하고 싶습니다.
예상 효과에 도달하도록 코드를 수정하려면 어떻게해야합니까?