动态设置提交中的XPath

用户名

我在XBL中创建自己的组件,因此必须在其中使用提交。我有用户可以在Form Builder中提供的提交的两个参数(资源,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>
.... 

然后,我想调用REST提交,其中包含用户在表单构建器(@resource@xpath)中提供的资源和结果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>

我的问题在上面突出显示的行中:在其中,instance('xpath')我具有用户在Form Builder中提供的参数值,例如:/pathToResult我想从与关联的提交资源中获取XML结果的一部分/pathToResult但是不幸的instance('result')是:/pathToInstance代替了预期的结果,例如响应XML:

<xml>
   <blabla>bla</blabla>
   <pathToResult>MY RESULT !!!</pathToResult>
</xml>

result-instance的期望值为:MY RESULT !!!而不是/pathToResult

但是,如果我这样修改代码:

<xf:var as="xs:string" name="control-value" value="/pathToResult"/>

它运作良好,但是在这种情况下,路径是硬编码的。相反,我想给表单生成器用户一个机会,以在控件配置中指定XPath表达式。

如何修改代码以达到预期效果?

埃布鲁奇兹

一个答案类似于为另一个问题提供的答案:use saxon:evaluate()

<xf:setvalue ref="instance('result')" value="saxon:evaluate(instance('xpath'))"/>

另一种方法如下。如果您的本地XBL模型在之下<xbl:template>,则可以使用XBL绑定节点上存在的属性来修改模型。因此,例如:

<xf:submission xbl:attr="resource" ...>

resource会将属性复制<fr:mycontrol><xf:submission>元素上。

这比较简单,应该完全按照您想要的去做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何在* ngFor中设置动态ID?

来自分类Dev

在Titanium中动态设置passwordMask

来自分类Dev

在Gradle插件中动态设置sourceSets

来自分类Dev

在上载器中动态设置端点

来自分类Dev

提交中包含gitignore设置

来自分类Dev

在EF中动态设置表名

来自分类Dev

在jQuery中动态创建表单提交问题

来自分类Dev

在Spark提交中设置Elasticsearch属性

来自分类Dev

在ColdFusion cfinput中动态设置“只读”

来自分类Dev

在Angular中动态设置ngModelOptions

来自分类Dev

在JavaScript中设置动态下拉值

来自分类Dev

表单提交后如何在Flask中创建动态路线?

来自分类Dev

提交按钮在javascript中设置值

来自分类Dev

ConEmu中的动态设置

来自分类Dev

在Rails中动态设置变量

来自分类Dev

动态评估存储在变量中的XPath

来自分类Dev

在jQuery中动态创建表单提交问题

来自分类Dev

在Java中的JTextField中动态设置文本

来自分类Dev

表单中的动态提交按钮数量

来自分类Dev

如何在Xpath中传递动态值

来自分类Dev

提交在CodeIgniter中的AJAX成功函数中动态创建的表单

来自分类Dev

将动态DDL与HTML中的“提交”按钮链接

来自分类Dev

设置模块中的动态条目

来自分类Dev

动态更改表单提交中的div内容

来自分类Dev

动态模型中的自动填充字段未提交

来自分类Dev

无法动态设置提交按钮值 angular.js

来自分类Dev

在 GIT 提交字段中设置默认消息

来自分类Dev

动态分配值给MVC中的提交按钮

来自分类Dev

动态 iframe 中的表单提交不会被触发