如果元素不存在,是否可以强制XSLT转换失败?

时间:2018-01-08 00:45:42

标签: xml xslt value-of

我们正在使用XSLT样式表从大型XML文件中提取数据并将其写入CSV文件。

将值写入CSV的代码通常如下所示:

...
<xsl:value-of select="$quote"/>
<xsl:value-of select="pbs:code"/>
<xsl:value-of select="$quote"/>
<xsl:value-of select="$delimiter"/>
...

如果输入XML不是预期的格式,我真的希望转换失败。 如果缺少元素(即样式表期望的元素),有没有办法强制转换失败?

1 个答案:

答案 0 :(得分:2)

检查元素是否存在有两种可能性:

  • 一个是<xsl:fallback>来检查XSL中的元素是否无效(对版本检查有用)
  • 另一个是<xsl:message>来检查XML中的元素是否无效。

在您的情况下,第二个变体将是最佳选择 因此,请将<xsl:message>与属性terminate="yes"一起使用,如下所示:

...
<xsl:if test="not($qoute)">
  <xsl:message terminate="yes">
    ERROR: $quote is not present!
  </xsl:message>
</xsl:if>
<xsl:value-of select="$quote"/>
...

如果$quote不是有效元素,这将使用给定的错误消息中断XSLT转换。

相关问题