问题标签 [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.
xslt - 如何使用 XSpec 测试结果文档的属性完整性?
我正在创建一个使用输入 XML 的测试,并且想要测试元素的存在以及所述元素的正确属性。然而,很难让它正常工作。
这是我设置的:
这个想法是输出转换将在/xmi:XMI/uml:Model/packagedElement/packagedElement[@name = 'AdditionalExposureDetail']处包含一个元素(确实如此),并且该元素将具有正确的属性签名。经过多次迭代,但我无法让它工作 - 最新的结果给出了一个空节点集,即使手动运行转换,XPath 也是正确的!
我究竟做错了什么?
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
会有所帮助,但我还没有让它工作并且没有解决方案。
感谢您的关注!
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() 方法。有没有办法解决这个问题,而不改变我的变换?
java - 如何从 XSpec 获得代码覆盖率
我在工作中使用 XSpec 进行 XSL 单元测试。我将 XSpec 视为一种覆盖选项,但我无法让它发挥作用。我收到此错误:
“转换失败:无法加载 com.jenitennison.xslt.tests.XSLTCoverageTr aceListener
使用 SAXON 9.1.0.7 进行测试"
我很难找到有关 XSpec 的最新信息。任何人都可以指出我正确的方向吗?谢谢!
xslt - XSLT:在 XSpec 中测试结果文档的内容?
我正在编写一个使用 XSLT 的程序,并且需要在 Xspec 中测试结果文档调用的内容。在下面的示例中,我想测试 result.xml 的内容。如果这是可能的,你如何做到这一点?
XML:测试.xml
XSLT:结果文档.xsl
规格:
xml - 使用 XSpec 的测试用例中未处理某些元素
我是 XSLT 开发人员,现在有一天我在使用 XSpec 编写测试用例时遇到了错误。这是我写的测试用例
此测试用例用于删除标记之前元素的换行符<ini>
,但是当我运行测试用例时,它说<ini>
标记未处理。我该如何解决这个问题?请帮助..谢谢..
unit-testing - 如何实现 Xspec 单元测试?
有谁知道如何使用 XSLT 中的 XSpec 测试这个简单的代码?
从初学者的角度来看,使用 Xspec 测试函数很简单,但对于选择属性的模板来说则不是(至少对我来说,因为现在我已经开始使用它了)。
例如:这很容易:
欢迎任何建议。PS 我正在使用来自 OxygenXML 的 Xspec。
maven - 使用 Maven 和 Saxon-PE7 运行 XSpec
我们希望将XSpec作为 Maven 构建的一部分来检查我们的 XSL 转换。可以从GitHub获得一个插件。当我们检查调用函数的 XSL 样式表在 Saxon-HE 中不可用时,就会出现问题,如下所示:
我们拥有 PE 的许可证。根据 Saxon 文档,当没有可用的许可证信息时,增强版恢复为开源 HE,这似乎是这种情况。是否可以通过 Maven 激活 PE,例如使用codehaus的插件,那会是什么样子?我们已经通过 Java 使用了一种激活方式,但是如果可能的话,了解另一种可以说更优雅的方式会很有帮助。
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 环境:
但这也不起作用。我该如何安装?
谢谢
python - 运行时执行命令的时间
我在一行中有一个命令(Fit.perform()
from import xspec
,但没关系,因为这个问题很笼统,也可以应用于其他 python 命令)需要一段时间才能完成。
我只是想知道命令运行时的执行时间,所以当它还没有完成执行时。如果我想在命令执行期间停止命令,这是必要的,例如因为它需要太多时间才能结束。
所以,我需要这样的东西:
不可能使用类似time
or的方法,timeit
因为它们仅在命令执行结束时计算时间,而不是在命令运行时计算时间。
可能吗?
我在 MacOS 上使用 python 2.7。