我有一个两步构建过程。在第一步中,我想将符合明确定义的 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 的 .NET 框架https://www.nuget.org/packages/Saxon-HE,我已使用https://www.nuget.org/packages/SaxonHE10Net31Xslt将其重新打包为 .NET 6 或 8。但这与命名空间别名无关。