如果元素不存在,是否可以强制 XSLT 转换失败?
Is it possible to force XSLT transformation to fail if an element does not exist?
我们正在使用 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 不是预期的格式,我真的希望转换失败。
如果缺少元素(即样式表期望的元素),是否有任何方法可以强制转换失败?
检查元素是否存在有两种可能性:
- 一个是
<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 转换并给出错误消息。
我们正在使用 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 不是预期的格式,我真的希望转换失败。 如果缺少元素(即样式表期望的元素),是否有任何方法可以强制转换失败?
检查元素是否存在有两种可能性:
- 一个是
<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 转换并给出错误消息。