是否有任何xml测试框架允许我编写用于测试/断言xml文件内容的脚本?
注意:我知道这些框架作为Java和.NET等编程语言测试框架的扩展而存在。
我所期待的是拥有独立于任何编程语言的东西。我想在记事本中编写xml测试脚本,而不必编译它们。 (像DBFit,但对于XML)。请参阅下面的示例,了解我正在寻找的内容。
示例XML
<parent>
<value name ="bob"/>
</parent>
- &GT;
示例XML测试脚本
assert(xpath("/parent/value/@name") == 'bob');
答案 0 :(得分:1)
Schematron基本不同 来自其他模式语言的概念 它不是基于语法而是基于语法 在解析中找到树模式 文献。这种方法允许很多 要表示的各种结构 这是不方便和困难的 在基于语法的模式语言中。如果 你知道XPath或XSLT表达式 语言,你可以开始使用了 Schematron立刻。
它有免费和开源 实现可用。
Schematron很简单 在XSLT和。之上实现 定制。 (还有 Python和Perl中的实现)
Schematron允许您开发 并混合两种模式:
1。) 报告 元素可让您进行诊断 你是哪种语言的变体 处理。
2。) 断言 元素允许 你确认一下这份文件 符合特定架构。
在 Schematron基于一个简单的 动作:
- 首先,找到一个上下文节点 基于文档(通常是元素) 在XPath路径标准;
- 然后,检查 看看是否有其他一些XPath表达式 对于每个节点都是如此。
示例Schematron模式:
<?xml version="1.0" encoding="UTF-8"?>
<sch:schema xmlns:sch=""http://purl.oclc.org/dsdl/schematron">
<sch:title>Verify that Dad is Bob</title>
<sch:pattern>
<sch:rule context="/parent/value">
<sch:assert test="@name='bob'">The/parent/value/@name must be "bob".</sch:assert>
</sch:rule>
</sch:pattern>
</sch:schema>
答案 1 :(得分:1)
您可以使用XSLT轻松地推出自己的解决方案。
下面是一个评估断言条件的XSLT示例,如果它没有通过,则使用带有@terminate='yes'
的{{3}}来暂停进程并将错误消息回显到std out:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" exclude-result-prefixes="xd" version="1.0">
<xsl:template match="/">
<!--Assert that /parent/value/@name == 'bob'-->
<xsl:if test="not(/parent/value/@name='bob')">
<!-- if it does not, then terminate the transform and fail -->
<xsl:message terminate="yes">name must be bob</xsl:message>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
只需针对您要验证的文件执行XSLT。