【发布时间】:2017-01-17 16:31:16
【问题描述】:
我正在编写测试 XSLT 库功能的测试文件。为此,我在 XML 文件本身中嵌入了微小的 XSLT,这样我就不需要为每个测试使用单独的 XML 和 XSLT 文件。这看起来有点像这样:
<?xml-stylesheet type="text/xsl" href="#test"?>
<someXml xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<test feature="lib:someFeature(...)">
<xsl:stylesheet version="2.0" xml:id="test">
<xsl:import href="../testlib.xsl"/>
<xsl:template match="*[lib:assertRef(@label, lib:someFeature())]" mode="assert"/>
</xsl:stylesheet>
</test>
<someContent label="assert: #someId"/>
<someMoreContent xml:id="someId"/>
</someXml>
oXygen 有没有办法调试这个? oXygen 是否有办法根据<?xml-stylesheet?> 规则运行转换?通常,这不是什么大问题,因为引用的样式表可以显式运行,但是当样式表被嵌入时,情况就不同了。
【问题讨论】:
-
我从命令行使用 Saxon 9.7 HE 成功测试了您的方法与
-a命令行选项一起运行嵌入式样式表,但是 oXygen 似乎不支持或理解href="#test"。您可能想在他们的支持论坛中询问他们是否认为这是一个错误或接受它作为未来版本的功能请求,或者是否有一些配置可以使其工作。 -
感谢您确认我的怀疑 oXygen 似乎没有此功能。我的测试过程实际上是使用 Saxon 使用
-a选项遍历所有测试文件。 -
确实 Oxygen 不支持这种在 XML 中嵌入样式表的方式。我将在我们的内部问题列表中添加一个问题。 Oxygen 不从命令行使用 Saxon,因此我们需要查看 Saxon 是否有 API 来运行 XML,并在其自己的内容中指定 XSLT。
-
@RaduCoravu 非常感谢您的第一手反馈。