Marklogic XSLT异常处理

时间:2014-03-26 10:57:50

标签: xml xslt marklogic

我正在尝试处理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>

1 个答案:

答案 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>