2011-12-16 39 views
1

我想通過組織/ xalan(2.7.1)轉換我的xml。 apache.xalan.xslt.Process類xslt錯誤:額外的非法令牌:'eq',''中心''當通過xala/java轉換我的xml通過xsl/xslt

我得到「額外非法令牌」,而不是確定工作都是圍繞

我基本上要在一個參數傳遞給一個模板,然後使用該參數作爲屬性的一個<xsl:when test="$textAlign eq 'center'">

如果我通過一個'center' param到TableCell模板,我想創建一個表格單元格,它的文本居中,當然,'left'會得到它的內容左對齊。

錯誤消息在抱怨圍繞中心之旅起來的'center'

引號,似乎像它應該沒問題。

這裏有幾個片段(樣本XML和XSL)

<ingredients>   
      <ingredient> 
       <quantity>1 1/2</quantity> 
       <foodstuff>flour</foodstuff> 
      </ingredient> 
    </ingredients> 

,這裏是一個示例XSL

<xsl:output method="html"/> 
<xsl:template match="ingredients"> 
     <xsl:apply-templates select="ingredient"/> 
</xsl:template> 
. 
<xsl:template match="ingredient"> 
    <xsl:call-template name="TableCell"> 
     <xsl:with-param name="cellValue" select="quantity" /> 
     <xsl:with-param name="textAlign" select="'center'" /> 
    </xsl:call-template> 
</xsl:template> 
. 
<xsl:template name="TableCell"> 
    <xsl:param name="cellValue" /> 
    <xsl:param name="textAlign" /> 
    <xsl:choose> 
     <xsl:when test="$textAlign eq 'center'"> 
     <td align='center'> 
     <xsl:value-of select="$cellValue"/> 
     </td> 
    </xsl:when> 
    </xsl:choose> 
</xsl:template> 

也許有另一種方式來做到這一點?我認爲這是很簡單,但我想我只是不熟悉足夠的XSL

我使用的Xalan 2.7.1我的XSL引擎

org.apache.xalan.xslt.Process -IN test.xml -XSL test.xsl -OUT out.html 

感謝大家

回答

4

eq是引入運營商XPath和XSLT 2.0,您使用的Xalan僅支持XPath和XSLT 1.0,因此請使用=運算符。 或者從Xalan轉移到Saxon 9(http://saxon.sourceforge.net/),該處理器支持XSLT 2.0。

+0

dang it,我應該注意到,我實際上使用FOP轉換爲PDF,所以儘可能使用最新的xslt/xpath 2.0,我認爲它可能比只是交換jar更多的工作。感謝您的回覆 – user825402 2011-12-17 02:11:49