?? xhtml2fo.xsl
字號:
parent::td)]">
<fo:block xsl:use-attribute-sets="p-initial-first">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<xsl:template match="blockquote">
<fo:block xsl:use-attribute-sets="blockquote">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<xsl:template match="pre">
<fo:block xsl:use-attribute-sets="pre">
<xsl:call-template name="process-pre"/>
</fo:block>
</xsl:template>
<xsl:template name="process-pre">
<xsl:call-template name="process-common-attributes"/>
<!-- remove leading CR/LF/CRLF char -->
<xsl:variable name="crlf"><xsl:text>
</xsl:text></xsl:variable>
<xsl:variable name="lf"><xsl:text>
</xsl:text></xsl:variable>
<xsl:variable name="cr"><xsl:text>
</xsl:text></xsl:variable>
<xsl:for-each select="node()">
<xsl:choose>
<xsl:when test="position() = 1 and self::text()">
<xsl:choose>
<xsl:when test="starts-with(., $lf)">
<xsl:value-of select="substring(., 2)"/>
</xsl:when>
<xsl:when test="starts-with(., $crlf)">
<xsl:value-of select="substring(., 3)"/>
</xsl:when>
<xsl:when test="starts-with(., $cr)">
<xsl:value-of select="substring(., 2)"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<xsl:template match="address">
<fo:block xsl:use-attribute-sets="address">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<xsl:template match="hr">
<fo:block xsl:use-attribute-sets="hr">
<xsl:call-template name="process-common-attributes"/>
</fo:block>
</xsl:template>
<xsl:template match="div">
<!-- need fo:block-container? or normal fo:block -->
<xsl:variable name="need-block-container">
<xsl:call-template name="need-block-container"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="$need-block-container = 'true'">
<fo:block-container>
<xsl:if test="@dir">
<xsl:attribute name="writing-mode">
<xsl:choose>
<xsl:when test="@dir = 'rtl'">rl-tb</xsl:when>
<xsl:otherwise>lr-tb</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<xsl:call-template name="process-common-attributes"/>
<fo:block start-indent="0pt" end-indent="0pt">
<xsl:apply-templates/>
</fo:block>
</fo:block-container>
</xsl:when>
<xsl:otherwise>
<!-- normal block -->
<fo:block>
<xsl:call-template name="process-common-attributes"/>
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="need-block-container">
<xsl:choose>
<xsl:when test="@dir">true</xsl:when>
<xsl:when test="@style">
<xsl:variable name="s"
select="concat(';', translate(normalize-space(@style),
' ', ''))"/>
<xsl:choose>
<xsl:when test="contains($s, ';width:') or
contains($s, ';height:') or
contains($s, ';position:absolute') or
contains($s, ';position:fixed') or
contains($s, ';writing-mode:')">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="center">
<fo:block text-align="center">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<xsl:template match="fieldset | form | dir | menu">
<fo:block space-before="1em" space-after="1em">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<!--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
List
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-->
<xsl:template match="ul">
<fo:list-block xsl:use-attribute-sets="ul">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:list-block>
</xsl:template>
<xsl:template match="li//ul">
<fo:list-block xsl:use-attribute-sets="ul-nested">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:list-block>
</xsl:template>
<xsl:template match="ol">
<fo:list-block xsl:use-attribute-sets="ol">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:list-block>
</xsl:template>
<xsl:template match="li//ol">
<fo:list-block xsl:use-attribute-sets="ol-nested">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:list-block>
</xsl:template>
<xsl:template match="ul/li">
<fo:list-item xsl:use-attribute-sets="ul-li">
<xsl:call-template name="process-ul-li"/>
</fo:list-item>
</xsl:template>
<xsl:template name="process-ul-li">
<xsl:call-template name="process-common-attributes"/>
<fo:list-item-label end-indent="label-end()"
text-align="end" wrap-option="no-wrap">
<fo:block>
<xsl:variable name="depth" select="count(ancestor::ul)" />
<xsl:choose>
<xsl:when test="$depth = 1">
<fo:inline xsl:use-attribute-sets="ul-label-1">
<xsl:value-of select="$ul-label-1"/>
</fo:inline>
</xsl:when>
<xsl:when test="$depth = 2">
<fo:inline xsl:use-attribute-sets="ul-label-2">
<xsl:value-of select="$ul-label-2"/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline xsl:use-attribute-sets="ul-label-3">
<xsl:value-of select="$ul-label-3"/>
</fo:inline>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</xsl:template>
<xsl:template match="ol/li">
<fo:list-item xsl:use-attribute-sets="ol-li">
<xsl:call-template name="process-ol-li"/>
</fo:list-item>
</xsl:template>
<xsl:template name="process-ol-li">
<xsl:call-template name="process-common-attributes"/>
<fo:list-item-label end-indent="label-end()"
text-align="end" wrap-option="no-wrap">
<fo:block>
<xsl:variable name="depth" select="count(ancestor::ol)" />
<xsl:choose>
<xsl:when test="$depth = 1">
<fo:inline xsl:use-attribute-sets="ol-label-1">
<xsl:number format="{$ol-label-1}"/>
</fo:inline>
</xsl:when>
<xsl:when test="$depth = 2">
<fo:inline xsl:use-attribute-sets="ol-label-2">
<xsl:number format="{$ol-label-2}"/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline xsl:use-attribute-sets="ol-label-3">
<xsl:number format="{$ol-label-3}"/>
</fo:inline>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</xsl:template>
<xsl:template match="dl">
<fo:block xsl:use-attribute-sets="dl">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<xsl:template match="dt">
<fo:block xsl:use-attribute-sets="dt">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<xsl:template match="dd">
<fo:block xsl:use-attribute-sets="dd">
<xsl:call-template name="process-common-attributes-and-children"/>
</fo:block>
</xsl:template>
<!--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Table
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-->
<xsl:template match="table">
<fo:table-and-caption xsl:use-attribute-sets="table-and-caption">
<xsl:call-template name="make-table-caption"/>
<fo:table xsl:use-attribute-sets="table">
<xsl:call-template name="process-table"/>
</fo:table>
</fo:table-and-caption>
</xsl:template>
<xsl:template name="make-table-caption">
<xsl:if test="caption/@align">
<xsl:attribute name="caption-side">
<xsl:value-of select="caption/@align"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="caption"/>
</xsl:template>
<xsl:template name="process-table">
<xsl:if test="@width">
<xsl:attribute name="inline-progression-dimension">
<xsl:choose>
<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:if test="@border or @frame">
<xsl:choose>
<xsl:when test="@border > 0">
<xsl:attribute name="border">
<xsl:value-of select="@border"/>px</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@border = '0' or @frame = 'void'">
<xsl:attribute name="border-style">hidden</xsl:attribute>
</xsl:when>
<xsl:when test="@frame = 'above'">
<xsl:attribute name="border-style">outset hidden hidden hidden</xsl:attribute>
</xsl:when>
<xsl:when test="@frame = 'below'">
<xsl:attribute name="border-style">hidden hidden outset hidden</xsl:attribute>
</xsl:when>
<xsl:when test="@frame = 'hsides'">
<xsl:attribute name="border-style">outset hidden</xsl:attribute>
</xsl:when>
<xsl:when test="@frame = 'vsides'">
<xsl:attribute name="border-style">hidden outset</xsl:attribute>
</xsl:when>
<xsl:when test="@frame = 'lhs'">
<xsl:attribute name="border-style">hidden hidden hidden outset</xsl:attribute>
</xsl:when>
<xsl:when test="@frame = 'rhs'">
<xsl:attribute name="border-style">hidden outset hidden hidden</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="border-style">outset</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="@cellspacing">
<xsl:attribute name="border-spacing">
<xsl:value-of select="@cellspacing"/>px</xsl:attribute>
<xsl:attribute name="border-collapse">separate</xsl:attribute>
</xsl:if>
<xsl:if test="@rules and (@rules = 'groups' or
@rules = 'rows' or
@rules = 'cols' or
@rules = 'all' and (not(@border or @frame) or
@border = '0' or @frame and
not(@frame = 'box' or @frame = 'border')))">
<xsl:attribute name="border-collapse">collapse</xsl:attribute>
<xsl:if test="not(@border or @frame)">
<xsl:attribute name="border-style">hidden</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:call-template name="process-common-attributes"/>
<xsl:apply-templates select="col | colgroup"/>
<xsl:apply-templates select="thead"/>
<xsl:apply-templates select="tfoot"/>
<xsl:choose>
<xsl:when test="tbody">
<xsl:apply-templates select="tbody"/>
</xsl:when>
<xsl:otherwise>
<fo:table-body xsl:use-attribute-sets="tbody">
<xsl:apply-templates select="tr"/>
</fo:table-body>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="caption">
<fo:table-caption xsl:use-attribute-sets="table-caption">
<xsl:call-template name="process-common-attributes"/>
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:table-caption>
</xsl:template>
<xsl:template match="thead">
<fo:table-header xsl:use-attribute-sets="thead">
<xsl:call-template name="process-table-rowgroup"/>
</fo:table-header>
</xsl:template>
<xsl:template match="tfoot">
<fo:table-footer xsl:use-attribute-sets="tfoot">
<xsl:call-template name="process-table-rowgroup"/>
</fo:table-footer>
</xsl:template>
<xsl:template match="tbody">
<fo:table-body xsl:use-attribute-sets="tbody">
<xsl:call-template name="process-table-rowgroup"/>
</fo:table-body>
</xsl:template>
<xsl:template name="process-table-rowgroup">
<xsl:if test="ancestor::table[1]/@rules = 'groups'">
<xsl:attribute name="border">1px solid</xsl:attribute>
</xsl:if>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -