2015-03-13 48 views
0
<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:str = "http://exslt.org/string" extension-element-prefixes="str"> 
<xsl:template name="padding"> 
    <xsl:param name="padChar" select="' '"/> 
    <xsl:param name="padVar"/> 
    <xsl:param name="length"/> 
    <xsl:choose> 
    <xsl:when test="$length > string-length($padVar) "> 

     <xsl:call-template name="padding"> 
      <xsl:with-param name="padChar" select="$padChar"/> 
      <xsl:with-param name="padVar" select="concat($padVar,$padChar)"/> 
      <xsl:with-param name="length" select="$length"/> 
     </xsl:call-template> 

    </xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="substring($padVar,1,$length)"/> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

<xsl:param name="member" /> 
<xsl:template match = "/"> 
    <xsl:for-each select="record/transaction"> 
     <transaction> 
     <!--  <xsl:template match="member"> 
        <xsl:call-template name="padding"/> 
       </xsl:template>--> 
       <xsl:template match = "date"> 
        <xsl:call-template name="padding"> 
         <xsl:with-param name = "padVar">20</with-param> 
         <xsl:with-param name = "length">50</with-param> 
       <!-- <xsl:value-of select = "str:align(date,str:padding(100))"/> --> 
        </xsl:call-template> 
       </xsl:template> 
       <type> 
        <xsl:value-of select = "type"/> 
       </type> 
       <amount> 
        <xsl:value-of select = "amount"/> 
       </amount> 
       <remark> 
        <xsl:value-of select = "remark"/> 
       </remark> 
      </transaction> 
     </xsl:for-each> 
</xsl:template> 
</xsl:stylesheet> 

我無法檢測到上述代碼中的錯誤。任何人都可以幫忙嗎?錯誤在傳遞參數的XSLT代碼?

我認爲錯誤是在我傳遞參數名稱的時候,當我調用模板時。另外,有人可以分享一個鏈接,我可以在哪裏瞭解XSLT參數?

+0

什麼是exactely症狀?提供一個示例輸入XML。 – potame 2015-03-13 08:12:43

+0

錯誤可能來自''。它必須位於樣式表中的或最上面的位置(在所有的標籤之前)。 – potame 2015-03-13 08:14:47

+3

這個錯誤幾乎肯定是因爲你在另一個模板匹配('')中嵌入了'「。這是不允許的,因爲模板必須是樣式表元素的直接子對象。如果你想知道如何改變你的XSLT來使它工作,我們真的需要看到你的輸入XML和你的期望輸出,並且讓你準確地解釋你想要達到的目標。謝謝! – 2015-03-13 09:02:41

回答

3

與撒克遜運行這樣的:首先嚐試生產

Error on line 33 column 61 of test.xsl: 
    SXXP0003: Error reported by XML parser: The element type "xsl:with-param" must be terminated by the matching end-tag "</xsl:with-param>". 

修復此產生:

Error at xsl:template on line 31 column 46 of test.xsl: 
    XTSE0010: An transaction element must not contain an xsl:template element 
Error at xsl:template on line 31 column 46 of test.xsl: 
    XTSE0010: Element xsl:template must be top-level (a child of xsl:stylesheet, xsl:transform, or xsl:package) 

這些都是很基本的錯誤,我希望你理解他們。如果您沒有看到用這些術語解釋問題的錯誤消息,那麼您可能需要考慮使用不同的開發環境。例如,有些人試圖通過直接在瀏覽器中運行XSLT代碼來開發XSLT代碼:當您發現錯誤時,這會給您帶來絕望的無法診斷。