问题标签 [xspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
171 浏览

xslt - 如何使用 XSpec 测试结果文档的属性完整性?

我正在创建一个使用输入 XML 的测试,并且想要测试元素的存在以及所述元素的正确属性。然而,很难让它正常工作

这是我设置的:

这个想法是输出转换将在/xmi:XMI/uml:Model/packagedElement/packagedElement[@name = 'AdditionalExposureDetail']处包含一个元素(确实如此),并且该元素将具有正确的属性签名。经过多次迭代,但我无法让它工作 - 最新的结果给出了一个空节点集,即使手动运行转换,XPath 也是正确的!

我究竟做错了什么?

0 投票
1 回答
1787 浏览

xslt - 从另一个文件运行 xsl 时如何获取所需的基本 URI?

当我的测试使用 XSpec 运行时,有一个明显的问题:全局变量的基本 URI 设置为运行我的 XSLT 的 xspec 父级,而不是 XML 输入本身。

因此,当我的 XSL 转换自己针对 XML 运行时,一切都很好,全局变量正在选择它们应该选择的内容:输入 XML 中的元素。

然而,当它通过 XSpec 运行时,基本 URI 被设置为 XSpec 本身——大概是因为 XSLT 规范将基本 URI定义为:

如果元素或处理指令出现在外部实体中,则该元素或处理指令的基本 URI 是外部实体的 URI;否则,基本 URI 是文档的基本 URI。

这对我来说是个问题。我已经尝试xml:base在变量和xsl:stylesheet: 上使用该属性,但这似乎并没有影响基本 URI;它只受影响fn:static-base-uri()。此外,static-base-uri()始终返回我想要的正确 URI - 所以我希望该值以某种方式成为我的全局变量的基本 URI。

一旦我将变量移动到模板中并且它们成为本地变量,它们的基本 URI 就可以了。但这会破坏我使用变量的全部意义,这不是重复选择调用。

关于如何解决这个问题的任何提示?

我将 XSLT 2.0 与 SAXON EE 9.4.0.6(和 HE 版)一起使用。


更新 1

我做了更多调查,似乎 XSpec 以这种方式调用 Saxon:

java -cp "%CP%" net.sf.saxon.Transform -o:%RESULT% -s:%XSPEC% -xsl:%TEST_STYLESHEET% -it:{http://www.jenitennison.com/xslt/xspec}main

这意味着源 XML 文件 -s 是 .xspec 样式表本身。如果它必须为转换工作提供一些XML 数据是有道理的,但在这种情况下,是转换本身通过导入它使用的 XML 数据fn:doc()- 不幸的是,在我的 xsl 的全局级别内,基本 uri 是错误的而不是设置为导入的文档,但设置为 xspec 样式表。

因此,作为测试,我将 Saxon -s 标志设置为 XML 输入文档和 tada - 基本 URI 现在是正确的。但这意味着我不能在 xspec 中使用任何其他 xml,因此不是一个非常可行的解决方案。


更新 2

鉴于 Michael Kay 的更多反馈(谢谢!),我附上了我正在使用的最小测试用例。您还需要下载XSpec 0.4-rc1,但这不是必需的。

获得 XSpec 后,如果您使用的是 Windows,则需要编辑 xspec-0.4.0rc1/bin/xspec.bat 以指向第 3 行的 Saxon jar。

否则,要运行它,您需要执行xspec.bat .\DCM2EA.xspec.

理想情况下,输出中全局的基本 URI 将指向NEHTA-00009-Adverse_Reaction-Structure (sample data).xml. 现在,它没有 - 它指向 .xspec。这直接受到-s:%XSPEC%第 73 行的 xspec.bat 的影响。

xspec 的工作方式是它在给定 DCM2EA.xspec 和它自己在 xspec/DCM2EA.xsl 中的测试的情况下创建一个中间转换并运行该转换(这就是为什么在这种情况下 XSpec 是可选的,您可以运行 xspec - bad attribute name/xspec/ DCM2EA.xsl 直接)。

我遇到的问题是base-uri()在原始 DCM2EA.xsl 的全局上下文中设置为 xspec 文件,这是错误的。模板内部base-uri()设置得很好(正如您Base URI now在输出中看到的那样),但是将变量移动到本地范围是不切实际的。

指定输入 xml 数据也不可行,因为我的实际 .xspec 导入了几个不同的文件,而且我不想分解已有的 190 个测试并添加这样的变通方法。

我希望这xml:base会有所帮助,但我还没有让它工作并且没有解决方案。

感谢您的关注!

0 投票
1 回答
208 浏览

java - XSpec / Saxon - EXSLT 格式日期

我正在使用 XSpec(使用 Saxon EE 9)来测试一些 XSLT 1.0 转换。除了以下 EXSLT 扩展外,它们大部分都可以正常工作:

我收到一条错误消息:

{ http://exslt.org/dates-and-times }格式-日期()。没有本地名称 format-date 的 Saxon 扩展函数

我知道这意味着 Saxon 没有从 EXSLT 实现 format-date() 方法。有没有办法解决这个问题,而不改变我的变换?

0 投票
1 回答
282 浏览

java - 如何从 XSpec 获得代码覆盖率

我在工作中使用 XSpec 进行 XSL 单元测试。我将 XSpec 视为一种覆盖选项,但我无法让它发挥作用。我收到此错误:

“转换失败:无法加载 com.jenitennison.xslt.tests.XSLTCoverageTr aceListener

使用 SAXON 9.1.0.7 进行测试"

我很难找到有关 XSpec 的最新信息。任何人都可以指出我正确的方向吗?谢谢!

0 投票
1 回答
563 浏览

xslt - XSLT:在 XSpec 中测试结果文档的内容?

我正在编写一个使用 XSLT 的程序,并且需要在 Xspec 中测试结果文档调用的内容。在下面的示例中,我想测试 result.xml 的内容。如果这是可能的,你如何做到这一点?

XML:测试.xml

XSLT:结果文档.xsl

规格:

0 投票
0 回答
60 浏览

xml - 使用 XSpec 的测试用例中未处理某些元素

我是 XSLT 开发人员,现在有一天我在使用 XSpec 编写测试用例时遇到了错误。这是我写的测试用例

此测试用例用于删除标记之前元素的换行符<ini>,但是当我运行测试用例时,它说<ini>标记未处理。我该如何解决这个问题?请帮助..谢谢..

0 投票
1 回答
650 浏览

unit-testing - 如何实现 Xspec 单元测试?

有谁知道如何使用 XSLT 中的 XSpec 测试这个简单的代码?

从初学者的角度来看,使用 Xspec 测试函数很简单,但对于选择属性的模板来说则不是(至少对我来说,因为现在我已经开始使用它了)。

例如:这很容易:

欢迎任何建议。PS 我正在使用来自 OxygenXML 的 Xspec。

0 投票
2 回答
379 浏览

maven - 使用 Maven 和 Saxon-PE7 运行 XSpec

我们希望将XSpec作为 Maven 构建的一部分来检查我们的 XSL 转换。可以从GitHub获得一个插件。当我们检查调用函数的 XSL 样式表在 Saxon-HE 中不可用时,就会出现问题,如下所示:

我们拥有 PE 的许可证。根据 Saxon 文档,当没有可用的许可证信息时,增强版恢复为开源 HE,这似乎是这种情况。是否可以通过 Maven 激活 PE,例如使用codehaus的插件,那会是什么样子?我们已经通过 Java 使用了一种激活方式,但是如果可能的话,了解另一种可以说更优雅的方式会很有帮助。

0 投票
1 回答
869 浏览

python - 无法在 Python 中导入 xspec

我正在使用的教程如下: https ://heasarc.gsfc.nasa.gov/xanadu/xspec/python/html/buildinstall.html

我已经完成安装直到..Once HEASOFT is finished building and installing, you should find PyXspec’s code files and lib_pyXspec.so library in the directory $HEADAS/lib/python/xspec.

但是,当我运行时$HEADAS/headas-init.csh,它要求超级用户权限,当我使用时sudo,它给我一个错误,说找不到命令。然后我尝试使用以下方法手动设置 PYTHONPATH 环境:

但这也不起作用。我该如何安装?

谢谢

0 投票
2 回答
48 浏览

python - 运行时执行命令的时间

我在一行中有一个命令(Fit.perform()from import xspec,但没关系,因为这个问题很笼统,也可以应用于其他 python 命令)需要一段时间才能完成。

我只是想知道命令运行时的执行时间,所以当它还没有完成执行时。如果我想在命令执行期间停止命令,这是必要的,例如因为它需要太多时间才能结束。

所以,我需要这样的东西:

不可能使用类似timeor的方法,timeit因为它们仅在命令执行结束时计算时间,而不是在命令运行时计算时间。

可能吗?

我在 MacOS 上使用 python 2.7。