我正在编写一个使用XSLT的程序,需要在Xspec中测试结果文档调用的内容。在下面的示例中,我想测试result.xml的内容。如果可以的话,你怎么做?
XML:test.xml
<?xml version="1.0" encoding="UTF-8"?>
<root></root>
XSLT:result-document.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:template match="/root">
<xsl:result-document href="result.xml">
<my-result></my-result>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
XSpec:
<x:description xmlns:x="http://www.jenitennison.com/xslt/xspec" stylesheet="result-document.xsl">
<x:scenario label="Test result document">
<x:context href="test.xml"></x:context>
<!-- How do you test the result.xml file here? -->
<x:expect label="test result">
<my-result></my-result>
</x:expect>
</x:scenario>
</x:description>
答案 0 :(得分:1)
我一直在寻找相同的答案,但我怀疑这是XSpec实施方式的固有限制。
我怀疑解决方法是使用一个使用结果文档的不可测试模板,然后在结果文档中使用匹配或调用模板进行测试:
<强> XSLT 强>
<xsl:template match="/root">
<xsl:result-document href="result.xml">
<xsl:call-template name="my-result"/>
</xsl:result-document>
</xsl:template>
<xsl:template name="my-result">
<!-- content -->
</xsl:template>
<强> XSPEC 强>
<x:scenario label="when calling my-result">
<x:call template="my-result"/>
<x:expect label="test something" pending="add your tests here"/>
</x:scenario>
因此,您无法真正测试结果文档是否以正确的方式制作,但您可以检查其结果。
请注意,XSPEC不会逐字“测试result.xml的内容”;只是您在XSPEC本身中指定的输入上的XSLT行为。