在XQuery 3.1中,我正在动态创建XSLT 2.0样式表,以将tei-xml
文档转换为HTML。
在XQuery中,我创建一个变量$docdate
来存储HTML跨度:
<span><a href="somefoosite.com">2018-12-10</a></span>
然后将其传递给XSLT样式表中的一个参数,然后使用该参数:
let $stylesheet :=
<xsl:stylesheet>
[....]
<xsl:param name="paramDocdate" as="element()*">{$docdate}</xsl:param>
[....]
<xsl:apply-templates select="$paramDocdate" mode="date"/>
[....]
</xsl:stylesheet>
我不确定xsl:apply-templates
如何使HTML呈现为HTML,而不是仅仅输出文本2018-12-10
。需要明确的是:HTML元素肯定是通过参数传递的,而不仅仅是text()
。
或者我想象一个人可以在XQuery中创建变量时将HTML序列化为字符串(将长字符串作为参数传递)吗?
但是我不知道该怎么做。
我宁愿避免在创建$docdate
时直接将HTML手动编写为字符串,如果可以通过编程方式做到这一点。
非常感谢。
编辑:原来这个模板在下面从参数中输出HTML,但是我想听听其他方法来解决这个问题...
<xsl:template match="span" mode="date">
<xsl:copy-of select="."/>
</xsl:template>
答案 0 :(得分:1)
如果您知道元素名称和名称空间正确(例如,span
没有用于HTML 4或HTML5的命名空间,或者span
具有用于XHTML的XHTML命名空间)到根本不需要apply-templates
的输出,您可以直接使用<xsl:copy-of select="$paramDocdate"/>
。
但是,如果您使用apply-templates
,那么显然您需要确保有一个模板可以完成所需的工作(即复制),因此,您要么找到了为{{1} }在需要的模式下复制或设置通用模板,例如该模式(或带有span
的所有模式)的身份转换来执行复制。