0

Orbeon を使用しており、XBL で定義された子要素を読み込もうとしています。これが私のxform定義がどのように見えるかです

<fr:foobar ref="mynode" constraint="unique">
  <fr:foo from="abc" to="def">
    <fr:bar key="id" name="primary" />
  </fr:foo>
</fr:foobar>

XBL では、子要素を簡単に読み取る方法が見つからないようです。明らかに単純なものが欠けています。

<xforms:group xxbl:scope="inner">
    <!-- works -->
    <xxforms:variable name="foocontext">
        <xxforms:sequence select="{fr:foo/@from}" xxbl:scope="outer" />
    </xxforms:variable>

    <!-- does not works -->    
    <xxforms:variable name="barcontext" as="node()?">
        <xxforms:sequence select="{fr:foo/fr:bar}" xxbl:scope="outer" />
    </xxforms:variable>
</xforms:group>
4

1 に答える 1

1

AVT は常にテキストを返します。So{fr:foo/fr:bar}は と同等ですが{string(fr:foo/fr:bar)}、この場合は期待どおりに動作しません。これは難しい問題で、2 つの解決策があります。

  1. その XForms 変数を定義しないでください。代わりに、XSLT で構造を繰り返し処理し、生成したい XForms を生成します。これが「おそらく」最善の方法です (ただし、あなたが何をしようとしているのかさえわからないので、私の言うことを信じないでください!)。
  2. その変数が本当に必要な場合は、これらの<fr:bar>要素を XSLT ( <xsl:copy-of>) を使用してインスタンスにコピーし、そのインスタンス内のノードを<xxforms:variable>.
于 2010-11-24T01:32:33.743 に答える