我仍然处于理解和学习使用XBL组件的早期阶段。我正在尝试使用样式表在主实例中对节点的内容生成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>我想这是起作用的关键,但我怎么能简单地在我的xbl的自定义标记上添加一个ref属性并完成这项工作呢?我一直在查看Orbeon文档、“沙箱”示例和其他地方,但我可能仍然误解了XBL组件的一些基本原则。谁能给我指明正确的方向?
发布于 2021-07-09 17:38:10
您是说要将绑定到组件的节点中的数据传递给XSLT吗?如果是这样的话,这是不可能的,也不是期望XSLT与XBL一起使用的方式。
将XBL中的XSLT看作是其他语言中的宏,它是元程序设计的一种形式,它允许您在“表单编译时”运行代码,而这些代码能够生成XForms和HTML。因为它是在“编译时”运行的,所以数据还没有可用。主要语言仍然是XForms,在大多数情况下,您不应该在XBL组件中使用XSLT。
https://stackoverflow.com/questions/68303241
复制相似问题