0

我仍处于了解和学习使用 XBL 组件的早期阶段。我正在尝试使用样式表在主实例中的节点内容上生成 HTML“报告”(暂时搁置如果该节点发生更改则更新它的问题)。我可以让样式表运行并生成其中没有任何值的 HTML,但我仍在尝试了解如何将数据获取到样式表。我查看了“XForm Sandbox”示例“ xbl-xslt.xhtml ”,它确实在我的应用程序中运行。该示例在自定义标记内使用 xform 重复,并且在样式表中有一个模板与引用自定义标记的匹配项,所以我假设这就是样式表获取其数据的方式。

我不希望它生成任何 XForm 标记,只生成 HTML。在 XBL 绑定上,我将xxbl:mode="binding"其用作属性。我只想ref在自定义标签上添加一个属性,但我不知道如何将数据传递给样式表。(目前在我的样式表中,所有内容都在一个<xsl:template match="/">元素下。)我注意到“备用表”示例具有以下内容:

<xsl:template match="@*|node()">
    <xsl:copy>
         <xsl:if test="/*">
              <xsl:attribute name="xxbl:scope">outer</xsl:attribute>
         </xsl:if>
         <xsl:apply-templates select="@*[not(name() = ('style1', 'style2'))]|node()"/>
    </xsl:copy>
</xsl:template>

和这个:

<xsl:template match="foo:table-alternate">
  <xh:table>
      <xsl:apply-templates select="@*|node()"/>
  </xh:table>
</xsl:template>

我想这是这个工作的关键,但我怎么能简单地ref在我的 xbl 的自定义标签上添加一个属性并让这个工作?我一直在查看 Orbeon 文档、“沙盒”示例和其他地方,但我可能仍然误解了 XBL 组件的一些基本原理。谁能指出我正确的方向?

4

1 回答 1

0

您是说要将绑定到组件的节点中的数据传递给 XSLT?如果是这样,那是不可能的,而且 XSLT 也不应该与 XBL 结合使用。

将 XBL 中的 XSLT 视为某些其他语言中的宏,作为一种元编程形式,它允许您在“表单编译时”运行代码,并且该代码能够生成 XForms 和 HTML。由于它在“编译时”运行,因此数据尚不可用。主要语言仍然是 XForms,并且在大多数情况下,您不需要在 XBL 组件中使用 XSLT。

于 2021-07-09T17:38:10.693 回答