我有一个两步构建过程。在第一步中,我想将符合定义良好的 XSD 模式的小 XML 文件中的配置读取到 XSLT 样式表中,然后输出另一个中间 XSLT 样式表,其中包含
<xsl:param />
元素列表以及配置 XML 中的数据。在第二步中,我想使用样式表对主 XML 文档运行转换,该样式表使用 <xsl:include>
引用第一步的输出。
我陷入了第一步 - 因为 XSLT 转换器理解
<xsl:...>
模式,它不会盲目地输出该模式中的元素,就像它实际上输出每个其他模式中的元素一样。
我正在使用 XSLT 1.0,因为我身处 .NET 领域。
我意识到可以(并且可能必须)编写一个控制台应用程序来读取配置 XML 并设置转换的全局参数,但我希望通过 XSLT 实现整个目标...
我尝试摆弄
<xsl:stylesheet>
元素中的命名空间,但我无法找到一种方法让它发出有效的 XSLT 样式表。
是的,可以使用XSLT生成XSLT,使用
<xsl:namespace-alias stylesheet-prefix = prefix | "#default" result-prefix = prefix | "#default" />
,参见https://www.w3.org/TR/xslt-10/#section-Creating-Elements-and-Attributes。
至于仅限于 XSLT 1.0,Saxon HE 存在于 Saxonica https://www.nuget.org/packages/Saxon-HE 的 .NET 框架中,我已使用 https 为 .NET 6 或 8 重新打包了它: //www.nuget.org/packages/SaxonHE10Net31Xslt。但这与命名空间别名无关。