首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Orbeon中将参数传递给XBL

在Orbeon中将参数传递给XBL
EN

Stack Overflow用户
提问于 2014-12-17 12:43:13
回答 1查看 256关注 0票数 0

我创建了以下两个简单的文件,view.xhtml:

代码语言:javascript
复制
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:xh="http://www.w3.org/1999/xhtml"
  xmlns:xf="http://www.w3.org/2002/xforms"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
  xmlns:ev="http://www.w3.org/2001/xml-events"
  xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
<head>
    <title>Test</title>
    <xf:model>

        <!-- Instance that contains all the books -->
        <xf:instance id="people-instance">
            <people xmlns="">
                <person>
                 <test/>
                </person>
            </people>
        </xf:instance>
    <xf:bind id="test-bind" name="test" ref="person/test"/>
    </xf:model>

</head>
<body>
<xf:input id="test-control" bind="test-bind">
    <xf:label>THIS</xf:label>
</xf:input>
<fr:my-name test="'test'">
</fr:my-name>       
</body>

我的名字是:

代码语言:javascript
复制
<xbl:xbl xmlns:xh="http://www.w3.org/1999/xhtml"
     xmlns:xf="http://www.w3.org/2002/xforms"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:ev="http://www.w3.org/2001/xml-events"
     xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
     xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
     xmlns:xbl="http://www.w3.org/ns/xbl"
     xmlns:xxbl="http://orbeon.org/oxf/xml/xbl"
     xmlns:fb="http://orbeon.org/oxf/xml/form-builder">

<xbl:binding element="fr|my-name" id="fr-my-name" xxbl:mode="lhha binding value">
    <metadata xmlns="http://orbeon.org/oxf/xml/form-builder" xmlns:xf="http://www.w3.org/2002/xforms">
    <templates>
          <view>
               <fr:my-name id="" appearance="minimal"   xmlns="" test="" >
               </fr:my-name>        
           </view>
     </templates>

     <xf:input ref="@test">
        <xf:label lang="en">Resource URI</xf:label>
      </xf:input>

    </metadata> 

    <xbl:template>
        <!-- Local model and instance -->
    <xf:var name="test-avt" xbl:attr="xbl:text=test" xxbl:scope="outer"/>
        <xf:var name="test" xbl:attr="xbl:text=test" >
        <xf:action ev:event="xforms-enabled xforms-value-changed">
            <xf:setvalue ref="instance('test')" value="$test"/>
        </xf:action>
      <xxf:sequence value="xxf:evaluate-avt($test-avt)" xxbl:scope="outer"/>
      </xf:var>
    <xf:model>
       <xf:instance id="test"><value/></xf:instance>
       <xf:instance><value/></xf:instance>
       <xf:submission id="save-submission" ref="instance('test')"   
                action="/exist/rest/db/orbeon/my-name/person.xml"
                method="put" replace="none">
                <xf:message ev:event="xforms-submit-error" level="modal">An error occurred while saving!</xf:message>
            </xf:submission>

     </xf:model>

    <xf:input class="xforms-disabled" ref="xxf:instance('people-instance')//*[name() = saxon:evaluate($test)]" >
        <xf:label>Your name</xf:label>
        <xf:send ev:event="xforms-value-changed" submission="save-submission"/> 
    </xf:input>

  </xbl:template>
</xbl:binding>

现在,我希望将参数从我的view.xhtml传递到XBL,因此当用户在xf:input =‘test-control’中插入一些内容时,它将导致将文本保存在数据库中。问题是,与我的数据库中实际插入的用户不同,我拥有:

代码语言:javascript
复制
<value>'test'</value>

而不是预期的,f.e。如果我插入123

代码语言:javascript
复制
<value>123</value>

有谁知道为什么我的代码不能工作,以及如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-17 18:59:45

下面是一个有效的例子。我把这两个文件放在一起,这样就更容易尝试了。

我改变了几件事:

  • 如果您的test属性实际上是一个AVT,那么它不应该有引号。例如,您有一个test="foo{42}",它的计算结果是foo42,如果我理解的话,它就是您想要观察的XML元素的名称。
  • 您可能不需要saxon:evaluate($test):AVT已经评估过了,并且结果可以在变量$test中获得。没有必要再次将结果计算为XPath表达式。
  • 第二个var不能有xbl:attr="xbl:text=test"
  • 可选:我使用xxf:binding-context('fr-my-name')/root()而不是xxf:instance(),但是xxf:instance()也能工作(尽管不推荐使用它)。
  • 可选:我将XBL模型移到xbl:implementation下。它清楚地表明,这不依赖于模板。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27525931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档