1 | <?xml version='1.0'?>
|
---|
2 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
---|
3 | xmlns:ng="http://docbook.org/docbook-ng"
|
---|
4 | xmlns:db="http://docbook.org/ns/docbook"
|
---|
5 | xmlns:exsl="http://exslt.org/common"
|
---|
6 | exclude-result-prefixes="exsl db ng"
|
---|
7 | version='1.0'>
|
---|
8 |
|
---|
9 | <!-- ********************************************************************
|
---|
10 | $Id: stripns.xsl,v 1.2 2005/05/29 09:27:08 xmldoc Exp $
|
---|
11 | ********************************************************************
|
---|
12 |
|
---|
13 | This file is part of the XSL DocBook Stylesheet distribution.
|
---|
14 | See ../README or http://docbook.sf.net/release/xsl/current/ for
|
---|
15 | copyright and other information.
|
---|
16 |
|
---|
17 | ******************************************************************** -->
|
---|
18 |
|
---|
19 | <!-- Standalone stylesheet for stripping namespaces from DocBook 5/NG -->
|
---|
20 | <!-- docs. You currently need to do two-pass processing to use this: First, -->
|
---|
21 | <!-- transform your DocBook 5/NG source doc using this, then transform the -->
|
---|
22 | <!-- result as usual with the manpages/docbook.xsl stylesheet. Of course -->
|
---|
23 | <!-- you can always run the process using a pipe if you want. Example: -->
|
---|
24 |
|
---|
25 | <!-- xsltproc ./manpages/stripns.xsl myRefEntry.xml \ -->
|
---|
26 | <!-- | xsltproc ./manpages/docbook.xsl - -->
|
---|
27 |
|
---|
28 | <!-- It may be that there is actually some way to set it up as a -->
|
---|
29 | <!-- single-pass XSLT process, as is done with the HTML stylesheets. But -->
|
---|
30 | <!-- I've not yet figured out how to get that towork... -Mike -->
|
---|
31 |
|
---|
32 | <!-- ==================================================================== -->
|
---|
33 |
|
---|
34 | <xsl:output method="xml"
|
---|
35 | encoding="ISO-8859-1"
|
---|
36 | indent="no"/>
|
---|
37 |
|
---|
38 | <xsl:template match="node() | @*">
|
---|
39 | <xsl:copy>
|
---|
40 | <xsl:apply-templates select="@* | node()"/>
|
---|
41 | </xsl:copy>
|
---|
42 | </xsl:template>
|
---|
43 |
|
---|
44 | <!-- ==================================================================== -->
|
---|
45 |
|
---|
46 | <xsl:template match="/">
|
---|
47 | <xsl:choose>
|
---|
48 | <xsl:when test="function-available('exsl:node-set')
|
---|
49 | and (*/self::ng:* or */self::db:*)">
|
---|
50 | <!-- see comment in html/docbook.xsl -->
|
---|
51 | <xsl:message>Stripping NS from DocBook 5/NG document.</xsl:message>
|
---|
52 | <xsl:variable name="nons">
|
---|
53 | <xsl:apply-templates mode="stripNS"/>
|
---|
54 | </xsl:variable>
|
---|
55 | <xsl:message>Processing stripped document.</xsl:message>
|
---|
56 | <xsl:apply-templates select="exsl:node-set($nons)"/>
|
---|
57 | </xsl:when>
|
---|
58 | <xsl:otherwise>
|
---|
59 | <xsl:apply-templates/>
|
---|
60 | </xsl:otherwise>
|
---|
61 | </xsl:choose>
|
---|
62 | </xsl:template>
|
---|
63 |
|
---|
64 | <!-- ==================================================================== -->
|
---|
65 |
|
---|
66 | <xsl:template match="*" mode="stripNS">
|
---|
67 | <xsl:choose>
|
---|
68 | <xsl:when test="self::ng:* or self::db:*">
|
---|
69 | <xsl:element name="{local-name(.)}">
|
---|
70 | <xsl:copy-of select="@*"/>
|
---|
71 | <xsl:apply-templates mode="stripNS"/>
|
---|
72 | </xsl:element>
|
---|
73 | </xsl:when>
|
---|
74 | <xsl:otherwise>
|
---|
75 | <xsl:copy>
|
---|
76 | <xsl:copy-of select="@*"/>
|
---|
77 | <xsl:apply-templates mode="stripNS"/>
|
---|
78 | </xsl:copy>
|
---|
79 | </xsl:otherwise>
|
---|
80 | </xsl:choose>
|
---|
81 | </xsl:template>
|
---|
82 |
|
---|
83 | <xsl:template match="ng:link|db:link" mode="stripNS">
|
---|
84 | <xsl:variable xmlns:xlink="http://www.w3.org/1999/xlink"
|
---|
85 | name="href" select="@xlink:href|@href"/>
|
---|
86 | <xsl:choose>
|
---|
87 | <xsl:when test="$href != '' and not(starts-with($href,'#'))">
|
---|
88 | <ulink url="{$href}">
|
---|
89 | <xsl:for-each select="@*">
|
---|
90 | <xsl:if test="local-name(.) != 'href'">
|
---|
91 | <xsl:copy/>
|
---|
92 | </xsl:if>
|
---|
93 | </xsl:for-each>
|
---|
94 | <xsl:apply-templates mode="stripNS"/>
|
---|
95 | </ulink>
|
---|
96 | </xsl:when>
|
---|
97 | <xsl:when test="$href != '' and starts-with($href,'#')">
|
---|
98 | <link linkend="{substring-after($href,'#')}">
|
---|
99 | <xsl:for-each select="@*">
|
---|
100 | <xsl:if test="local-name(.) != 'href'">
|
---|
101 | <xsl:copy/>
|
---|
102 | </xsl:if>
|
---|
103 | </xsl:for-each>
|
---|
104 | <xsl:apply-templates mode="stripNS"/>
|
---|
105 | </link>
|
---|
106 | </xsl:when>
|
---|
107 | <xsl:otherwise>
|
---|
108 | <link>
|
---|
109 | <xsl:copy-of select="@*"/>
|
---|
110 | <xsl:apply-templates mode="stripNS"/>
|
---|
111 | </link>
|
---|
112 | </xsl:otherwise>
|
---|
113 | </xsl:choose>
|
---|
114 | </xsl:template>
|
---|
115 |
|
---|
116 | <xsl:template match="comment()|processing-instruction()|text()" mode="stripNS">
|
---|
117 | <xsl:copy/>
|
---|
118 | </xsl:template>
|
---|
119 |
|
---|
120 | </xsl:stylesheet>
|
---|