| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!-- $Id$ --> |
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
| xmlns:fo="http://www.w3.org/1999/XSL/Format" |
| xmlns:fox="http://xmlgraphics.apache.org/fop/extensions" |
| xmlns:foi="http://xmlgraphics.apache.org/fop/internal"> |
| |
| <xsl:output method="xml" indent="yes"/> |
| |
| <xsl:template name="copy"> |
| <xsl:copy> |
| <xsl:apply-templates select="@*|node()"/> |
| </xsl:copy> |
| </xsl:template> |
| |
| |
| <!-- Ignore fo:root --> |
| <xsl:template match="fo:root"> |
| <structure-tree-sequence> |
| <xsl:apply-templates/> |
| </structure-tree-sequence> |
| </xsl:template> |
| |
| <!-- fo:page-sequence maps to structure-tree --> |
| <xsl:template match="fo:page-sequence"> |
| <structure-tree xmlns="http://xmlgraphics.apache.org/fop/intermediate"> |
| <xsl:apply-templates/> |
| </structure-tree> |
| </xsl:template> |
| |
| |
| <!-- Declarations and Pagination and Layout Formatting Objects --> |
| <xsl:template match="fo:static-content|fo:flow"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <xsl:template match="fo:static-content/@flow-name|fo:flow/@flow-name"> |
| <xsl:choose> |
| <xsl:when test=". = 'xsl-region-body' or |
| . = 'xsl-region-before' or |
| . = 'xsl-region-after' or |
| . = 'xsl-region-start' or |
| . = 'xsl-region-end' or |
| . = 'xsl-before-float-separator' or |
| . = 'xsl-footnote-separator'"> |
| <xsl:copy/> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:attribute name="{local-name()}"> |
| <xsl:value-of select="concat('xsl-', local-name(//*[@region-name = current()]))"/> |
| </xsl:attribute> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:template> |
| |
| <!-- Block-level Formatting Objects --> |
| <xsl:template match="fo:block|fo:block-container"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <!-- Inline-level Formatting Objects --> |
| <xsl:template match="fo:character|fo:inline|fo:inline-container"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <xsl:template match="fo:external-graphic|fo:instream-foreign-object"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <xsl:template match="fo:page-number|fo:page-number-citation|fo:page-number-citation-last"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <!-- Formatting Objects for Tables --> |
| <xsl:template match="fo:table-and-caption|fo:table-caption"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <xsl:template match="fo:table|fo:table-header|fo:table-footer|fo:table-body|fo:table-row"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <xsl:template name="get.column.header"> |
| <xsl:value-of select="ancestor::fo:table/fo:table-column[ |
| count(preceding-sibling::fo:table-column) = count(current()/preceding-sibling::fo:table-cell)]/@fox:header"/> |
| </xsl:template> |
| |
| <xsl:template match="fo:table-cell"> |
| <xsl:variable name="header"><xsl:call-template name="get.column.header"/></xsl:variable> |
| <xsl:copy> |
| <xsl:if test="$header = 'true'"> |
| <xsl:attribute name="role">TH</xsl:attribute> |
| <xsl:attribute name="scope" namespace="http://xmlgraphics.apache.org/fop/internal">Row</xsl:attribute> |
| </xsl:if> |
| <xsl:apply-templates select="@*|node()"/> |
| </xsl:copy> |
| </xsl:template> |
| |
| <xsl:template match="fo:table-header/fo:table-cell|fo:table-header/fo:table-row/fo:table-cell"> |
| <xsl:variable name="header"><xsl:call-template name="get.column.header"/></xsl:variable> |
| <xsl:copy> |
| <xsl:attribute name="role">TH</xsl:attribute> |
| <xsl:if test="$header = 'true'"> |
| <xsl:attribute name="scope" namespace="http://xmlgraphics.apache.org/fop/internal">Both</xsl:attribute> |
| </xsl:if> |
| <xsl:apply-templates select="@*|node()"/> |
| </xsl:copy> |
| </xsl:template> |
| |
| <!-- Formatting Objects for Lists --> |
| <xsl:template match="fo:list-block|fo:list-item|fo:list-item-label|fo:list-item-body"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <!-- Dynamic Effects: Link and Multi Formatting Objects --> |
| <xsl:template match="fo:basic-link"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <!-- Out-of-Line Formatting Objects --> |
| <xsl:template match="fo:float|fo:footnote|fo:footnote-body"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <!-- Other Formatting Objects --> |
| <xsl:template match="fo:wrapper|fo:marker"> |
| <xsl:call-template name="copy"/> |
| </xsl:template> |
| |
| <xsl:template match="fo:wrapper[translate(normalize-space(@role), 'ARTIFCT', 'artifct') = 'artifact']"/> |
| |
| <xsl:template match="fo:table-header[@role = 'artifact']"/> |
| <xsl:template match="fo:table-footer[@role = 'artifact']"/> |
| |
| <!-- Discard descendants of fo:leader --> |
| <xsl:template match="fo:leader"/> |
| |
| |
| <!-- Keep the relevant attributes, discard everything else --> |
| <xsl:template match="@fox:alt-text|@role|@fox:abbreviation"> |
| <xsl:copy-of select="."/> |
| </xsl:template> |
| |
| <xsl:template match="fo:block/@language[. != ../ancestor::*[@language][1]/@language] |
| |fo:character/@language[. != ../ancestor::*[@language][1]/@language]"> |
| <xsl:attribute name="xml:lang"> |
| <xsl:value-of select="."/> |
| <xsl:if test="../@country[. != 'none']"> |
| <xsl:text>-</xsl:text> |
| <xsl:value-of select="../@country"/> |
| </xsl:if> |
| </xsl:attribute> |
| </xsl:template> |
| |
| <xsl:template match="@*"/> |
| |
| |
| <!-- Discard text nodes... --> |
| <xsl:template match="text()"/> |
| |
| <!-- ...except those that will result into marked content --> |
| <xsl:template match="fo:title/text() |
| |fo:block/text() |
| |fo:bidi-override/text() |
| |fo:inline/text() |
| |fo:basic-link/text() |
| |fo:wrapper/text() |
| |fo:marker/text()"> |
| <marked-content xmlns="http://xmlgraphics.apache.org/fop/intermediate"/> |
| </xsl:template> |
| |
| </xsl:stylesheet> |