我无法解释为什么GWT不接受XSL:中如下声明的变量
<xsl:variable name="writeMode">
<xsl:choose>
<xsl:when test="$lang ='fa'">
<xsl:value-of select="'rl-tb'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'lr-tb'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4-portrait"
page-height="29.7cm" page-width="21.0cm" margin="2cm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4-portrait">
<fo:flow flow-name="xsl-region-body">
<fo:block-container write-mode="{$writeMode}" font-family="{$font}" language="{$lang}">
<fo:block>
بهترین قیمت دوچرخه کوهستان موجود است.
</fo:block>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
我得到的错误:
'在"fo:block container"上遇到无效属性:写入模式(没有可用的上下文信息)'
wg4.bean.ancestor.TechniqueException: Error generating PDF file : org.apache.fop.fo.ValidationException: Invalid property encountered on "fo:block-container": write-mode (No context info available)
有什么想法吗?非常感谢。
修复了它。在使用写模式选项时出现了一个拼写错误:
而不是
write-mode="{$writeMode}"
应该是
writing-mode="{$writingMode}".
当然,我将变量值赋值重命名为:
<xsl:variable name="writingMode">
<xsl:if test="$langue='fa'">
<xsl:value-of select="'rl-tb'"/>
</xsl:if>
</xsl:variable>
因为默认值是lt tb。HTH