我想有一个var /属性,我设置边框样式并引用它,如果我想将边框从1pt更改为2pt我不需要在不同的位置更改它。
例如我现在这样做;
<fo:table border="1pt solid black" table-layout="fixed"
width="100%" display-align="center">
<fo:table-column column-width="10%" border-right="1pt solid black"/>
<fo:table-column column-width="10%" border-right="1pt solid black"/>
<fo:table-column column-width="23%" border-right="1pt solid black"/>
<fo:table-column column-width="8%" border-right="1pt solid black"/>
<fo:table-column column-width="11%" border-right="1pt solid black"/>
<fo:table-column column-width="8%" border-right="1pt solid black"/>
<fo:table-column column-width="20%" border-right="1pt solid black"/>
<fo:table-header>...
我更喜欢这样的东西;
<xsl:variable
name="border"
select="1pt solid black">
</xsl:variable>
<fo:table border="$border" table-layout="fixed"
width="100%" display-align="center">
<fo:table-column column-width="10%" border-right="$border"/>
<fo:table-column column-width="10%" border-right="$border"/>
<fo:table-column column-width="23%" border-right="$border"/>
<fo:table-column column-width="8%" border-right="$border"/>
<fo:table-column column-width="11%" border-right="$border"/>
<fo:table-column column-width="8%" border-right="$border"/>
<fo:table-column column-width="20%" border-right="$border"/>
<fo:table-header>...
所以我的问题确实是可能的,如果是这样,那么正确的语法是什么?
任何帮助都会很棒,
提前致谢!
答案 0 :(得分:1)
像这样定义变量(使用撇号,表示文字字符串,而不是xpath表达式)
<xsl:variable name="border" select="'1pt solid black'" />
然后,使用Attribute Value Templates在属性
中使用它<fo:table-column column-width="20%" border-right="{$border}"/>
或者,您可以使用Attribute Sets实现此目的。定义像这样的属性集
<xsl:attribute-set name="border">
<xsl:attribute name="border-right" select="'12pt solid black'" />
</xsl:attribute-set>
然后按如下方式使用
<fo:table-column column-width="20%" xsl:use-attribute-sets="border"/>
使用属性集,您可以在集合中拥有多个属性。