2012-05-14 43 views
0

我想創建一個自定義組件,它在表單構建器中實例化時,它將在fr-form-instance中包含子節點並且不僅包含教程中顯示的單個節點: http://wiki.orbeon.com/forms/doc/developer-guide/xbl-components-guide#TOC-Event-handlingOrbeon在表單構建器中定製xbl組件

例如,如果我實例化形式建設者教程輸入組件:

..... 

    <fb:metadata> 
     <fb:display-name lang="en">Custom Component</fb:display-name> 
     <fb:datatype>xforms:string</fb:datatype> 
     <fb:template> 
      <cc:test ref=""/> 
     </fb:template> 
    </fb:metadata> 
    <xbl:binding element="fr|tutorial-input" id="fr-tutorial-input"> 
     <xbl:template> 
      <xforms:group xbl:attr="model context ref bind" xxbl:scope="outer"> 
       <xbl:content includes="xforms|label,xforms|help,xforms|hint,xforms|alert"/> 
       <xforms:group xxbl:scope="inner"> 
        <xxforms:variable name="binding" as="node()?"> 
         <xxforms:sequence select="." xxbl:scope="outer"/> 
        </xxforms:variable> 
        <xforms:input ref="$binding"/> 
       </xforms:group> 
      </xforms:group> 
     </xbl:template> 
    </xbl:binding> 

..... 

表單生成器將只有一個節點,FR形式的實例:

..... 
    <xforms:instance id="fr-form-instance"> 
     <form> 
      <section> 
       <contorl-x/> //only one node 
..... 

我想要做的是有:

..... 
    <xforms:instance id="fr-form-instance"> 
     <form> 
      <section> 
       <contorl-x>// x child nodes 
        <contorl-x-child-one> 
        <contorl-x-child-two> 
         ..... 
       </contorl-x> 
..... 

有沒有可能這樣做?其他組件/示例中是否存在與此類似的行爲?

回答

1

節模板做同樣的事情:一個元素

  • 的部分模板組件,在運行時,變得可見時,插入其嵌套元素

    • 當你插入一個分節模板,表單生成器只是插入

    您可以在form-to-xbl.xsl中看到這是如何完成的。

    同樣,here is a prototype XBL組件創建一個元素,如果丟失。

    現在魔鬼在細節中。您必須確定具體爲:

      當組件創建其嵌套元素
    • 是否曾經刪除它們

    而且,有一點要記住的是,XBL組件本身不能

  • ,在這個時候,驗證嵌套元素。只有使用Form Builder生成的綁定的頂級元素才能驗證數據。

    部分模板通過驗證XBL組件本身內的子實例來解決此問題。

  • 相關問題