?? xhtml2fo.xsl
字號(hào):
<xsl:call-template name="process-common-attributes-and-children"/>
</xsl:template>
<xsl:template match="colgroup">
<fo:table-column xsl:use-attribute-sets="table-column">
<xsl:call-template name="process-table-column"/>
</fo:table-column>
</xsl:template>
<xsl:template match="colgroup[col]">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="col">
<fo:table-column xsl:use-attribute-sets="table-column">
<xsl:call-template name="process-table-column"/>
</fo:table-column>
</xsl:template>
<xsl:template name="process-table-column">
<xsl:if test="parent::colgroup">
<xsl:call-template name="process-col-width">
<xsl:with-param name="width" select="../@width"/>
</xsl:call-template>
<xsl:call-template name="process-cell-align">
<xsl:with-param name="align" select="../@align"/>
</xsl:call-template>
<xsl:call-template name="process-cell-valign">
<xsl:with-param name="valign" select="../@valign"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="@span">
<xsl:attribute name="number-columns-repeated">
<xsl:value-of select="@span"/>
</xsl:attribute>
</xsl:if>
<xsl:call-template name="process-col-width">
<xsl:with-param name="width" select="@width"/>
<!-- it may override parent colgroup's width -->
</xsl:call-template>
<xsl:if test="ancestor::table[1]/@rules = 'cols'">
<xsl:attribute name="border">1px solid</xsl:attribute>
</xsl:if>
<xsl:call-template name="process-common-attributes"/>
<!-- this processes also align and valign -->
</xsl:template>
<xsl:template match="tr">
<fo:table-row xsl:use-attribute-sets="tr">
<xsl:call-template name="process-table-row"/>
</fo:table-row>
</xsl:template>
<xsl:template match="tr[parent::table and th and not(td)]">
<fo:table-row xsl:use-attribute-sets="tr" keep-with-next="always">
<xsl:call-template name="process-table-row"/>
</fo:table-row>
</xsl:template>
<xsl:template name="process-table-row">
<xsl:if test="ancestor::table[1]/@rules = 'rows'">
<xsl:attribute name="border">1px solid</xsl:attribute>
</xsl:if>
<xsl:call-template name="process-common-attributes-and-children"/>
</xsl:template>
<xsl:template match="th">
<fo:table-cell xsl:use-attribute-sets="th">
<xsl:call-template name="process-table-cell"/>
</fo:table-cell>
</xsl:template>
<xsl:template match="td">
<fo:table-cell xsl:use-attribute-sets="td">
<xsl:call-template name="process-table-cell"/>
</fo:table-cell>
</xsl:template>
<xsl:template name="process-table-cell">
<xsl:if test="@colspan">
<xsl:attribute name="number-columns-spanned">
<xsl:value-of select="@colspan"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@rowspan">
<xsl:attribute name="number-rows-spanned">
<xsl:value-of select="@rowspan"/>
</xsl:attribute>
</xsl:if>
<xsl:for-each select="ancestor::table[1]">
<xsl:if test="(@border or @rules) and (@rules = 'all' or
not(@rules) and not(@border = '0'))">
<xsl:attribute name="border-style">inset</xsl:attribute>
</xsl:if>
<xsl:if test="@cellpadding">
<xsl:attribute name="padding">
<xsl:choose>
<xsl:when test="contains(@cellpadding, '%')">
<xsl:value-of select="@cellpadding"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@cellpadding"/>px</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
</xsl:for-each>
<xsl:if test="not(@align or ../@align or
../parent::*[self::thead or self::tfoot or
self::tbody]/@align) and
ancestor::table[1]/*[self::col or
self::colgroup]/descendant-or-self::*/@align">
<xsl:attribute name="text-align">from-table-column()</xsl:attribute>
</xsl:if>
<xsl:if test="not(@valign or ../@valign or
../parent::*[self::thead or self::tfoot or
self::tbody]/@valign) and
ancestor::table[1]/*[self::col or
self::colgroup]/descendant-or-self::*/@valign">
<xsl:attribute name="display-align">from-table-column()</xsl:attribute>
<xsl:attribute name="relative-align">from-table-column()</xsl:attribute>
</xsl:if>
<xsl:call-template name="process-common-attributes"/>
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template name="process-col-width">
<xsl:param name="width"/>
<xsl:if test="$width and $width != '0*'">
<xsl:attribute name="column-width">
<xsl:choose>
<xsl:when test="contains($width, '*')">
<xsl:text>proportional-column-width(</xsl:text>
<xsl:value-of select="substring-before($width, '*')"/>
<xsl:text>)</xsl:text>
</xsl:when>
<xsl:when test="contains($width, '%')">
<xsl:value-of select="$width"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$width"/>px</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="process-cell-align">
<xsl:param name="align"/>
<xsl:if test="$align">
<xsl:attribute name="text-align">
<xsl:choose>
<xsl:when test="$align = 'char'">
<xsl:choose>
<xsl:when test="$align/../@char">
<xsl:value-of select="$align/../@char"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'.'"/>
<!-- todo: it should depend on xml:lang ... -->
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="process-cell-valign">
<xsl:param name="valign"/>
<xsl:if test="$valign">
<xsl:attribute name="display-align">
<xsl:choose>
<xsl:when test="$valign = 'middle'">center</xsl:when>
<xsl:when test="$valign = 'bottom'">after</xsl:when>
<xsl:when test="$valign = 'baseline'">auto</xsl:when>
<xsl:otherwise>before</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$valign = 'baseline'">
<xsl:attribute name="relative-align">baseline</xsl:attribute>
</xsl:if>
</xsl:if>
</xsl:template>
<!--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Inline-level
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-->
<xsl:template match="b">
<fo:inline xsl:use-attribute-sets="b">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="strong">
<fo:inline xsl:use-attribute-sets="strong">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="strong//em | em//strong">
<fo:inline xsl:use-attribute-sets="strong-em">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="i">
<fo:inline xsl:use-attribute-sets="i">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="cite">
<fo:inline xsl:use-attribute-sets="cite">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="em">
<fo:inline xsl:use-attribute-sets="em">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="var">
<fo:inline xsl:use-attribute-sets="var">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="dfn">
<fo:inline xsl:use-attribute-sets="dfn">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="tt">
<fo:inline xsl:use-attribute-sets="tt">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="code">
<fo:inline xsl:use-attribute-sets="code">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="kbd">
<fo:inline xsl:use-attribute-sets="kbd">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="samp">
<fo:inline xsl:use-attribute-sets="samp">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="big">
<fo:inline xsl:use-attribute-sets="big">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="small">
<fo:inline xsl:use-attribute-sets="small">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="sub">
<fo:inline xsl:use-attribute-sets="sub">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="sup">
<fo:inline xsl:use-attribute-sets="sup">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="s">
<fo:inline xsl:use-attribute-sets="s">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="strike">
<fo:inline xsl:use-attribute-sets="strike">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="del">
<fo:inline xsl:use-attribute-sets="del">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="u">
<fo:inline xsl:use-attribute-sets="u">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="ins">
<fo:inline xsl:use-attribute-sets="ins">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="abbr">
<fo:inline xsl:use-attribute-sets="abbr">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="acronym">
<fo:inline xsl:use-attribute-sets="acronym">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="span">
<fo:inline>
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:inline>
</xsl:template>
<xsl:template match="span[@dir]">
<fo:bidi-override direction="{@dir}" unicode-bidi="embed">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:bidi-override>
</xsl:template>
<xsl:template match="span[@style and contains(@style, 'writing-mode')]">
<fo:inline-container alignment-baseline="central"
text-indent="0pt"
last-line-end-indent="0pt"
start-indent="0pt"
end-indent="0pt"
text-align="center"
text-align-last="center">
<xsl:call-template name="process-common-attributes"/>
<fo:block wrap-option="no-wrap" line-height="1">
<xsl:apply-templates/>
</fo:block>
</fo:inline-container>
</xsl:template>
<xsl:template match="bdo">
<fo:bidi-override direction="{@dir}" unicode-bidi="bidi-override">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:bidi-override>
</xsl:template>
<xsl:template match="br">
<fo:block>
<xsl:call-template name="process-common-attributes"/>
</fo:block>
</xsl:template>
<xsl:template match="q">
<fo:inline xsl:use-attribute-sets="q">
<xsl:call-template name="process-common-attributes"/>
<xsl:choose>
<xsl:when test="lang('ja')">
<xsl:text>銆
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -