我正在使用 xslt 2.0。我可以有一个由两个主要样式表导入的通用 xslt 文件,其中一个输出 html,另一个输出 xml?
例如,假设我有 common.xsl。它将xml转换为xml。
然后我有 main_output_xml.xsl。这将导入 common.xsl,其输出格式为 xml。
我也有 main_output_html.xsl。这也将导入 common.xsl,但它的输出格式为 html。
这可能吗?
正如肯霍尔曼所说,答案是肯定的,你可以完全按照你的建议去做。
@Nalaka526 如果您阅读了该问题,那么您会发现它只需要“是”或“否”的答案。我的答案更长的唯一原因是 SO 不允许简短的答案。
简短:“是的”。
Long:使用命名输出。
首先,在 XSLT 的顶层定义不同的输出选项。
“20 序列化......一个样式表可能包含多个 xsl:output 声明,并且可能包含或导入也包含 xsl:output 声明的样式表模块。声明的名称xsl:output
是其名称属性的值,如果有的话。”
<xsl:output name="text" method="text" indent="no" encoding="utf-8" />
<xsl:output name="default" indent="no" method="html" encoding="utf-8" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" />
然后在结果文档输出中使用定义的name
方法之一:
<xsl:result-document href="output_file.txt" format="text">
...
</xsl:result-document>
“19.1 创建最终结果树......该xsl:result-document
指令定义了结果树的 URI,并且可以选择指定用于序列化该树的输出格式。”