我们正在使用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不是预期的格式,我真的希望转换失败。 如果缺少元素(即样式表期望的元素),有没有办法强制转换失败?
答案 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转换。