简单 Xpath - 读取 XBL 中的子元素

发布于 2024-10-03 15:38:56 字数 776 浏览 3 评论 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>

I am using orbeon and I am trying to read child element defined in XBL. Here is how my xform definition looks like

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

In XBL I can't seem to find an easy way to read the child element. I am obviously missing something simple.

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

﹏雨一样淡蓝的深情 2024-10-10 15:38:56

AVT 始终返回文本。因此 {fr:foo/fr:bar} 相当于 {string(fr:foo/fr:bar)},在这种情况下不会执行您的操作预计。这是一个棘手的问题,我看到两种解决方案:

  1. 不要定义该 XForms 变量。相反,迭代 XSLT 中的结构,并生成您想要生成的任何 XForm。这是“最有可能”最好的出路(但不要相信我说的话,因为我什至不知道你想做什么!)。
  2. 如果您确实需要该变量,则需要使用 XSLT 将这些 元素复制到实例中 () ,然后使用 指向该实例中的节点。

An AVT always return text. So {fr:foo/fr:bar} is equivalent to {string(fr:foo/fr:bar)}, which in this case won't do what you expect. This is a tricky one, and I see two solutions:

  1. Don't define that XForms variable. Instead iterate over the structure in XSLT, and generate whatever XForms you want to generate. This is "most likely" the best way out (but don't believe what I say, since I don't even know what you are trying to do!).
  2. If you really need that variable, you'll need to copy those <fr:bar> elements into an instance with XSLT (<xsl:copy-of>), and then point to the nodes in that instance with the <xxforms:variable>.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文