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)},在这种情况下它不会像你期望的那样。这是一个棘手的问题,我看到了两种解决方案:

  1. 不要定义那个 XForms 变量。而是迭代 XSLT 中的结构,并生成您想要生成的任何 XForms。这“最有可能”是最好的出路(但不要相信我说的话,因为我什至不知道你想做什么!)。
  2. 如果您确实需要该变量,则需要<fr:bar>使用 XSLT ( ) 将这些元素复制到一个实例中<xsl:copy-of>,然后使用<xxforms:variable>.
于 2010-11-24T01:32:33.743 回答