xslt - 关于 xsl:try xsl:catch 中的错误信息的问题
问题描述
代码来自:try-catch-examples:
<xsl:result-document href="out.xml">
<xsl:variable name="result">
<xsl:call-template name="construct-output"/>
</xsl:variable>
<xsl:try>
<xsl:copy-of select="$result" validation="strict"/>
<xsl:catch>
<xsl:message>Warning: validation of result document failed:
Error code: <xsl:value-of select="$err:code"/>
Reason: <xsl:value-of select="$err:description"/>
</xsl:message>
<xsl:sequence select="$result"/>
</xsl:catch>
</xsl:try>
</xsl:result-document>
$err:code
,是什么语法$err:description
?" $err
" 似乎是一个变量,为什么后面是冒号?它是什么类型的?是什么类型code
,description
?一个关键字符串?
解决方案
$err:code, $err:description 的语法是什么?"$err" 似乎是一个变量,为什么后面跟一个冒号?它是什么类型的?什么类型的代码,描述?一个关键字符串?
$somePrefix:localName
是一个变量引用,其名称属于一个命名空间,并且前缀somePrefix
与该命名空间相关联。
在这种特殊情况下,err
前缀与标准错误命名空间相关联:http://www.w3.org/2005/xqt-errors
XSLT 3.0 Specification中解释了确切的含义:
“在 select 表达式中,或在 xsl:catch 元素包含的序列构造函数中,隐式声明了许多变量,提供有关发生的错误的信息。这些变量的词法范围为 xsl:catch 元素。这些变量都是在标准错误命名空间中,它们的初始化如下表所述:"
上面引用中的短语:“隐式声明了许多变量xsl:catch
”是理解元素中如何捕获错误的关键
这意味着每当在 中捕获错误时xsl:catch
,XSLT 处理器本身都会创建这些变量,并将它们提供给程序员以在xsl:catch
元素范围内使用。
我们可以说这些变量中的每一个都是一个“ future ”,它可以由 XSLT 处理器创建,充当一个“ promise ”——确切的含义参见: “ Futures and promises ”
推荐阅读
- python - python烧瓶:如果request.method =='POST'附加到表单
- c# - 无法将 Apple Id 添加到 Visual Studio 2019
- python - Python,在一行中没有for循环的情况下搜索不在dict中的子字符串
- ios - 如何使用 UITextChecker 查找拼写错误的单词
- react-native - 平面列表不呈现数据
- mysql - 使用 JPA 在复合主键上创建多个外键时出现问题
- python-3.x - 编写程序以删除重复元素时列表索引超出范围
- sql - 具有非自动生成 ID 的 JPA 批量插入
- node.js - 如何使用 PM2 仅将一个特定的 nodeJS 应用程序部署到一个特定的环境?
- wpf - 为什么我的位图图像显示在设计器中,但不显示在 .EXE 中