2014-03-26 67 views
2

我想在處理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:抓孩子顯然是有。但是,這段代碼不會導致任何錯誤,但顯然它並沒有做任何事情。

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

回答

4

這是解析器中的一個錯誤。解決方法是在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> 
+0

謝謝你是我的英雄! – Vlad

+0

這可能在xslt 1.0中嗎?或者它只是xslt 2.0 –