diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-03-28 19:43:32 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-03-28 19:44:49 (GMT) |
commit | 3afa4f741c26360245dc313bc368f508b26a6b96 (patch) | |
tree | 4fc9fedac990a099010fed8a4ee09ddc51c21cc5 /3rdParty/DocBook/XSL/common/stripns.xsl | |
parent | 7548dabae7d10e48816142e508be651ada9f7bc3 (diff) | |
download | swift-contrib-3afa4f741c26360245dc313bc368f508b26a6b96.zip swift-contrib-3afa4f741c26360245dc313bc368f508b26a6b96.tar.bz2 |
Added DocBook infrastructure.
Imported most of "DocBook kit".
Added placeholder for Swiften developers guide.
Diffstat (limited to '3rdParty/DocBook/XSL/common/stripns.xsl')
-rw-r--r-- | 3rdParty/DocBook/XSL/common/stripns.xsl | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/3rdParty/DocBook/XSL/common/stripns.xsl b/3rdParty/DocBook/XSL/common/stripns.xsl new file mode 100644 index 0000000..303062f --- /dev/null +++ b/3rdParty/DocBook/XSL/common/stripns.xsl @@ -0,0 +1,287 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + xmlns:saxon="http://icl.com/saxon" + xmlns:NodeInfo="http://org.apache.xalan.lib.NodeInfo" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="db ng exsl saxon NodeInfo" + version='1.0'> + +<!-- ******************************************************************** + $Id: stripns.xsl 8349 2009-03-17 06:53:03Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- put an xml:base attribute on the root element --> +<xsl:template match="/*" mode="stripNS"> + <xsl:choose> + <xsl:when test="self::ng:* or self::db:*"> + <xsl:element name="{local-name(.)}"> + <xsl:copy-of select="@*[not(name(.) = 'xml:id') + and not(name(.) = 'version')]"/> + <xsl:if test="@xml:id"> + <xsl:attribute name="id"> + <xsl:value-of select="@xml:id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="add-xml-base"/> + + <xsl:apply-templates mode="stripNS"/> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:copy-of select="@*[not(name(.) = 'xml:id') + and not(name(.) = 'version')]"/> + <xsl:if test="@xml:id"> + <xsl:attribute name="id"> + <xsl:value-of select="@xml:id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="add-xml-base"/> + + <xsl:apply-templates mode="stripNS"/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="stripNS"> + <xsl:choose> + <xsl:when test="self::ng:* or self::db:*"> + <xsl:element name="{local-name(.)}"> + <xsl:copy-of select="@*[not(name(.) = 'xml:id') + and not(name(.) = 'version')]"/> + <xsl:if test="@xml:id"> + <xsl:attribute name="id"> + <xsl:value-of select="@xml:id"/> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates mode="stripNS"/> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:copy-of select="@*[not(name(.) = 'xml:id') + and not(name(.) = 'version')]"/> + <xsl:if test="@xml:id"> + <xsl:attribute name="id"> + <xsl:value-of select="@xml:id"/> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates mode="stripNS"/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="db:info" mode="stripNS"> + <xsl:variable name="info"> + <xsl:choose> + <xsl:when test="parent::db:article + |parent::db:appendix + |parent::db:bibliography + |parent::db:book + |parent::db:chapter + |parent::db:glossary + |parent::db:index + |parent::db:part + |parent::db:preface + |parent::db:refentry + |parent::db:reference + |parent::db:refsect1 + |parent::db:refsect2 + |parent::db:refsect3 + |parent::db:refsection + |parent::db:refsynopsisdiv + |parent::db:sect1 + |parent::db:sect2 + |parent::db:sect3 + |parent::db:sect4 + |parent::db:sect5 + |parent::db:section + |parent::db:setindex + |parent::db:set + |parent::db:slides + |parent::db:sidebar"> + <xsl:value-of select="local-name(parent::*)"/> + <xsl:text>info</xsl:text> + </xsl:when> + <xsl:when test="parent::db:audioobject + |parent::db:imageobject + |parent::db:inlinemediaobject + |parent::db:mediaobject + |parent::db:mediaobjectco + |parent::db:textobject + |parent::db:videoobject"> + <xsl:text>objectinfo</xsl:text> + </xsl:when> + <xsl:otherwise>blockinfo</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:element name="{$info}"> + <xsl:copy-of select="@*[not(name(.) = 'xml:id') + and not(name(.) = 'version')]"/> + <xsl:if test="@xml:id"> + <xsl:attribute name="id"> + <xsl:value-of select="@xml:id"/> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates mode="stripNS"/> + </xsl:element> + + <xsl:if test="(not(../db:title) and not(../ng:title)) + and ($info = 'prefaceinfo' + or $info = 'chapterinfo' + or $info = 'sectioninfo' + or $info = 'sect1info' + or $info = 'sect2info' + or $info = 'sect3info' + or $info = 'sect4info' + or $info = 'sect5info' + or $info = 'refsectioninfo' + or $info = 'refsect1info' + or $info = 'refsect2info' + or $info = 'refsect3info' + or $info = 'blockinfo' + or $info = 'appendixinfo')"> + <xsl:apply-templates select="db:title|ng:title" mode="stripNS"/> + </xsl:if> + +</xsl:template> + +<xsl:template match="ng:tag|db:tag" mode="stripNS"> + <sgmltag> + <xsl:copy-of select="@*[not(name(.) = 'xml:id') + and not(name(.) = 'version')]"/> + <xsl:apply-templates mode="stripNS"/> + </sgmltag> +</xsl:template> + +<xsl:template match="ng:textdata|db:textdata + |ng:imagedata|db:imagedata + |ng:videodata|db:videodata + |ng:audiodata|db:audiodata" mode="stripNS"> + <xsl:element name="{local-name(.)}"> + <xsl:copy-of select="@*[not(name(.) = 'xml:id') + and not(name(.) = 'version') + and not(name(.) = 'entityref')]"/> + <xsl:if test="@xml:id"> + <xsl:attribute name="id"> + <xsl:value-of select="@xml:id"/> + </xsl:attribute> + </xsl:if> + + <xsl:choose> + <xsl:when test="@entityref"> + <xsl:attribute name="fileref"> + <xsl:value-of select="unparsed-entity-uri(@entityref)"/> + </xsl:attribute> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="stripNS"/> + </xsl:element> +</xsl:template> + +<xsl:template name="add-xml-base"> + <xsl:if test="not(@xml:base)"> + <xsl:variable name="base"> + <xsl:choose> + <xsl:when test="function-available('saxon:systemId')"> + <xsl:value-of select="saxon:systemId()"/> + </xsl:when> + <xsl:when test="function-available('NodeInfo:systemId')"> + <xsl:value-of select="NodeInfo:systemId()"/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>WARNING: cannot add @xml:base to node </xsl:text> + <xsl:text>set root element. </xsl:text> + <xsl:text>Relative paths may not work.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- debug + <xsl:message>base is <xsl:value-of select="$base"/></xsl:message> + --> + <xsl:if test="$base != ''"> + <xsl:attribute name="xml:base"> + <xsl:call-template name="systemIdToBaseURI"> + <xsl:with-param name="systemId"> + <!-- file: seems to confuse some processors. --> + <xsl:choose> + <!-- however, windows paths must use file:///c:/path --> + <xsl:when test="starts-with($base, 'file:///') and + substring($base, 10, 1) = ':'"> + <xsl:value-of select="$base"/> + </xsl:when> + <xsl:when test="starts-with($base, 'file:/') + and substring($base, 8, 1) = ':'"> + <xsl:value-of select="concat('file:///', + substring-after($base,'file:/'))"/> + </xsl:when> + <xsl:when test="starts-with($base, 'file:///')"> + <xsl:value-of select="substring-after($base,'file://')"/> + </xsl:when> + <xsl:when test="starts-with($base, 'file://')"> + <xsl:value-of select="substring-after($base,'file:/')"/> + </xsl:when> + <xsl:when test="starts-with($base, 'file:/')"> + <xsl:value-of select="substring-after($base,'file:')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$base"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:attribute> + </xsl:if> + </xsl:if> +</xsl:template> + +<xsl:template name="systemIdToBaseURI"> + <xsl:param name="systemId" select="''"/> + <xsl:if test="contains($systemId,'/')"> + <xsl:value-of select="substring-before($systemId,'/')"/> + <xsl:text>/</xsl:text> + <xsl:call-template name="systemIdToBaseURI"> + <xsl:with-param name="systemId" + select="substring-after($systemId,'/')"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<xsl:template match="comment()|processing-instruction()|text()" mode="stripNS"> + <xsl:copy/> +</xsl:template> + +<xsl:template match="/" priority="-1"> + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0 + and (*/self::ng:* or */self::db:*)"> + <xsl:message>Stripping namespace from DocBook 5 document.</xsl:message> + <xsl:variable name="nons"> + <xsl:apply-templates mode="stripNS"/> + </xsl:variable> + <xsl:message>Processing stripped document.</xsl:message> + <xsl:apply-templates select="exsl:node-set($nons)"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="@* | node()"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> |