我正在尝试处理XSLT样式表时处理异常。例外情况是由于数据混乱。我有一段代码:
<span class="ReceiptCell Date">
<xdmp:try>
<xsl:variable name="node" />
<xsl:value-of select="_1:Date"/>
<xsl:value-of select="if (empty($node)) then '(A)' else xdmp:strftime('%d %b %Y',//_1:Date)"/>
<xdmp:catch name="e">
ERROR Rendering Date
<xsl:copy-of select="$e"/>
</xdmp:catch>
</xdmp:try>
</span>
当此代码在服务器上运行时,我收到以下错误:
2014-03-26 10:40:09.900 Notice: TaxesTime-Search: XSLT-ELTREQ: (err:XTSE0010)
Missing required element child: xdmp:catch required at
fn:doc("/lib/transform-abstract-metadata.xsl")/*:stylesheet/*:template[3]/*:span/*:try
这是没有意义的,因为xdmp:catch孩子显然在那里。但是,此代码不会导致任何错误,但显然它实际上没有做任何事情。
<span class="ReceiptCell Date">
<xdmp:try>
<xdmp:catch name="e">
<xsl:variable name="node" />
<xsl:value-of select="_1:Date"/>
<xsl:value-of select="if (empty($node)) then '(A)' else xdmp:strftime('%d %b %Y',//_1:Date)"/>
ERROR Rendering Date
<xsl:copy-of select="$e"/>
</xdmp:catch>
</xdmp:try>
</span>
答案 0 :(得分:3)
这是解析器中的一个错误。解决方法是在xdmp:try之前只有一个子元素,例如
<span class="ReceiptCell Date">
<xsl:variable name="node" />
<xsl:value-of select="_1:Date"/>
<xdmp:try>
<xsl:value-of select="if (empty($node)) then '(A)' else xdmp:strftime('%d %b %Y',//_1:Date)"/>
<xdmp:catch name="e">
ERROR Rendering Date
<xsl:copy-of select="$e"/>
</xdmp:catch>
</xdmp:try>
</span>