首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xspec:预期失败和结果相同

xspec:预期失败和结果相同
EN

Stack Overflow用户
提问于 2019-11-14 09:50:20
回答 2查看 201关注 0票数 0

我使用xspec测试样式表。大多数情况下,它可以正常工作,但有时测试会失败,但没有一个合理的理由:预期的结果和实际的结果是相同的。看起来:比较屏幕上的所有东西都是绿色的。在这种情况下,在尝试了各种事情之后,我基本上都能让它重新发挥作用,但我不知道什么变化“做了它”。

如果xspec能够报告失败的原因,这将是非常有帮助的,但是如果您能够帮助我(而不是xspec输出)来照亮这一点,我会非常高兴的。

这是一个简化的测试用例: xsl:

代码语言:javascript
复制
<xsl:stylesheet version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:uc="http://www.infinity-loop.de/namespace/upcast/4.0/"
  xmlns:xlink="http://www.w3.org/1999/xlink" 
  xmlns:html="http://www.w3.org/HTML/1998/html4"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  exclude-result-prefixes="uc xlink html xs xsl">

  <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

  <xsl:template match="bezwaar">
    <xsl:variable name="content">
      <xsl:element name="{name()}">
        <xsl:apply-templates select="@*|node()"/>
      </xsl:element>
    </xsl:variable>
    <xsl:copy-of select="$content"/>
  </xsl:template>

  <xsl:template match="@*" >
    <xsl:attribute name="{name()}" namespace="{namespace-uri()}">
      <xsl:value-of select="." />
    </xsl:attribute>
  </xsl:template>

  <xsl:template match="*">
    <xsl:element name="{name()}" namespace="{namespace-uri()}">
      <xsl:apply-templates select="@*|node()" />
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

xspec:

代码语言:javascript
复制
<?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>

显示故障的测试报告:

你能解释一下我没看到什么吗?

卢德

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-14 14:19:19

因为xsl:variable没有@as,所以您的结果是一个文档节点。但是您的x:expect需要一个元素。

如果您想让您的x:expect期望一个文档节点,则需要将select="/"添加到x:expect中。在XSpec 维基中查找“如果您指定no @select”的解释。

票数 2
EN

Stack Overflow用户

发布于 2019-11-14 13:44:29

如果您已经运行了XSL,那么bezwaar元素会出现2次,并且会出现额外的名称空间,因为在同一个元素中有x:contextx:expect。如果您希望x:expectx:context相同,那么您可以尝试这段代码。

代码语言:javascript
复制
<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,那么您可以评论第一个模板匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58853810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档