]> granicus.if.org Git - docbook-dsssl/commitdiff
Remove autoguessing of the namespace for wrapper elements; determine namespace by...
authorAlexey Neyman <stilor@att.net>
Fri, 18 Oct 2013 20:39:25 +0000 (20:39 +0000)
committerAlexey Neyman <stilor@att.net>
Fri, 18 Oct 2013 20:39:25 +0000 (20:39 +0000)
xsl/fo/titlepage.templates.xml
xsl/html/titlepage.templates.xml
xsl/slides/fo/plain-titlepage.xml
xsl/slides/xhtml/plain-titlepage.xml
xsl/template/titlepage.xsl
xsl/webhelp/xsl/titlepage.templates.xml

index a8a0960080d36c4c169a567ae093829130236ac0..250780b4fdb6aa1ae68cd0a8119ef32da54bf488 100644 (file)
 <!ENTITY hsize5space "18.6624pt"> <!-- 0.75 * hsize5 -->
 ]>
 <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
-            xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+             xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
              xmlns:fo="http://www.w3.org/1999/XSL/Format"
-             xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+             xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+             t:copy-namespaces="fo">
 
 <!-- ********************************************************************
      $Id$
index ce6166f0a3a3a7754a06dd8f59ff5bba0046fae3..8a41a648c2cfc4037d83edd42bebe4f1d3c4b127 100644 (file)
@@ -1,6 +1,7 @@
 <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
              xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
-             xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+             xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+             t:missing-namespace-ok="yes">
 
 <!-- ==================================================================== -->
 
index d817f130ce2946b6edf96927367ea749f133edb5..ed66128a26a1a70f631eccba7b2cd2b004faa411 100644 (file)
 ]>
 <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
              xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+             xmlns:dbs="http://docbook.org/ns/docbook-slides"
              xmlns:fo="http://www.w3.org/1999/XSL/Format"
-             xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+             xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+             t:copy-namespaces="dbs fo">
 
 <!-- ==================================================================== -->
 
index fb6569d7b8e107b19ff98dd9418828754e35ecb2..cd122729f61477c51768a0f04ccb08becd02aa74 100644 (file)
@@ -1,6 +1,9 @@
 <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
              xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
-             xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+             xmlns:dbs="http://docbook.org/ns/docbook-slides"
+             xmlns="http://www.w3.org/1999/xhtml"
+             xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+             t:copy-namespaces="dbs">
 
 <t:titlepage t:element="slides" t:wrapper="div" class="slide cover title">
   <t:titlepage-content t:side="recto">
index 857f2fc5dc5d5e68e8da7aad7cbe4707e2b1ca6d..b1ef3e1c7c5c36d9ee4e3c3c6d30d5190dfefb22 100644 (file)
 
 <!-- ==================================================================== -->
 
-<!-- Namespace for wrapper elements. Please set it for XHTML. -->
-<xsl:param name="ns">
-  <!-- Guess correct setting for cases where parameter is not supplied -->
-  <xsl:choose>
-    <xsl:when test="//*[namespace-uri() = 'http://www.w3.org/1999/XSL/Format']">http://www.w3.org/1999/XSL/Format</xsl:when>
-    <xsl:when test="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']">http://www.w3.org/1999/xhtml</xsl:when>
-  </xsl:choose>
-</xsl:param>
-
 <xsl:template match="/">
   <xsl:text>&#x0a;</xsl:text>
   <xsl:apply-templates/>
 <xsl:strip-space elements="xsl:* t:*"/>
 
 <!-- ==================================================================== -->
+  
+<doc:template name="get.namespace.prefix">
+<refpurpose>Obtain namespace prefix for an element identified by a string containing qualified name</refpurpose>
+<refdescription>
+<para>This template interprets a string containing a qualified name of an element
+and returns the namespace prefix, if any.</para>
+<para>Element name could be an XPath expression starting with the element name; this
+template will first determine if the occurrence of a colon is preceded by a valid
+NCName, assuming only ASCII characters.</para>
+</refdescription>
+</doc:template>
+  
+<xsl:template name="get.namespace.prefix">
+  <xsl:param name="element.name"/>
+  
+  <xsl:if test="contains($element.name, ':') and
+    translate(substring-before($element.name, ':'),
+    'ABCDEFGGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','') = ''">
+    <xsl:value-of select="substring-before($element.name, ':')"/>
+  </xsl:if>
+</xsl:template>
+  
+<doc:template name="get.namespace.uri">
+<refpurpose>Obtain URI for an element identified by a string containing qualified name</refpurpose>
+<refdescription>
+<para>This template interprets a string containing a qualified name of an element
+and returns the namespace URI for that element, looking for namespace prefixes
+starting from a reference node.</para>
+</refdescription>
+</doc:template>
+  
+<xsl:template name="get.namespace.uri">
+  <xsl:param name="element.name"/>
+  <xsl:param name="reference.node" select="."/>
+  <xsl:param name="missing.namespace.warning" select="not(/t:templates/@t:missing-namespace-ok = 'yes')"/>
+  
+  <xsl:variable name="ns.prefix">
+    <xsl:call-template name="get.namespace.prefix">
+      <xsl:with-param name="element.name" select="$element.name"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$reference.node/ancestor-or-self::*/namespace::*[local-name(.) = $ns.prefix]">
+      <xsl:value-of select="$reference.node/ancestor-or-self::*/namespace::*[local-name(.) = $ns.prefix]"/>
+    </xsl:when>
+    <xsl:when test="$missing.namespace.warning">
+      <xsl:message>
+        <xsl:text>WARNING: Namespace '</xsl:text>
+        <xsl:value-of select="$ns.prefix"/>
+        <xsl:text>' not defined for t:element="</xsl:text>
+        <xsl:value-of select="$element.name"/>
+        <xsl:text>"; if this is intentional (output has is not in a namespace), add </xsl:text>
+        <xsl:text>t:missing-namespace-ok="yes" attribute to t:templates to suppress this warning.</xsl:text>
+      </xsl:message>
+    </xsl:when>
+  </xsl:choose>
+</xsl:template>
+
+<doc:template name="output.wrapper">
+<refpurpose>Output the wrapper element</refpurpose>
+
+<refdescription>
+<para>This template locates the namespace for the defined wrapper element
+and output it within that namespace. The content of the element is passed
+via the content argument.</para>
+<para>The attribute sets to use for the wrapper element and the element to
+copy non-template attributes from are also passed as arguments.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="output.wrapper">
+  <xsl:param name="wrapper" select="ancestor-or-self::t:titlepage[@t:wrapper]"/>
+  <xsl:param name="attr.copy.from" select="."/>
+  <xsl:param name="attr.sets" select="''"/>
+  <xsl:param name="content"/>
+  
+  <xsl:variable name="ns.uri">
+    <xsl:call-template name="get.namespace.uri">
+      <xsl:with-param name="element.name" select="$wrapper/@t:wrapper"/>
+      <xsl:with-param name="reference.node" select="$wrapper"></xsl:with-param>
+    </xsl:call-template>
+  </xsl:variable>
+  
+  <xsl:element name="{$wrapper/@t:wrapper}" namespace="{$ns.uri}">
+    <xsl:if test="$attr.sets != ''">
+      <xsl:attribute name="xsl:use-attribute-sets"><xsl:value-of select="$attr.sets"/></xsl:attribute>
+    </xsl:if>
+    <xsl:for-each select="$attr.copy.from/@*">
+      <xsl:if test="not(starts-with(namespace-uri(.), 'http://nwalsh.com/docbook/xsl/template/1.0'))">
+        <xsl:copy/>
+      </xsl:if>
+    </xsl:for-each>
+    <xsl:copy-of select="$content"/>
+  </xsl:element>
+</xsl:template>
 
 <doc:template match="t:templates" xmlns="" id="templates">
 <refpurpose>Construct a stylesheet for the templates provided</refpurpose>
@@ -72,6 +159,11 @@ set of templates. This template creates an appropriate
 <para>If the <literal>t:templates</literal> element has a
 <literal>base-stylesheet</literal> attribute, an
 <literal>xsl:import</literal> statement is constructed for it.</para>
+
+<para>If the <literal>t:templates</literal> element has a
+<literal>copy-namespaces</literal> attribute, it is interpreted as a
+space-separated list of namespace prefixes to be copied from the template
+to the resulting stylesheet. Default namespace is always copied.</para>
 </refdescription>
 </doc:template>
 
@@ -82,6 +174,14 @@ set of templates. This template creates an appropriate
       <xsl:copy/>
     </xsl:for-each>
 
+    <!-- Two spaces at the beginning of $copied.ns so that the default namespace will be copied -->
+    <xsl:variable name="copied.ns" select="concat('  ',@t:copy-namespaces,' ')"/>
+    <xsl:for-each select="namespace::*">
+      <xsl:if test="contains($copied.ns,concat(' ',local-name(.),' '))">
+        <xsl:copy/>
+      </xsl:if>
+    </xsl:for-each>
+
     <xsl:attribute name="version">1.0</xsl:attribute>
     <xsl:attribute name="exclude-result-prefixes">exsl</xsl:attribute>
 
@@ -187,139 +287,142 @@ and <quote>verso</quote> sides of the title page.</para>
       <xsl:text>.titlepage</xsl:text>
     </xsl:attribute>
     <xsl:text>&#xA;  </xsl:text>
-    <xsl:element name="{@t:wrapper}" namespace="{$ns}">
-      <xsl:apply-templates select="@*" mode="copy.literal.atts"/>
-      <xsl:text>&#xA;    </xsl:text>
-      <xsl:element name="xsl:variable">
-        <xsl:attribute name="name">recto.content</xsl:attribute>
-        <xsl:text>&#xA;      </xsl:text>
-        <xsl:element name="xsl:call-template">
-          <xsl:attribute name="name">
-            <xsl:value-of select="@t:element"/>
-            <xsl:text>.titlepage.before.recto</xsl:text>
-          </xsl:attribute>
+    <xsl:call-template name="output.wrapper">
+      <xsl:with-param name="content">
+        <xsl:text>&#xA;    </xsl:text>
+        <xsl:element name="xsl:variable">
+          <xsl:attribute name="name">recto.content</xsl:attribute>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:element name="xsl:call-template">
+            <xsl:attribute name="name">
+              <xsl:value-of select="@t:element"/>
+              <xsl:text>.titlepage.before.recto</xsl:text>
+            </xsl:attribute>
+          </xsl:element>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:element name="xsl:call-template">
+            <xsl:attribute name="name">
+              <xsl:value-of select="@t:element"/>
+              <xsl:text>.titlepage.recto</xsl:text>
+            </xsl:attribute>
+          </xsl:element>
+          <xsl:text>&#xA;    </xsl:text>
         </xsl:element>
-        <xsl:text>&#xA;      </xsl:text>
-        <xsl:element name="xsl:call-template">
-          <xsl:attribute name="name">
-            <xsl:value-of select="@t:element"/>
-            <xsl:text>.titlepage.recto</xsl:text>
-          </xsl:attribute>
+        <xsl:text>&#xA;    </xsl:text>
+        <xsl:element name="xsl:variable">
+          <xsl:attribute name="name">recto.elements.count</xsl:attribute>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:element name="xsl:choose">
+            <xsl:text>&#xA;        </xsl:text>
+            <xsl:element name="xsl:when">
+              <xsl:attribute name="test">function-available('exsl:node-set')</xsl:attribute>
+              <xsl:element name="xsl:value-of">
+                <xsl:attribute name="select">count(exsl:node-set($recto.content)/*)</xsl:attribute>
+              </xsl:element>
+            </xsl:element>
+            <xsl:text>&#xA;        </xsl:text>
+            <xsl:element name="xsl:when">
+              <xsl:attribute name="test">contains(system-property('xsl:vendor'), 'Apache Software Foundation')</xsl:attribute>
+              <xsl:text>&#xA;          </xsl:text>
+              <xsl:comment>Xalan quirk</xsl:comment>
+              <xsl:element name="xsl:value-of">
+                <xsl:attribute name="select">count(exsl:node-set($recto.content)/*)</xsl:attribute>
+              </xsl:element>
+            </xsl:element>
+            <xsl:text>&#xA;        </xsl:text>
+            <xsl:element name="xsl:otherwise">
+              <xsl:text>1</xsl:text>
+            </xsl:element>
+            <xsl:text>&#xA;      </xsl:text>
+          </xsl:element>
+          <xsl:text>&#xA;    </xsl:text>
         </xsl:element>
         <xsl:text>&#xA;    </xsl:text>
-      </xsl:element>
-      <xsl:text>&#xA;    </xsl:text>
-      <xsl:element name="xsl:variable">
-       <xsl:attribute name="name">recto.elements.count</xsl:attribute>
-       <xsl:text>&#xA;      </xsl:text>
-       <xsl:element name="xsl:choose">
-         <xsl:text>&#xA;        </xsl:text>
-         <xsl:element name="xsl:when">
-           <xsl:attribute name="test">function-available('exsl:node-set')</xsl:attribute>
-           <xsl:element name="xsl:value-of">
-             <xsl:attribute name="select">count(exsl:node-set($recto.content)/*)</xsl:attribute>
-           </xsl:element>
-         </xsl:element>
-         <xsl:text>&#xA;        </xsl:text>
-         <xsl:element name="xsl:when">
-           <xsl:attribute name="test">contains(system-property('xsl:vendor'), 'Apache Software Foundation')</xsl:attribute>
-           <xsl:text>&#xA;          </xsl:text>
-           <xsl:comment>Xalan quirk</xsl:comment>
-           <xsl:element name="xsl:value-of">
-             <xsl:attribute name="select">count(exsl:node-set($recto.content)/*)</xsl:attribute>
-           </xsl:element>
-         </xsl:element>
-         <xsl:text>&#xA;        </xsl:text>
-         <xsl:element name="xsl:otherwise">
-           <xsl:text>1</xsl:text>
-         </xsl:element>
-         <xsl:text>&#xA;      </xsl:text>
-       </xsl:element>
-       <xsl:text>&#xA;    </xsl:text>
-      </xsl:element>
-      <xsl:text>&#xA;    </xsl:text>
-      <xsl:element name="xsl:if">
-        <xsl:attribute name="test">(normalize-space($recto.content) != '') or ($recto.elements.count > 0)</xsl:attribute>
-        <xsl:text>&#xA;      </xsl:text>
-        <xsl:element name="{@t:wrapper}" namespace="{$ns}">
-          <xsl:apply-templates select="t:titlepage-content[@t:side='recto']/@*"
-                               mode="copy.literal.atts"/>
-          <xsl:element name="xsl:copy-of">
-            <xsl:attribute name="select">$recto.content</xsl:attribute>
+        <xsl:element name="xsl:if">
+          <xsl:attribute name="test">(normalize-space($recto.content) != '') or ($recto.elements.count > 0)</xsl:attribute>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:call-template name="output.wrapper">
+            <xsl:with-param name="attr.copy.from" select="t:titlepage-content[@t:side='recto']"/>
+            <xsl:with-param name="content">
+              <xsl:element name="xsl:copy-of">
+                <xsl:attribute name="select">$recto.content</xsl:attribute>
+              </xsl:element>
+            </xsl:with-param>
+          </xsl:call-template>
+          <xsl:text>&#xA;    </xsl:text>
+        </xsl:element>
+        <xsl:text>&#xA;    </xsl:text>
+        <xsl:element name="xsl:variable">
+          <xsl:attribute name="name">verso.content</xsl:attribute>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:element name="xsl:call-template">
+            <xsl:attribute name="name">
+              <xsl:value-of select="@t:element"/>
+              <xsl:text>.titlepage.before.verso</xsl:text>
+            </xsl:attribute>
           </xsl:element>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:element name="xsl:call-template">
+            <xsl:attribute name="name">
+              <xsl:value-of select="@t:element"/>
+              <xsl:text>.titlepage.verso</xsl:text>
+            </xsl:attribute>
+          </xsl:element>
+          <xsl:text>&#xA;    </xsl:text>
         </xsl:element>
         <xsl:text>&#xA;    </xsl:text>
-      </xsl:element>
-      <xsl:text>&#xA;    </xsl:text>
-      <xsl:element name="xsl:variable">
-        <xsl:attribute name="name">verso.content</xsl:attribute>
-        <xsl:text>&#xA;      </xsl:text>
-        <xsl:element name="xsl:call-template">
-          <xsl:attribute name="name">
-            <xsl:value-of select="@t:element"/>
-            <xsl:text>.titlepage.before.verso</xsl:text>
-          </xsl:attribute>
+        <xsl:element name="xsl:variable">
+          <xsl:attribute name="name">verso.elements.count</xsl:attribute>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:element name="xsl:choose">
+            <xsl:text>&#xA;        </xsl:text>
+            <xsl:element name="xsl:when">
+              <xsl:attribute name="test">function-available('exsl:node-set')</xsl:attribute>
+              <xsl:element name="xsl:value-of">
+                <xsl:attribute name="select">count(exsl:node-set($verso.content)/*)</xsl:attribute>
+              </xsl:element>
+            </xsl:element>
+            <xsl:text>&#xA;        </xsl:text>
+            <xsl:element name="xsl:when">
+              <xsl:attribute name="test">contains(system-property('xsl:vendor'), 'Apache Software Foundation')</xsl:attribute>
+              <xsl:text>&#xA;          </xsl:text>
+              <xsl:comment>Xalan quirk</xsl:comment>
+              <xsl:element name="xsl:value-of">
+                <xsl:attribute name="select">count(exsl:node-set($verso.content)/*)</xsl:attribute>
+              </xsl:element>
+            </xsl:element>
+            <xsl:text>&#xA;        </xsl:text>
+            <xsl:element name="xsl:otherwise">
+              <xsl:text>1</xsl:text>
+            </xsl:element>
+            <xsl:text>&#xA;      </xsl:text>
+          </xsl:element>
+          <xsl:text>&#xA;    </xsl:text>
+        </xsl:element>
+        <xsl:text>&#xA;    </xsl:text>
+        <xsl:element name="xsl:if">
+          <xsl:attribute name="test">(normalize-space($verso.content) != '') or ($verso.elements.count > 0)</xsl:attribute>
+          <xsl:text>&#xA;      </xsl:text>
+          <xsl:call-template name="output.wrapper">
+            <xsl:with-param name="attr.copy.from" select="t:titlepage-content[@t:side='verso']"/>
+            <xsl:with-param name="content">
+              <xsl:element name="xsl:copy-of">
+                <xsl:attribute name="select">$verso.content</xsl:attribute>
+              </xsl:element>
+            </xsl:with-param>
+          </xsl:call-template>
+          <xsl:text>&#xA;    </xsl:text>
         </xsl:element>
-        <xsl:text>&#xA;      </xsl:text>
+        <xsl:text>&#xA;    </xsl:text>
         <xsl:element name="xsl:call-template">
           <xsl:attribute name="name">
             <xsl:value-of select="@t:element"/>
-            <xsl:text>.titlepage.verso</xsl:text>
+            <xsl:text>.titlepage.separator</xsl:text>
           </xsl:attribute>
         </xsl:element>
-        <xsl:text>&#xA;    </xsl:text>
-      </xsl:element>
-      <xsl:text>&#xA;    </xsl:text>
-      <xsl:element name="xsl:variable">
-       <xsl:attribute name="name">verso.elements.count</xsl:attribute>
-       <xsl:text>&#xA;      </xsl:text>
-       <xsl:element name="xsl:choose">
-         <xsl:text>&#xA;        </xsl:text>
-         <xsl:element name="xsl:when">
-           <xsl:attribute name="test">function-available('exsl:node-set')</xsl:attribute>
-           <xsl:element name="xsl:value-of">
-             <xsl:attribute name="select">count(exsl:node-set($verso.content)/*)</xsl:attribute>
-           </xsl:element>
-         </xsl:element>
-         <xsl:text>&#xA;        </xsl:text>
-         <xsl:element name="xsl:when">
-           <xsl:attribute name="test">contains(system-property('xsl:vendor'), 'Apache Software Foundation')</xsl:attribute>
-           <xsl:text>&#xA;          </xsl:text>
-           <xsl:comment>Xalan quirk</xsl:comment>
-           <xsl:element name="xsl:value-of">
-             <xsl:attribute name="select">count(exsl:node-set($verso.content)/*)</xsl:attribute>
-           </xsl:element>
-         </xsl:element>
-         <xsl:text>&#xA;        </xsl:text>
-         <xsl:element name="xsl:otherwise">
-           <xsl:text>1</xsl:text>
-         </xsl:element>
-         <xsl:text>&#xA;      </xsl:text>
-       </xsl:element>
-       <xsl:text>&#xA;    </xsl:text>
-      </xsl:element>
-      <xsl:text>&#xA;    </xsl:text>
-      <xsl:element name="xsl:if">
-        <xsl:attribute name="test">(normalize-space($verso.content) != '') or ($verso.elements.count > 0)</xsl:attribute>
-        <xsl:text>&#xA;      </xsl:text>
-        <xsl:element name="{@t:wrapper}" namespace="{$ns}">
-          <xsl:apply-templates select="t:titlepage-content[@t:side='verso']/@*"
-                               mode="copy.literal.atts"/>
-          <xsl:element name="xsl:copy-of">
-            <xsl:attribute name="select">$verso.content</xsl:attribute>
-          </xsl:element>
-        </xsl:element>
-        <xsl:text>&#xA;    </xsl:text>
-      </xsl:element>
-      <xsl:text>&#xA;    </xsl:text>
-      <xsl:element name="xsl:call-template">
-        <xsl:attribute name="name">
-          <xsl:value-of select="@t:element"/>
-          <xsl:text>.titlepage.separator</xsl:text>
-        </xsl:attribute>
-      </xsl:element>
-      <xsl:text>&#xA;  </xsl:text>
-    </xsl:element>
+        <xsl:text>&#xA;  </xsl:text>
+      </xsl:with-param>
+    </xsl:call-template>
     <xsl:text>&#xA;</xsl:text>
   </xsl:element>
 
@@ -391,86 +494,60 @@ and <quote>verso</quote> sides of the title page.</para>
           <xsl:text>.auto.mode</xsl:text>
         </xsl:attribute>
         <xsl:text>&#xA;</xsl:text>
-        <xsl:element name="{../../@t:wrapper}" namespace="{$ns}">
-          <xsl:attribute name="xsl:use-attribute-sets">
+        <xsl:call-template name="output.wrapper">
+          <xsl:with-param name="attr.sets">
             <xsl:value-of select="../../@t:element"/>
             <xsl:text>.titlepage.</xsl:text>
             <xsl:value-of select="../@t:side"/>
             <xsl:text>.style</xsl:text>
-          </xsl:attribute>
-          <xsl:for-each select="@*">
-            <xsl:if test="not(starts-with(namespace-uri(.),
-                                'http://nwalsh.com/docbook/xsl/template/1.0'))">
-              <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
-                <xsl:value-of select="."/>
-              </xsl:attribute>
-            </xsl:if>
-          </xsl:for-each>
-          <xsl:text>&#xA;</xsl:text>
+          </xsl:with-param>
+          <xsl:with-param name="content">
+            <xsl:text>&#xA;</xsl:text>
 
-          <xsl:choose>
-            <xsl:when test="@t:named-template">
-              <xsl:element name="xsl:call-template">
-                <xsl:attribute name="name">
-                  <xsl:value-of select="@t:named-template"/>
-                </xsl:attribute>
-                <xsl:for-each select="@*">
-                  <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
-                    <xsl:text>&#xA;</xsl:text>
-                    <xsl:element name="xsl:with-param">
-                      <xsl:attribute name="name">
-                        <xsl:value-of select="local-name(.)"/>
-                      </xsl:attribute>
-                      <xsl:attribute name="select">
-                        <xsl:value-of select="."/>
-                      </xsl:attribute>
-                    </xsl:element>
-                  </xsl:if>
-                </xsl:for-each>
-                <xsl:text>&#xA;</xsl:text>
-              </xsl:element>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:element name="xsl:apply-templates">
-                <xsl:attribute name="select">.</xsl:attribute>
-                <xsl:attribute name="mode">
-                  <xsl:value-of select="../../@t:element"/>
-                  <xsl:text>.titlepage.</xsl:text>
-                  <xsl:value-of select="../@t:side"/>
-                  <xsl:text>.mode</xsl:text>
-                </xsl:attribute>
-              </xsl:element>
-            </xsl:otherwise>
-          </xsl:choose>
+            <xsl:choose>
+              <xsl:when test="@t:named-template">
+                <xsl:element name="xsl:call-template">
+                  <xsl:attribute name="name">
+                    <xsl:value-of select="@t:named-template"/>
+                  </xsl:attribute>
+                  <xsl:for-each select="@*">
+                    <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
+                      <xsl:text>&#xA;</xsl:text>
+                      <xsl:element name="xsl:with-param">
+                        <xsl:attribute name="name">
+                          <xsl:value-of select="local-name(.)"/>
+                        </xsl:attribute>
+                        <xsl:attribute name="select">
+                          <xsl:value-of select="."/>
+                        </xsl:attribute>
+                      </xsl:element>
+                    </xsl:if>
+                  </xsl:for-each>
+                  <xsl:text>&#xA;</xsl:text>
+                </xsl:element>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:element name="xsl:apply-templates">
+                  <xsl:attribute name="select">.</xsl:attribute>
+                  <xsl:attribute name="mode">
+                    <xsl:value-of select="../../@t:element"/>
+                    <xsl:text>.titlepage.</xsl:text>
+                    <xsl:value-of select="../@t:side"/>
+                    <xsl:text>.mode</xsl:text>
+                  </xsl:attribute>
+                </xsl:element>
+              </xsl:otherwise>
+            </xsl:choose>
 
-          <xsl:text>&#xA;</xsl:text>
-        </xsl:element>
+            <xsl:text>&#xA;</xsl:text>
+          </xsl:with-param>
+        </xsl:call-template>
         <xsl:text>&#xA;</xsl:text>
       </xsl:element>
     </xsl:if>
   </xsl:for-each>
 </xsl:template>
 
-<doc:template match="@*" mode="copy.literal.atts" xmlns=""
-              id="attr_star_in_copy.literal.atts">
-<refpurpose>Copy t:titlepage attributes</refpurpose>
-
-<refdescription>
-<para>This template copies all of the <quote>other</quote> attributes
-from a <literal>t:titlepage</literal> element onto the specified
-wrapper.</para>
-</refdescription>
-</doc:template>
-
-<xsl:template match="@*" mode="copy.literal.atts">
-  <xsl:if test="not(starts-with(namespace-uri(.),
-                                'http://nwalsh.com/docbook/xsl/template/1.0'))">
-    <xsl:attribute name="{name(.)}">
-      <xsl:value-of select="."/>
-    </xsl:attribute>
-  </xsl:if>
-</xsl:template>
-
 <!-- ==================================================================== -->
 
 <doc:template match="t:titlepage-content" id="titlepage-content">
@@ -914,42 +991,36 @@ names.</para>
     <xsl:when test="@t:force and @t:force != '0'">
       <xsl:choose>
         <xsl:when test="@t:named-template">
-          <xsl:element name="{../../@t:wrapper}" namespace="{$ns}">
-            <xsl:attribute name="xsl:use-attribute-sets">
+          <xsl:call-template name="output.wrapper">
+            <xsl:with-param name="attr.sets">
               <xsl:value-of select="../../@t:element"/>
               <xsl:text>.titlepage.</xsl:text>
               <xsl:value-of select="../@t:side"/>
               <xsl:text>.style</xsl:text>
-            </xsl:attribute>
-            <xsl:for-each select="@*">
-              <xsl:if test="not(starts-with(namespace-uri(.),
-                                  'http://nwalsh.com/docbook/xsl/template/1.0'))">
-                <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
-                  <xsl:value-of select="."/>
-                </xsl:attribute>
-              </xsl:if>
-            </xsl:for-each>
-            <xsl:text>&#xA;</xsl:text>
-            <xsl:element name="xsl:call-template">
-              <xsl:attribute name="name">
-                <xsl:value-of select="@t:named-template"/>
-              </xsl:attribute>
-              <xsl:for-each select="@*">
-                <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
-                  <xsl:text>&#xA;</xsl:text>
-                  <xsl:element name="xsl:with-param">
-                    <xsl:attribute name="name">
-                      <xsl:value-of select="local-name(.)"/>
-                    </xsl:attribute>
-                    <xsl:attribute name="select">
-                      <xsl:value-of select="."/>
-                    </xsl:attribute>
-                  </xsl:element>
-                </xsl:if>
-              </xsl:for-each>
+            </xsl:with-param>
+            <xsl:with-param name="content">
               <xsl:text>&#xA;</xsl:text>
-            </xsl:element>
-          </xsl:element>
+              <xsl:element name="xsl:call-template">
+                <xsl:attribute name="name">
+                  <xsl:value-of select="@t:named-template"/>
+                </xsl:attribute>
+                <xsl:for-each select="@*">
+                  <xsl:if test="namespace-uri(.)='http://nwalsh.com/docbook/xsl/template/1.0/param'">
+                    <xsl:text>&#xA;</xsl:text>
+                    <xsl:element name="xsl:with-param">
+                      <xsl:attribute name="name">
+                        <xsl:value-of select="local-name(.)"/>
+                      </xsl:attribute>
+                      <xsl:attribute name="select">
+                        <xsl:value-of select="."/>
+                      </xsl:attribute>
+                    </xsl:element>
+                  </xsl:if>
+                </xsl:for-each>
+                <xsl:text>&#xA;</xsl:text>
+              </xsl:element>
+            </xsl:with-param>
+          </xsl:call-template>
         </xsl:when>
         <xsl:otherwise>
           <xsl:message terminate="yes">
index c24642938a905fa3cb18068a097222539de9258e..685cb63a632b8b7af891f975487055316ad08d83 100644 (file)
@@ -1,6 +1,7 @@
 <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
              xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
-             xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+             xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+             t:missing-namespace-ok="yes">
 
 <!-- ==================================================================== -->