Xslt xspec:预期失败,结果相同
我使用xspec测试样式表。大多数情况下,它工作正常,但偶尔测试会在没有正当理由的情况下失败:预期结果和实际结果是相同的。看起来:在比较屏幕中,一切都是绿色的。 在这种情况下,我在尝试了各种各样的事情后,基本上都能让它重新工作,但不知道“它”发生了什么变化 如果xspec能够报告失败的原因,这将是非常有帮助的,但是如果您能够帮助我(而不是xspec的输出)对此有所了解,我将非常高兴 这是一个简化的测试用例: xsl:Xslt xspec:预期失败,结果相同,xslt,xspec,Xslt,Xspec,我使用xspec测试样式表。大多数情况下,它工作正常,但偶尔测试会在没有正当理由的情况下失败:预期结果和实际结果是相同的。看起来:在比较屏幕中,一切都是绿色的。 在这种情况下,我在尝试了各种各样的事情后,基本上都能让它重新工作,但不知道“它”发生了什么变化 如果xspec能够报告失败的原因,这将是非常有帮助的,但是如果您能够帮助我(而不是xspec的输出)对此有所了解,我将非常高兴 这是一个简化的测试用例: xsl: xspec: <?xml version="1.0" encodin
xspec:
<?xml version="1.0" encoding="UTF-8"?>
<x:description
xmlns:x = "http://www.jenitennison.com/xslt/xspec"
stylesheet="file:/home/rdgon/project/kraak/kraak-xslt/publicatiebladen/staatscourant/stcrt_step2.xsl">
<x:param name='ns' select="false()"/>
<x:scenario label='test'>
<x:scenario label='werkt dit'>
<x:context><bezwaar>
<al>Noem in het bezwaarschrift:</al>
<al nadruk="cur">Vergeet niet te ondertekenen.</al>
</bezwaar>
</x:context>
<x:expect>
<bezwaar>
<al>Noem in het bezwaarschrift:</al>
<al nadruk="cur">Vergeet niet te ondertekenen.</al>
</bezwaar>
</x:expect>
</x:scenario>
</x:scenario>
</x:description>
你能解释一下我没看到什么吗
Ruud如果您已经运行了XSL,那么bezwaar元素会出现两次,并出现额外的名称空间,因为在同一个元素中有x:context和x:expect。如果希望x:expect与x:context相同,则可以尝试以下代码
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x = "http://www.jenitennison.com/xslt/xspec"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs x">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="x:scenario">
<xsl:apply-templates select="x:scenario/x:context/bezwaar"/>
</xsl:template>
<xsl:template match="bezwaar">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="al">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
或如果需要多次bezwaar则可以对第一个模板匹配进行注释。如果已运行XSL,则bezwaar元素会出现两次,并出现额外的名称空间,因为在同一元素中有x:context和x:expect。如果希望x:expect与x:context相同,则可以尝试以下代码
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x = "http://www.jenitennison.com/xslt/xspec"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs x">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="x:scenario">
<xsl:apply-templates select="x:scenario/x:context/bezwaar"/>
</xsl:template>
<xsl:template match="bezwaar">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="al">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
或如果需要多次bezwaar,则可以对第一个模板匹配进行注释。因为xsl:variable
没有@as
,所以结果是一个文档节点。但是您的x:expect
需要一个元素
如果您想让您的x:expect
使用文档节点,则需要将select=“/”
添加到x:expect
。查找解释“如果您在XSpec中未指定@select”。因为xsl:variable
没有@as
,您的结果是一个文档节点。但是您的x:expect
需要一个元素
如果您想让您的x:expect
使用文档节点,则需要将select=“/”
添加到x:expect
。在XSpec中查找“如果您不指定@select”的解释。结果的类型(document-node()
)似乎与预期结果的类型(element()
)不同。但是,我不确定在这个场景中,您必须在哪里进行调整。Martin,我使用了错误的样式表。我已经生成了一个新的最小xsl样式表,它精确地生成了屏幕截图(我编辑了这个问题)。区别在于xslt中使用了一个变量,这显然会导致返回文档节点,从而导致xspec报告失败。现在您可能已经能够解释如何将文档节点转换为元素了。是的,如果我用apply templates替换了的副本,那么测试就通过了。我使用和第二个身份转换用于此模式。似乎是一个有点残废的解决方案。可以更优雅地完成吗?如果
由于在变量content
中返回文档节点而导致测试失败,那么
当然应该足以返回文档节点中的元素并通过测试。或者将该变量声明为…
。谢谢Martin,这正是我想要的。我应该能够接受你的评论作为答案!!结果的类型(document-node()
)似乎与预期结果的类型(element()
)不同。但是,我不确定在这个场景中,您必须在哪里进行调整。Martin,我使用了错误的样式表。我已经生成了一个新的最小xsl样式表,它精确地生成了屏幕截图(我编辑了这个问题)。区别在于xslt中使用了一个变量,这显然会导致返回文档节点,从而导致xspec报告失败。现在您可能已经能够解释如何将文档节点转换为元素了。是的,如果我用apply templates替换了的副本,那么测试就通过了。我使用和第二个身份转换用于此模式。似乎是一个有点残废的解决方案。可以更优雅地完成吗?如果
由于在变量content
中返回文档节点而导致测试失败,那么
当然应该足以返回文档节点中的元素并通过测试。或者将该变量声明为…
。谢谢Martin,这正是我想要的。我应该能够接受你的评论作为答案!!谢谢你的回答。我不知道在expect元素上选择的可能性。非常有用!!谢谢你的回答。我不知道在expect元素上选择的可能性。非常有用!!