]> granicus.if.org Git - docbook-dsssl/commitdiff
modified wordml-to-docbook chain for improved reliability
authorSteve Ball <balls@users.sourceforge.net>
Mon, 20 Dec 2004 12:08:23 +0000 (12:08 +0000)
committerSteve Ball <balls@users.sourceforge.net>
Mon, 20 Dec 2004 12:08:23 +0000 (12:08 +0000)
xsl/wordml/Makefile [new file with mode: 0644]
xsl/wordml/README
xsl/wordml/docbook.xsl
xsl/wordml/sections-spec.xml [new file with mode: 0644]
xsl/wordml/specifications.xml
xsl/wordml/template.xml
xsl/wordml/wordml-final.xsl [new file with mode: 0644]
xsl/wordml/wordml-normalise.xsl [new file with mode: 0644]
xsl/wordml/wordml-sections.xsl [new file with mode: 0644]
xsl/wordml/wordml.xsl

diff --git a/xsl/wordml/Makefile b/xsl/wordml/Makefile
new file mode 100644 (file)
index 0000000..4ff14c8
--- /dev/null
@@ -0,0 +1,21 @@
+STYLESHEETDIR = .
+
+WORDML = $(STYLESHEETDIR)/docbook.xsl
+DBKNORM = $(STYLESHEETDIR)/wordml-normalise.xsl
+DBKSECTS = $(STYLESHEETDIR)/wordml-sections.xsl
+DBKFINAL = $(STYLESHEETDIR)/wordml-final.xsl
+TEMPLATE = /Users/steve/Projects/docbook-cvs/xsl/wordml/template.xml
+
+PROC = xsltproc
+
+%.docbook.xml: %.sects.xml $(DBKFINAL) Makefile
+       $(PROC) -o $@ $(DBKFINAL) $<
+
+%.sects.xml: %.norm.xml $(DBKSECTS) Makefile
+       $(PROC) -o $@ $(DBKSECTS) $<
+
+%.norm.xml: %.wordml.xml $(DBKNORM) Makefile
+       $(PROC) -o $@ $(DBKNORM) $<
+
+%.wordml.xml : %.xml $(WORDML) Makefile
+       xsltproc -o $@ --stringparam wordml.template $(TEMPLATE) $(WORDML) $<
index 9075d7ef9e2dd2dc3e6afe34f76cc2ceb84545a9..55b3ad5ea33a1b5c87514e0d0eb3a470b34ad2b9 100644 (file)
@@ -2,7 +2,9 @@
 
        Steve Ball, Bob Stayton
 
-docbook.xsl    Accepts DocBook XML and produces WordML
-wordml.xsl     Accepts WordML and produces DocBook XML
-
+docbook.xsl            Accepts DocBook XML and produces WordML
+wordml-normalise.xsl   Accepts WordML and produces (1)
+wordml-sections.xsl    Accepts (1) and produces (2)
+wordml-final.xsl       Accepts (2) and produces DocBook XML
 
+wordml-*.xsl form a chain of XSL stylesheets to convert WordML into DocBook.
index ef4477bb82b89633c3decf657cc1c29d1b7fab75..9915a224610083fd6267d5c5eb7a58de7fd1b016 100755 (executable)
@@ -12,7 +12,7 @@
   xmlns:doc='http://www.oasis-open.org/docbook/xml/4.0'
   exclude-result-prefixes='doc'>
 
-  <xsl:output method="xml" indent='yes' standalone='yes' encoding='UTF-8'/>
+  <xsl:output method="xml" indent='no' standalone='yes' encoding='UTF-8'/>
 
   <!-- ********************************************************************
        $Id$
   <xsl:template match='book|article' mode='toplevel'>
     <w:body>
       <wx:sect>
-        <xsl:apply-templates select='*'/>
+        <wx:sub-section>
+          <xsl:apply-templates select='*'/>
+        </wx:sub-section>
       </wx:sect>
     </w:body>
   </xsl:template>
   <xsl:template match='*' mode='toplevel'>
     <w:body>
       <wx:sect>
-        <xsl:apply-templates select='*'/>
+        <wx:sub-section>
+          <xsl:apply-templates select='*'/>
+        </wx:sub-section>
       </wx:sect>
     </w:body>
   </xsl:template>
     </wx:sub-section>
   </xsl:template>
 
+  <xsl:template match='articleinfo|bookinfo'>
+    <xsl:apply-templates select='title|subtitle|titleabbrev'/>
+    <xsl:apply-templates select='author'/>
+    <!-- current implementation ignores all other metadata -->
+  </xsl:template>
+
   <xsl:template match='title|subtitle|titleabbrev'>
     <w:p>
       <w:pPr>
             </xsl:choose>
           </xsl:attribute>
         </w:pStyle>
-        <w:outlineLvl w:val='{count(ancestor::*) + count(parent::*[contains(name(), "info")]) - 1}'/>
+        <w:outlineLvl w:val='{count(ancestor::*) - count(parent::*[contains(name(), "info")]) - 1}'/>
       </w:pPr>
 
       <xsl:apply-templates/>
   <xsl:template match='listitem'>
     <w:p>
       <w:pPr>
+        <!-- variablelist listitems are not handled here -->
+        <w:pStyle w:val='{name(..)}{count(ancestor::itemizedlist|ancestor::orderedlist)}'/>
         <w:listPr>
           <wx:t wx:val='&#xB7;'/>
           <wx:font wx:val='Symbol'/>
         </w:listPr>
       </w:pPr>
-      <xsl:apply-templates select='para' mode='list'/>
+      <!-- Normally a para would be the first child of a listitem -->
+      <xsl:apply-templates select='*[1][self::para]/node()' mode='list'/>
     </w:p>
+    <!-- This is to catch the case where a listitem's first child is not a paragraph.
+       - We may not be able to represent this properly.
+      -->
+    <xsl:apply-templates select='*[1][not(self::para)]' mode='list'/>
+
+    <xsl:apply-templates select='*[position() != 1]' mode='list'/>
   </xsl:template>  
 
   <xsl:template match='*' mode='list'>
-    <xsl:apply-templates/>
+    <xsl:apply-templates select='.'>
+      <xsl:with-param name='class' select='"para-continue"'/>
+    </xsl:apply-templates>
   </xsl:template>
 
   <xsl:template match='variablelist'>
diff --git a/xsl/wordml/sections-spec.xml b/xsl/wordml/sections-spec.xml
new file mode 100644 (file)
index 0000000..15e4dd8
--- /dev/null
@@ -0,0 +1,42 @@
+<group:root xmlns:group='http://www.zveno.com/grouping'>
+  <book styles='book book-title'>
+    <group:level>
+      <group:element name='article' styles='article article-title'/>
+      <group:element name='appendix' styles='appendix appendix-title'/>
+      <group:element name='chapter' styles='chapter chapter-title'/>
+      <group:element name='preface' styles='preface preface-title'/>
+
+      <sect1 styles='sect1 sect1-title'>
+       <sect2 styles='sect2 sect2-title'>
+         <sect3 styles='sect3 sect3-title'>
+            <sect4 styles='sect4 sect4-title'>
+             <sect5 styles='sect5 sect5-title'/>
+           </sect4>
+         </sect3>
+       </sect2>
+      </sect1>
+    </group:level>
+  </book>
+  <group:level>
+    <group:element name='article' styles='article article-title'/>
+    <group:element name='appendix' styles='appendix appendix-title'/>
+    <group:element name='chapter' styles='chapter chapter-title'/>
+    <group:element name='preface' styles='preface preface-title'/>
+
+    <sect1 styles='sect1 sect1-title'>
+      <sect2 styles='sect2 sect2-title'>
+       <sect3 styles='sect3 sect3-title'>
+          <sect4 styles='sect4 sect4-title'>
+           <sect5 styles='sect5 sect5-title'/>
+         </sect4>
+       </sect3>
+      </sect2>
+    </sect1>
+  </group:level>
+  <glossary styles='glossary glossary-title'>
+    <glossdiv styles='glossdiv glossdiv-title'/>
+  </glossary>
+  <bibliography styles='bibliography bibliography-title'>
+    <bibliodiv styles='bibliodiv bibliodiv-title'/>
+  </bibliography>
+</group:root>
index 5c30a5a3e8ff05baefafdfc11614ea0b8bd177f4..18b3f5342d0128e9ed4fa5b2370913e0f5254798 100755 (executable)
@@ -81,6 +81,9 @@ dated 5 November, 2004</releaseinfo>
 <para>Here are the design principles used in this project for selecting Word style names:</para>
 <itemizedlist>
 <listitem>
+<para>Where Word, by default, has a style or feature that corresponds directly to a DocBook element then that style or feature will be used (and documented in this document).  For example, the <literal>Normal</literal> paragraph style maps to a DocBook <sgmltag>para</sgmltag> element, and a Word table (<sgmltag>w:tbl</sgmltag>) maps to a DocBook <sgmltag>table</sgmltag><footnote><para>In some cases Word may posess a feature, but it doesn't function in an acceptable manner.  For example, lists.  In these cases the feature is to be avoided, and a workaround provided.</para></footnote>.</para>
+</listitem>
+<listitem>
 <para>Word paragraph and character style names will match DocBook element names as much as possible. This will enable authors to learn DocBook element names, and help debug problems with conversion.</para>
 </listitem>
 <listitem>
@@ -277,7 +280,7 @@ colwidth="1.00*"/>
 </row>
 <row>
 <entry colname="col1">para</entry>
-<entry colname="col2">para</entry>
+<entry colname="col2">para, Normal</entry>
 <entry colname="col3">Any Word paragraph with style <literal>Normal</literal> will also be converted to a <sgmltag class="element">para</sgmltag> element.</entry>
 </row>
 <row>
index 35b5c673b349c1205f445557d5a0ef8919f08529..ebda1ff924bf9bf7d123132a979a897b6b8781ae 100644 (file)
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <?mso-application progid="Word.Document"?>
-<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><o:DocumentProperties><o:Title>This document left intentionally blank</o:Title><o:Author>Steve Ball</o:Author><o:LastAuthor>Steve Ball</o:LastAuthor><o:Revision>14</o:Revision><o:TotalTime>55</o:TotalTime><o:Created>2004-10-04T23:25:00Z</o:Created><o:LastSaved>2004-11-15T02:42:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>5</o:Words><o:Characters>35</o:Characters><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>39</o:CharactersWithSpaces><o:Version>11.6113</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000000" w:usb-1="10000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Arial Narrow"><w:panose-1 w:val="020B0506020202030204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000287" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="0000009F" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="1FB77228"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:styleLink w:val="itemizedlist1"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="38E8493E"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="17E4C930"/><w:lvl w:ilvl="0" w:tplc="2F90EBE6"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="note"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="3FEC0422"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:styleLink w:val="itemizedlist"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="5F8E0F88"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="1"/></w:list><w:list w:ilfo="2"><w:ilst w:val="2"/></w:list><w:list w:ilfo="3"><w:ilst w:val="0"/></w:list><w:list w:ilfo="4"><w:ilst w:val="3"/></w:list></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="007E454C"/><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="section-title"><w:name w:val="section-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="section-title"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="section-subtitle"><w:name w:val="section-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="section-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="section-titleabbrev"><w:name w:val="section-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="section-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-title"><w:name w:val="book-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="book-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-subtitle"><w:name w:val="book-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="book-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-titleabbrev"><w:name w:val="book-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="book-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-title"><w:name w:val="article-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="article-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-subtitle"><w:name w:val="article-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="article-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-titleabbrev"><w:name w:val="article-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="article-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote"><w:name w:val="blockquote"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="blockquote"/><w:ind w:left="720" w:right="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:i/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockerror"><w:name w:val="blockerror"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="blockerror"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FF0000"/><w:effect w:val="ants-red"/></w:rPr></w:style><w:style w:type="character" w:styleId="inlineerror"><w:name w:val="inlineerror"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="007E454C"/><w:rPr><w:color w:val="FF0000"/><w:effect w:val="ants-red"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="legalnotice"><w:name w:val="legalnotice"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="legalnotice"/><w:pBdr><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="1" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="4" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="1" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="4" w:color="auto"/></w:pBdr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note"><w:name w:val="note"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="note"/><w:listPr><w:ilfo w:val="1"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect1-title"><w:name w:val="sect1-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect1-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect1-subtitle"><w:name w:val="sect1-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect1-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect2-title"><w:name w:val="sect2-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect2-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect2-subtitle"><w:name w:val="sect2-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect2-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect3-title"><w:name w:val="sect3-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect3-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect3-subtitle"><w:name w:val="sect3-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect3-subtitle"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect4-title"><w:name w:val="sect4-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect4-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect4-subtitle"><w:name w:val="sect4-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect4-subtitle"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect5-title"><w:name w:val="sect5-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect5-title"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect5-subtitle"><w:name w:val="sect5-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="sect5-subtitle"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simpara"><w:name w:val="simpara"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="simpara"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="formalpara"><w:name w:val="formalpara"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="formalpara"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="formalpara-title"><w:name w:val="formalpara-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="formalpara-title"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simplesect-title"><w:name w:val="simplesect-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="simplesect-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simplesect-subtitle"><w:name w:val="simplesect-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="simplesect-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote-attribution"><w:name w:val="blockquote-attribution"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="blockquote-attribution"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial Narrow" w:h-ansi="Arial Narrow"/><wx:font wx:val="Arial Narrow"/><w:sz w:val="16"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote-title"><w:name w:val="blockquote-title"/><w:basedOn w:val="Normal"/><w:next w:val="blockquote"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="blockquote-title"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="list" w:styleId="itemizedlist"><w:name w:val="itemizedlist"/><w:basedOn w:val="NoList"/><w:rsid w:val="007E454C"/><w:pPr><w:listPr><w:ilfo w:val="2"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="note-title"><w:name w:val="note-title"/><w:basedOn w:val="note"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="note-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="caution"><w:name w:val="caution"/><w:basedOn w:val="note"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="caution"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="caution-title"><w:name w:val="caution-title"/><w:basedOn w:val="caution"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="caution-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="warning"><w:name w:val="warning"/><w:basedOn w:val="note"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="warning"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FFCC00"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="warning-title"><w:name w:val="warning-title"/><w:basedOn w:val="warning"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="warning-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="important"><w:name w:val="important"/><w:basedOn w:val="note"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="important"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="000080"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="important-title"><w:name w:val="important-title"/><w:basedOn w:val="important"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="important-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-title"><w:name w:val="chapter-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="chapter-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-subtitle"><w:name w:val="chapter-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="chapter-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-titleabbrev"><w:name w:val="chapter-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="chapter-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="appendix-title"><w:name w:val="appendix-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="appendix-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="preface-title"><w:name w:val="preface-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="preface-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bibliography-title"><w:name w:val="bibliography-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="bibliography-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="glossary-title"><w:name w:val="glossary-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="glossary-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="index-title"><w:name w:val="index-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="index-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="list" w:styleId="itemizedlist1"><w:name w:val="itemizedlist1"/><w:basedOn w:val="NoList"/><w:rsid w:val="007E454C"/><w:pPr><w:listPr><w:ilfo w:val="3"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-term"><w:name w:val="variablelist-term"/><w:basedOn w:val="Normal"/><w:rsid w:val="007E454C"/><w:pPr><w:pStyle w:val="variablelist-term"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-title"><w:name w:val="variablelist-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="00B70A95"/><w:pPr><w:pStyle w:val="variablelist-title"/><w:spacing w:before="120" w:after="120"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-titleabbrev"><w:name w:val="variablelist-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="00B70A95"/><w:pPr><w:pStyle w:val="variablelist-titleabbrev"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:i/></w:rPr></w:style></w:styles><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:doNotEmbedSystemFonts/><w:proofState w:spelling="clean" w:grammar="clean"/><w:attachedTemplate w:val=""/><w:defaultTabStop w:val="720"/><w:punctuationKerning/><w:characterSpacingControl w:val="DontCompress"/><w:optimizeForBrowser/><w:validateAgainstSchema/><w:saveInvalidXML w:val="off"/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:compat><w:breakWrappedTables/><w:snapToGridInCell/><w:wrapTextWithPunct/><w:useAsianBreakRules/><w:dontGrowAutofit/></w:compat></w:docPr><w:body><wx:sect><w:p><w:r><w:t>This document intentionally left blank.</w:t></w:r></w:p><w:sectPr><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:line-pitch="360"/></w:sectPr></wx:sect></w:body></w:wordDocument>
\ No newline at end of file
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><o:DocumentProperties><o:Title>This document left intentionally blank</o:Title><o:Author>Steve Ball</o:Author><o:LastAuthor>Steve Ball</o:LastAuthor><o:Revision>16</o:Revision><o:TotalTime>1990</o:TotalTime><o:Created>2004-10-04T23:25:00Z</o:Created><o:LastSaved>2004-12-05T19:54:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>5</o:Words><o:Characters>35</o:Characters><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>39</o:CharactersWithSpaces><o:Version>11.6113</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="Wingdings"><w:panose-1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000000" w:usb-1="10000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/></w:font><w:font w:name="Arial Narrow"><w:panose-1 w:val="020B0506020202030204"/><w:charset w:val="00"/><w:family w:val="Swiss"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000287" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="0000009F" w:csb-1="00000000"/></w:font></w:fonts><w:lists><w:listDef w:listDefId="0"><w:lsid w:val="1FB77228"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:styleLink w:val="itemizedlist1"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="1"><w:lsid w:val="38E8493E"/><w:plt w:val="HybridMultilevel"/><w:tmpl w:val="17E4C930"/><w:lvl w:ilvl="0" w:tplc="2F90EBE6"><w:start w:val="1"/><w:nfc w:val="23"/><w:pStyle w:val="note"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3600"/></w:tabs><w:ind w:left="3600" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="4320"/></w:tabs><w:ind w:left="4320" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5040"/></w:tabs><w:ind w:left="5040" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val="o"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="5760"/></w:tabs><w:ind w:left="5760" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:h-ansi="Courier New" w:cs="Courier New" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="on"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="6480"/></w:tabs><w:ind w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" w:h-ansi="Wingdings" w:hint="default"/></w:rPr></w:lvl></w:listDef><w:listDef w:listDefId="2"><w:lsid w:val="3FEC0422"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:styleLink w:val="itemizedlist"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:listDef w:listDefId="3"><w:lsid w:val="5F8E0F88"/><w:plt w:val="Multilevel"/><w:tmpl w:val="0409001D"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:lvlText w:val="%1)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="360"/></w:tabs><w:ind w:left="360" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:nfc w:val="23"/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="720"/></w:tabs><w:ind w:left="720" w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:h-ansi="Symbol" w:hint="default"/><w:color w:val="auto"/></w:rPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%3)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1080"/></w:tabs><w:ind w:left="1080" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="3"><w:start w:val="1"/><w:lvlText w:val="(%4)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1440"/></w:tabs><w:ind w:left="1440" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="4"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="(%5)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="1800"/></w:tabs><w:ind w:left="1800" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="5"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="(%6)"/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2160"/></w:tabs><w:ind w:left="2160" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="6"><w:start w:val="1"/><w:lvlText w:val="%7."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2520"/></w:tabs><w:ind w:left="2520" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="7"><w:start w:val="1"/><w:nfc w:val="4"/><w:lvlText w:val="%8."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="2880"/></w:tabs><w:ind w:left="2880" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="8"><w:start w:val="1"/><w:nfc w:val="2"/><w:lvlText w:val="%9."/><w:lvlJc w:val="left"/><w:pPr><w:tabs><w:tab w:val="list" w:pos="3240"/></w:tabs><w:ind w:left="3240" w:hanging="360"/></w:pPr></w:lvl></w:listDef><w:list w:ilfo="1"><w:ilst w:val="1"/></w:list><w:list w:ilfo="2"><w:ilst w:val="2"/></w:list><w:list w:ilfo="3"><w:ilst w:val="0"/></w:list><w:list w:ilfo="4"><w:ilst w:val="3"/></w:list></w:lists><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rsid w:val="001D5992"/><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style><w:style w:type="paragraph" w:styleId="section-title"><w:name w:val="section-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="section-title"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="section-subtitle"><w:name w:val="section-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="section-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="section-titleabbrev"><w:name w:val="section-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="section-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-title"><w:name w:val="book-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="book-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-subtitle"><w:name w:val="book-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="book-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="book-titleabbrev"><w:name w:val="book-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="book-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-title"><w:name w:val="article-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="article-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-subtitle"><w:name w:val="article-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="article-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="article-titleabbrev"><w:name w:val="article-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="article-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote"><w:name w:val="blockquote"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="blockquote"/><w:ind w:left="720" w:right="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:i/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockerror"><w:name w:val="blockerror"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="blockerror"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FF0000"/><w:effect w:val="ants-red"/></w:rPr></w:style><w:style w:type="character" w:styleId="inlineerror"><w:name w:val="inlineerror"/><w:basedOn w:val="DefaultParagraphFont"/><w:rsid w:val="001D5992"/><w:rPr><w:color w:val="FF0000"/><w:effect w:val="ants-red"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="legalnotice"><w:name w:val="legalnotice"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="legalnotice"/><w:pBdr><w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="1" w:color="auto"/><w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="4" w:color="auto"/><w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="1" w:color="auto"/><w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="4" w:color="auto"/></w:pBdr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="note"><w:name w:val="note"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="note"/><w:listPr><w:ilfo w:val="1"/></w:listPr></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect1-title"><w:name w:val="sect1-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect1-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect1-subtitle"><w:name w:val="sect1-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect1-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect2-title"><w:name w:val="sect2-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect2-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect2-subtitle"><w:name w:val="sect2-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect2-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect3-title"><w:name w:val="sect3-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect3-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect3-subtitle"><w:name w:val="sect3-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect3-subtitle"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect4-title"><w:name w:val="sect4-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect4-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect4-subtitle"><w:name w:val="sect4-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect4-subtitle"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect5-title"><w:name w:val="sect5-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect5-title"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/><w:sz w:val="22"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="sect5-subtitle"><w:name w:val="sect5-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="sect5-subtitle"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simpara"><w:name w:val="simpara"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="simpara"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="formalpara"><w:name w:val="formalpara"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="formalpara"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="formalpara-title"><w:name w:val="formalpara-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="formalpara-title"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simplesect-title"><w:name w:val="simplesect-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="simplesect-title"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="simplesect-subtitle"><w:name w:val="simplesect-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="simplesect-subtitle"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote-attribution"><w:name w:val="blockquote-attribution"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="blockquote-attribution"/><w:ind w:left="1440"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial Narrow" w:h-ansi="Arial Narrow"/><wx:font wx:val="Arial Narrow"/><w:sz w:val="16"/><w:u w:val="single"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="blockquote-title"><w:name w:val="blockquote-title"/><w:basedOn w:val="Normal"/><w:next w:val="blockquote"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="blockquote-title"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/></w:rPr></w:style><w:style w:type="list" w:styleId="itemizedlist"><w:name w:val="itemizedlist"/><w:basedOn w:val="NoList"/><w:rsid w:val="001D5992"/><w:pPr><w:listPr><w:ilfo w:val="2"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="note-title"><w:name w:val="note-title"/><w:basedOn w:val="note"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="note-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="caution"><w:name w:val="caution"/><w:basedOn w:val="note"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="caution"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FF0000"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="caution-title"><w:name w:val="caution-title"/><w:basedOn w:val="caution"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="caution-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="warning"><w:name w:val="warning"/><w:basedOn w:val="note"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="warning"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="FFCC00"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="warning-title"><w:name w:val="warning-title"/><w:basedOn w:val="warning"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="warning-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="important"><w:name w:val="important"/><w:basedOn w:val="note"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="important"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="000080"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="important-title"><w:name w:val="important-title"/><w:basedOn w:val="important"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="important-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-title"><w:name w:val="chapter-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="chapter-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-subtitle"><w:name w:val="chapter-subtitle"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="chapter-subtitle"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="chapter-titleabbrev"><w:name w:val="chapter-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="chapter-titleabbrev"/><w:spacing w:before="120" w:after="120"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="appendix-title"><w:name w:val="appendix-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="appendix-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="preface-title"><w:name w:val="preface-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="preface-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="bibliography-title"><w:name w:val="bibliography-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="bibliography-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="glossary-title"><w:name w:val="glossary-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="glossary-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="index-title"><w:name w:val="index-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="index-title"/><w:spacing w:before="240" w:after="240"/><w:jc w:val="center"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:sz w:val="36"/></w:rPr></w:style><w:style w:type="list" w:styleId="itemizedlist1"><w:name w:val="itemizedlist1"/><w:basedOn w:val="NoList"/><w:rsid w:val="001D5992"/><w:pPr><w:listPr><w:ilfo w:val="3"/></w:listPr></w:pPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-term"><w:name w:val="variablelist-term"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="variablelist-term"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:sz w:val="20"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-title"><w:name w:val="variablelist-title"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="variablelist-title"/><w:spacing w:before="120" w:after="120"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:b/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="variablelist-titleabbrev"><w:name w:val="variablelist-titleabbrev"/><w:basedOn w:val="Normal"/><w:rsid w:val="001D5992"/><w:pPr><w:pStyle w:val="variablelist-titleabbrev"/><w:ind w:left="720"/></w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial"/><wx:font wx:val="Arial"/><w:i/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="tip"><w:name w:val="tip"/><w:basedOn w:val="note"/><w:rsid w:val="00417537"/><w:pPr><w:pStyle w:val="tip"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:color w:val="003300"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="tip-title"><w:name w:val="tip-title"/><w:basedOn w:val="tip"/><w:rsid w:val="00417537"/><w:pPr><w:pStyle w:val="tip-title"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="para-continue"><w:name w:val="para-continue"/><w:basedOn w:val="Normal"/><w:rsid w:val="00BB04E6"/><w:pPr><w:pStyle w:val="para-continue"/><w:ind w:left="720"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr></w:style></w:styles><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:doNotEmbedSystemFonts/><w:proofState w:spelling="clean" w:grammar="clean"/><w:attachedTemplate w:val=""/><w:defaultTabStop w:val="720"/><w:punctuationKerning/><w:characterSpacingControl w:val="DontCompress"/><w:optimizeForBrowser/><w:validateAgainstSchema/><w:saveInvalidXML w:val="off"/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:compat><w:breakWrappedTables/><w:snapToGridInCell/><w:wrapTextWithPunct/><w:useAsianBreakRules/><w:dontGrowAutofit/></w:compat></w:docPr><w:body><wx:sect><w:p><w:r><w:t>This document intentionally left blank.</w:t></w:r></w:p><w:sectPr><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:line-pitch="360"/></w:sectPr></wx:sect></w:body></w:wordDocument>
\ No newline at end of file
diff --git a/xsl/wordml/wordml-final.xsl b/xsl/wordml/wordml-final.xsl
new file mode 100644 (file)
index 0000000..d160bdb
--- /dev/null
@@ -0,0 +1,928 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE xsl:stylesheet [
+
+<!ENTITY para "w:p[w:pPr/w:pStyle[@w:val='para' or @w:val='Normal']]">
+<!ENTITY continue "w:p[w:pPr/w:pStyle/@w:val='para-continue']">
+
+<!ENTITY itemizedlist "w:p[w:pPr/w:pStyle[starts-with(@w:val,'itemizedlist')]]">
+<!ENTITY itemizedlist1 "w:p[w:pPr/w:pStyle[@w:val = 'itemizedlist']]">
+<!ENTITY orderedlist "w:p[w:pPr/w:pStyle[starts-with(@w:val,'orderedlist')]]">
+<!ENTITY orderedlist1 "w:p[w:pPr/w:pStyle[@w:val = 'orderedlist']]">
+
+<!ENTITY variablelist "w:tbl[w:tblPr/w:tblStyle[starts-with(@w:val,'variablelist')]]">
+
+<!ENTITY verbatim "w:p[w:pPr/w:pStyle[@w:val='programlisting' or @w:val='screen' or @w:val='literallayout']]">
+<!ENTITY admontitle "w:p[w:pPr/w:pStyle[@w:val='note-title' or @w:val='caution-title' or @w:val='important-title' or @w:val='tip-title' or @w:val='warning-title']]">
+<!ENTITY admon "w:p[w:pPr/w:pStyle[@w:val='note' or @w:val='caution' or @w:val='important' or @w:val='tip' or @w:val='warning']]">
+<!ENTITY figure "w:p[w:pPr/w:pStyle[@w:val='figure']]">
+<!ENTITY figuretitle "w:p[w:pPr/w:pStyle[@w:val='figuretitle']]">
+<!ENTITY figurecaption "w:p[w:pPr/w:pStyle[@w:val='figuretitle']]">
+<!ENTITY tabletitle "w:p[w:pPr/w:pStyle[@w:val='tabletitle']]">
+<!ENTITY exampletitle "w:p[w:pPr/w:pStyle[@w:val='exampletitle']]">
+<!ENTITY listlevel "substring-after(w:pPr/w:pStyle/@w:val, 'edlist')">
+<!ENTITY listlabel "w:pPr/w:listPr/wx:t/@wx:val">
+<!ENTITY footnote "w:p[w:pPr/w:pStyle[@w:val='FootnoteText']]">
+]>
+
+<xsl:stylesheet xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
+  xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
+  xmlns:v="urn:schemas-microsoft-com:vml" 
+  xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
+  xmlns:o="urn:schemas-microsoft-com:office:office" 
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  exclude-result-prefixes="aml w wx o v" version="1.0">
+
+  <!-- $Id$ -->
+  <!-- Stylesheet to convert WordProcessingML to DocBook -->
+  <!-- This stylesheet processes the output of wordml-sects.xsl -->
+
+  <xsl:output indent="yes" method="xml" 
+    doctype-public="-//OASIS//DTD DocBook XML V4.3//EN"
+    doctype-system="http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"/>
+
+  <!-- ================================================== -->
+  <!--    Parameters                                      -->
+  <!-- ================================================== -->
+
+  <xsl:param name="nest.sections">1</xsl:param>
+
+  <!-- ================================================== -->
+  <!--    Templates                                       -->
+  <!-- ================================================== -->
+  <!-- Look up a w:listDef element by its StyleLink -->
+  <xsl:key name="listdef-stylelink"
+    match="w:listDef"
+    use="w:listStyleLink/@w:val"/>
+
+  <xsl:key name="list-ilst"
+    match="w:list"
+    use="w:ilst/@w:val"/>
+
+  <xsl:strip-space elements='*'/>
+  <xsl:preserve-space elements='w:t'/>
+
+  <xsl:template match="/">
+    <xsl:apply-templates select="//w:body"/>
+  </xsl:template>
+
+  <xsl:template match="w:body">
+    <xsl:apply-templates mode="group"/>
+  </xsl:template>
+
+  <xsl:template match="wx:sect" mode="group">
+    <xsl:apply-templates  mode="group"/>
+  </xsl:template>
+
+  <xsl:template match="wx:sub-section" mode="group">
+    <xsl:variable name="first.node" select="w:p[1]"/>
+    <xsl:variable name="style" select="$first.node/w:pPr/w:pStyle/@w:val"/>
+
+    <xsl:variable name="element.name">
+      <xsl:choose>
+        <xsl:when test="$style = 'article' or
+                        $style = 'article-title'">article</xsl:when>
+        <xsl:when test="$style = 'appendix' or
+                        $style = 'appendix-title'">appendix</xsl:when>
+        <xsl:when test="($style = 'sect1' or
+                        $style = 'sect1-title') and 
+                        $nest.sections != 0">section</xsl:when>
+        <xsl:when test="$style = 'sect1' or
+                        $style = 'sect1-title'">sect1</xsl:when>
+        <xsl:when test="($style = 'sect2' or
+                        $style = 'sect2-title') and 
+                        $nest.sections != 0">section</xsl:when>
+        <xsl:when test="$style = 'sect2' or
+                        $style = 'sect2-title'">sect2</xsl:when>
+        <xsl:when test="($style = 'sect3' or
+                        $style = 'sect3-title') and 
+                        $nest.sections != 0">section</xsl:when>
+        <xsl:when test="$style = 'sect3' or
+                        $style = 'sect3-title'">sect3</xsl:when>
+        <xsl:when test="($style = 'sect4' or
+                        $style = 'sect4-title') and 
+                        $nest.sections != 0">section</xsl:when>
+        <xsl:when test="$style = 'sect4' or
+                        $style = 'sect4-title'">sect4</xsl:when>
+        <xsl:when test="($style = 'sect5' or
+                        $style = 'sect5-title') and 
+                        $nest.sections != 0">section</xsl:when>
+        <xsl:when test="$style = 'sect5' or
+                        $style = 'sect5-title'">sect5</xsl:when>
+        <xsl:otherwise>bogus</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:choose>
+      <xsl:when test='$element.name != "bogus"'>
+        <xsl:element name="{$element.name}">
+          <xsl:call-template name="object.id"/>
+          <xsl:apply-templates mode="group"/>
+        </xsl:element>
+      </xsl:when>
+
+      <xsl:otherwise>
+        <xsl:apply-templates mode='group'/>
+      </xsl:otherwise>
+    </xsl:choose>
+
+  </xsl:template>
+
+  <!-- sub-section title paragraph -->
+  <xsl:template match="wx:sub-section/w:p[1]" mode="group">
+    <title>
+      <xsl:apply-templates select="w:r|w:hlink"/>
+    </title>
+  </xsl:template>
+
+  <!-- Ordinary para -->
+  <xsl:template match="&para;|w:p[not(w:pPr/w:pStyle)]" mode="group">
+    <para>
+      <xsl:call-template name="object.id"/>
+      <xsl:apply-templates select="w:r|w:hlink"/>
+    </para>
+  </xsl:template>
+
+  <!-- Unmatched para style -->
+  <xsl:template match="w:p" mode="group">
+    <nomatch>
+      <xsl:apply-templates select="w:r|w:hlink"/>
+    </nomatch>
+  </xsl:template>
+
+  <!-- unused elements are bypassed -->
+  <xsl:template match="*" mode="group"/>
+
+  <!-- continued paragraphs are included by their (preceding) parent -->
+  <xsl:template match="&continue;" mode='group'/>
+
+  <!-- Match on the first one of an itemizedlist -->
+  <xsl:template match="&itemizedlist1;[not(preceding-sibling::*[1]
+                       [self::&itemizedlist; or self::&continue;])]" 
+    priority="2"
+    mode="group">
+
+    <!-- Identify the node that follows all the listitems -->
+    <xsl:variable name="stop.node"
+      select="generate-id(following-sibling::*[not(self::&itemizedlist;
+              or self::&continue;
+              or self::&orderedlist;)][1])"/>
+
+    <!-- Start the list and process all the level 1 listitems -->
+    <itemizedlist>
+      <xsl:apply-templates mode="item" 
+        select=".|following-sibling::&itemizedlist;[&listlevel; = '']
+                [following-sibling::*[generate-id() = $stop.node]]">
+        <xsl:with-param name="depth" select="1"/>
+      </xsl:apply-templates>
+    </itemizedlist>
+
+  </xsl:template>
+
+  <xsl:template match="&itemizedlist;" mode="item">
+    <xsl:param name="depth" select="1"/>
+
+    <listitem>
+      <para>
+        <xsl:apply-templates/>
+      </para>
+      <xsl:apply-templates mode="item" 
+        select="following-sibling::*[1][self::&continue;]"/>
+      <!-- Now any nested list is inside this list item -->
+      <xsl:apply-templates mode="subgroup"
+        select="following-sibling::*[1]
+                [self::&itemizedlist; or self::&orderedlist;]
+                [&listlevel; &gt; $depth]">
+
+        <xsl:with-param name="depth" select="$depth + 1"/>
+      </xsl:apply-templates>
+    </listitem>
+
+  </xsl:template>
+
+<xsl:template match="&itemizedlist;" mode="subgroup">
+  <xsl:param name="depth" select="0"/>
+
+  <xsl:variable name="stop.node"
+      select="generate-id(following-sibling::*[
+                        self::&itemizedlist1; or
+                        self::&orderedlist1; or
+                        self::&itemizedlist;[&listlevel; &lt; $depth] or
+                        self::&orderedlist;[&listlevel; &lt; $depth] or
+                        not(self::&itemizedlist; or 
+                            self::&orderedlist; or
+                            self::&continue;)]
+                        [1])"/>
+
+  <itemizedlist>
+    <xsl:apply-templates mode="item"
+             select=".|following-sibling::&itemizedlist;
+                       [&listlevel; = $depth]
+                       [following-sibling::*[generate-id() = $stop.node]]">
+      <xsl:with-param name="depth" select="$depth"/>
+    </xsl:apply-templates>
+  </itemizedlist>
+</xsl:template>
+
+<xsl:template match="&itemizedlist;[preceding-sibling::*[1]
+                     [self::&itemizedlist; or 
+                      self::&orderedlist; or
+                      self::&continue;]]" 
+                     mode="group">
+  <!-- Handle with mode = group -->
+</xsl:template>
+
+
+
+
+
+<!-- Match on the first one of an orderedlist -->
+<xsl:template match="&orderedlist1;[not(preceding-sibling::*[1]
+                     [self::&orderedlist; or self::&continue;])]" 
+                     priority="2"
+                     mode="group">
+
+  <!-- Identify the node that follows all the listitems -->
+  <xsl:variable name="stop.node"
+              select="generate-id(following-sibling::*[not(self::&itemizedlist;
+                      or self::&continue;
+                      or self::&orderedlist;)][1])"/>
+                       
+  <!-- Start the list and process all the level 1 listitems -->
+  <orderedlist>
+    <xsl:apply-templates mode="item" 
+          select=".|following-sibling::&orderedlist;[&listlevel; = '']
+                  [following-sibling::*[generate-id() = $stop.node]]">
+      <xsl:with-param name="depth" select="1"/>
+    </xsl:apply-templates>
+  </orderedlist>
+  
+</xsl:template>
+
+<xsl:template match="&orderedlist;" mode="item">
+  <xsl:param name="depth" select="1"/>
+
+  <listitem>
+    <para>
+      <xsl:apply-templates/>
+    </para>
+    <xsl:apply-templates mode="item" 
+                select="following-sibling::*[1][self::&continue;]"/>
+    <!-- Now any nested list is inside this list item -->
+    <xsl:apply-templates mode="subgroup"
+            select="following-sibling::*[1]
+                    [self::&itemizedlist; or self::&orderedlist;]
+                    [&listlevel; &gt; $depth]">
+
+      <xsl:with-param name="depth" select="$depth + 1"/>
+    </xsl:apply-templates>
+  </listitem>
+
+</xsl:template>
+
+<xsl:template match="&orderedlist;" mode="subgroup">
+  <xsl:param name="depth" select="0"/>
+
+  <xsl:variable name="stop.node"
+      select="generate-id(following-sibling::*[
+                        self::&itemizedlist1; or
+                        self::&orderedlist1; or
+                        self::&itemizedlist;[&listlevel; &lt; $depth] or
+                        self::&orderedlist;[&listlevel; &lt; $depth] or
+                        not(self::&itemizedlist; or 
+                            self::&orderedlist; or
+                            self::&continue;)]
+                        [1])"/>
+
+  <orderedlist>
+    <xsl:apply-templates mode="item"
+             select=".|following-sibling::&orderedlist;
+                       [&listlevel; = $depth]
+                       [following-sibling::*[generate-id() = $stop.node]]">
+      <xsl:with-param name="depth" select="$depth"/>
+    </xsl:apply-templates>
+  </orderedlist>
+</xsl:template>
+
+<xsl:template match="&orderedlist;[preceding-sibling::*[1]
+                     [self::&itemizedlist; or 
+                      self::&orderedlist; or
+                      self::&continue;]]" 
+                     mode="group">
+  <!-- Handle with mode = group -->
+</xsl:template>
+
+<xsl:template match="&continue;" mode="item">
+  <para>
+    <xsl:call-template name="object.id"/>
+    <xsl:apply-templates select="w:r|w:hlink"/>
+  </para>
+  <!-- Continue to process any immediate following -->
+  <xsl:apply-templates mode="item" 
+                select="following-sibling::*[1][self::&continue;]"/>
+</xsl:template>
+
+<xsl:template match="&continue;" mode="group">
+  <!-- Handled in item mode -->
+</xsl:template>
+
+<xsl:template match="*" mode="item">
+  <xsl:apply-templates/>
+</xsl:template>
+
+
+<!-- =========================================================== -->
+<!--   Inline elements                                           -->
+<!-- =========================================================== -->
+<xsl:template match="w:hlink[w:r/w:rPr/w:rStyle[@w:val='link']]">
+  <link>
+    <xsl:attribute name="linkend"><xsl:value-of
+            select="@w:bookmark"/></xsl:attribute>
+    <xsl:apply-templates select="w:r"/>
+  </link>
+</xsl:template>
+
+<xsl:template match="w:hlink[w:r/w:rPr/w:rStyle[@w:val='ulink']]">
+  <ulink>
+    <xsl:attribute name="url"><xsl:value-of
+            select="@w:dest"/></xsl:attribute>
+    <xsl:apply-templates select="w:r"/>
+  </ulink>
+</xsl:template>
+
+<xsl:template match="w:hlink[w:r/w:rPr/w:rStyle[@w:val='olink']]">
+  <olink>
+    <xsl:attribute name="targetdoc"><xsl:value-of
+            select="@w:dest"/></xsl:attribute>
+    <xsl:attribute name="targetptr"><xsl:value-of
+            select="@w:bookmark"/></xsl:attribute>
+    <xsl:apply-templates select="w:r"/>
+  </olink>
+</xsl:template>
+
+<xsl:template match="w:hlink[w:r/w:rPr/w:rStyle[@w:val='xref']]">
+  <xref>
+    <xsl:attribute name="linkend"><xsl:value-of
+            select="@w:bookmark"/></xsl:attribute>
+  </xref>
+</xsl:template>
+
+<xsl:template match="w:r[w:rPr/w:rStyle[@w:val = 'emphasis']]">
+  <emphasis>
+    <xsl:apply-templates select="w:t"/>
+  </emphasis>
+</xsl:template>
+
+<xsl:template match="w:r[w:rPr/w:rStyle[@w:val = 'FootnoteReference']]">
+  <footnote>
+    <xsl:apply-templates/>
+  </footnote>
+</xsl:template>
+
+<!-- Ignore the footnote number with the footnote text -->
+<xsl:template match="w:r[w:rPr/w:rStyle[@w:val = 'FootnoteReference']]
+                        [child::w:footnoteRef]">
+</xsl:template>
+
+<xsl:template match="w:footnote">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<!-- The footnote text -->
+<xsl:template match="&footnote;">
+  <para>
+    <xsl:apply-templates/>
+  </para>
+</xsl:template>
+
+<xsl:template match="w:r">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="w:t">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template name="object.id">
+  <xsl:variable name="id">
+    <xsl:apply-templates select="." mode="object.id"/>
+  </xsl:variable>
+  <xsl:if test="$id != ''">
+    <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template match="w:p" mode="object.id">
+
+  <xsl:variable name="bookmark.inside">
+    <xsl:value-of select="aml:annotation
+                 [@w:type = 'Word.Bookmark.Start'][1]/@w:name"/>
+  </xsl:variable>
+
+  <xsl:variable name="bookmark.preceding">
+    <xsl:value-of select="preceding-sibling::*[2]
+                          [self::aml:annotation
+                          [@w:type = 'Word.Bookmark.Start']
+                          [following-sibling::aml:annotation
+                          [@w:type = 'Word.Bookmark.End']]]
+                          /@w:name"/>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$bookmark.inside != ''">
+      <xsl:value-of select="$bookmark.inside"/>
+    </xsl:when>
+    <xsl:when test="$bookmark.preceding != ''">
+      <xsl:value-of select="$bookmark.preceding"/>
+    </xsl:when>
+  </xsl:choose>
+
+</xsl:template>
+
+<xsl:template match="wx:sub-section" mode="object.id">
+  <!-- First para has the bookmark -->
+  <xsl:value-of select="w:p[1]/aml:annotation
+                 [@w:type = 'Word.Bookmark.Start'][1]/@w:name"/>
+</xsl:template>
+
+<!-- Index entry -->
+<xsl:template match="w:r/w:instrText">
+  <xsl:variable name="text" select="normalize-space(.)"/>
+
+  <xsl:choose>
+    <xsl:when test="starts-with($text, 'XE')">
+
+      <xsl:variable name="primary">
+        <xsl:choose>
+          <xsl:when test="contains($text, ':')">
+            <xsl:value-of select="substring-before(
+                                  substring-after($text, 'XE &quot;'), ':')"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="substring-before(
+                                  substring-after($text, 'XE &quot;'), '&quot;')"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:variable>
+    
+      <xsl:variable name="secondary">
+        <xsl:choose>
+          <xsl:when test="contains($text, ':')">
+            <xsl:value-of select="substring-before(
+                                  substring-after($text, ':'), '&quot;')"/>
+          </xsl:when>
+          <xsl:otherwise></xsl:otherwise>
+        </xsl:choose>
+      </xsl:variable>
+    
+      <indexterm>
+        <primary><xsl:value-of select="$primary"/></primary>
+        <xsl:if test="$secondary != ''">
+          <secondary><xsl:value-of select="$secondary"/></secondary>
+        </xsl:if>
+      </indexterm>
+    </xsl:when>
+  </xsl:choose>
+        
+</xsl:template>
+
+<xsl:template match="&figure;" mode="group">
+
+  <!-- Get title and caption from siblings -->
+  <xsl:variable name="title">
+    <xsl:choose>
+      <xsl:when test="following-sibling::*[1][self::&figuretitle;]">
+        <xsl:apply-templates 
+                 mode="figuretitle"
+                 select="following-sibling::*[1][self::&figuretitle;]"/>
+      </xsl:when>
+      <xsl:when test="preceding-sibling::*[1][self::&figuretitle;]">
+        <xsl:apply-templates 
+                 mode="figuretitle"
+                 select="preceding-sibling::*[1][self::&figuretitle;]"/>
+      </xsl:when>
+    </xsl:choose>
+  </xsl:variable>
+
+  <!-- FIXME -->
+  <xsl:variable name="caption"/>
+
+  <xsl:variable name="shape" select="w:r/w:pict/v:shape"/>
+  <xsl:variable name="style" select="$shape/@style"/>
+
+  <xsl:variable name="src" select="$shape/v:imagedata/@src"/>
+  <xsl:variable name="width"
+                select="substring-before(
+                        substring-after($style, 'width:'), ';')"/>
+  <xsl:variable name="height">
+    <xsl:variable name="candidate" 
+                  select="substring-before(
+                          substring-after($style, 'height:'), ';') != ''"/>
+    <xsl:choose>
+      <xsl:when test="$candidate != ''">
+        <xsl:value-of select="$candidate"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="substring-after($style, 'height:')"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="element">
+    <xsl:choose>
+      <xsl:when test="$title != ''">figure</xsl:when>
+      <xsl:otherwise>informalfigure</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:element name="{$element}">
+    <xsl:call-template name="object.id"/>
+    <xsl:if test="$title != ''">
+      <title>
+        <xsl:copy-of select="$title"/>
+      </title>
+    </xsl:if>
+    <mediaobject>
+      <imageobject>
+        <imagedata>
+          <xsl:attribute name="fileref">
+            <xsl:value-of select="$src"/>
+          </xsl:attribute>
+          <xsl:if test="$width != ''">
+            <xsl:attribute name="contentwidth">
+              <xsl:value-of select="$width"/>
+            </xsl:attribute>
+          </xsl:if>
+          <xsl:if test="$height != ''">
+            <xsl:attribute name="contentdepth">
+              <xsl:value-of select="$height"/>
+            </xsl:attribute>
+          </xsl:if>
+        </imagedata>
+      </imageobject>
+    </mediaobject>
+  </xsl:element>
+
+</xsl:template>
+
+<xsl:template match="&figuretitle;" mode="group"/>
+
+<xsl:template match="&figuretitle;" mode="figuretitle">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="&exampletitle;" mode="group">
+  <example>
+    <title>
+      <xsl:apply-templates/>
+    </title>
+    <xsl:apply-templates mode="example"
+             select="following-sibling::*[1][self::w:p or self::w:tbl]" />
+  </example>
+</xsl:template>
+
+
+<!-- Process tables -->
+<xsl:template match="w:tbl" mode="group">
+
+  <!-- Get title and caption from siblings -->
+  <xsl:variable name="title">
+    <xsl:choose>
+      <xsl:when test="following-sibling::*[1][self::&tabletitle;]">
+        <xsl:apply-templates 
+                 mode="tabletitle"
+                 select="following-sibling::*[1][self::&tabletitle;]"/>
+      </xsl:when>
+      <xsl:when test="preceding-sibling::*[1][self::&tabletitle;]">
+        <xsl:apply-templates 
+                 mode="tabletitle"
+                 select="preceding-sibling::*[1][self::&tabletitle;]"/>
+      </xsl:when>
+    </xsl:choose>
+  </xsl:variable>
+
+  <!-- FIXME -->
+  <xsl:variable name="caption"/>
+
+  <xsl:variable name="element">
+    <xsl:choose>
+      <xsl:when test="$title != ''">table</xsl:when>
+      <xsl:otherwise>informaltable</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:element name="{$element}">
+    <xsl:call-template name="object.id"/>
+    <xsl:if test="$title != ''">
+      <title>
+        <xsl:copy-of select="$title"/>
+      </title>
+    </xsl:if>
+
+    <tgroup>
+      <xsl:attribute name="cols">
+        <xsl:value-of select="count(w:tblGrid/w:gridCol)"/>
+      </xsl:attribute>
+      <xsl:apply-templates select="w:tblGrid" mode="colspec"/>
+      <xsl:if test="w:tr[descendant::w:pStyle[@w:val = 'tableheader']]">
+        <thead>
+          <xsl:apply-templates mode="tableheader"
+                  select="w:tr[descendant::w:pStyle[@w:val = 'tableheader']]"/>
+        </thead>
+      </xsl:if>
+      <tbody>
+        <xsl:apply-templates/>
+      </tbody>
+    </tgroup>
+
+  </xsl:element>
+
+</xsl:template>
+
+<xsl:template match="&tabletitle;" mode="group"/>
+
+<xsl:template match="&tabletitle;" mode="tabletitle">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="w:tblGrid" mode="colspec">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="w:tblGrid">
+</xsl:template>
+
+<xsl:template match="w:tblGrid/w:gridCol">
+  <colspec>
+    <xsl:attribute name="colnum">
+      <xsl:value-of select="position()"/>
+    </xsl:attribute>
+    <xsl:attribute name="colname">
+      <xsl:value-of select="concat('col', position())"/>
+    </xsl:attribute>
+    <xsl:if test="@w:w != ''">
+      <xsl:variable name="calcwidth">
+        <xsl:value-of select="@w:w div 20"/>
+      </xsl:variable>
+      <xsl:attribute name="colwidth">
+        <xsl:value-of select="concat($calcwidth, 'pt')"/>
+      </xsl:attribute>
+    </xsl:if>
+  </colspec>
+</xsl:template>
+  
+<!-- Table header row -->
+<xsl:template mode="tableheader"
+              match="w:tr[descendant::w:pStyle[@w:val = 'tableheader']]">
+  <row>
+    <xsl:apply-templates/>
+  </row>
+</xsl:template>
+
+<xsl:template match="w:tr[descendant::w:pStyle[@w:val = 'tableheader']]">
+  <!-- Already handled in tableheader mode -->
+</xsl:template>
+
+<xsl:template match="w:tr">
+  <row>
+    <xsl:apply-templates/>
+  </row>
+</xsl:template>
+
+<xsl:template match="w:tc">
+  <entry>
+    <!-- Process any spans -->
+    <xsl:call-template name="cell.span"/>
+    <!-- Process as paras if more than one w:p in the cell -->
+    <xsl:choose>
+      <xsl:when test="count(w:p) = 1">
+            <xsl:apply-templates/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates mode="group"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </entry>
+</xsl:template>
+
+<xsl:template name="cell.span">
+  <xsl:variable name="span" select="0 + w:tcPr/w:gridSpan/@w:val"/>
+  <xsl:if test="$span &gt; 0">
+    <!-- Get the current cell number -->
+    <xsl:variable name="colstart">
+      <xsl:call-template name="colcount">
+        <xsl:with-param name="count" select="1"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:attribute name="namest"><xsl:value-of 
+                 select="concat('col', $colstart)"/></xsl:attribute>
+    <xsl:attribute name="nameend"><xsl:value-of
+                 select="concat('col', $colstart + $span - 1)"/></xsl:attribute>
+  </xsl:if>
+</xsl:template>
+
+<!-- recursively count preceding columns, including spans -->
+<xsl:template name="colcount">
+  <xsl:param name="count" select="0"/>
+  <xsl:param name="cell" select="."/>
+  <xsl:choose>
+    <xsl:when test="$cell/preceding-sibling::w:tc">
+      <xsl:variable name="span" 
+          select="0 + $cell/preceding-sibling::w:tc/w:tcPr/w:gridSpan/@w:val"/>
+      <xsl:choose>
+        <xsl:when test="$span &gt; 0">
+          <xsl:call-template name="colcount">
+            <xsl:with-param name="count" select="$count + $span"/>
+            <xsl:with-param name="cell" select="$cell/preceding-sibling::w:tc"/>
+          </xsl:call-template>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:call-template name="colcount">
+            <xsl:with-param name="count" select="$count + 1"/>
+            <xsl:with-param name="cell" select="$cell/preceding-sibling::w:tc"/>
+          </xsl:call-template>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="$count"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!--
+<xsl:template match="w:p[w:pPr/w:pStyle[@w:val = 'tableheader']]">
+  <para>
+    <xsl:call-template name="object.id"/>
+    <xsl:apply-templates select="w:r|w:hlink"/>
+  </para>
+</xsl:template>
+-->
+
+<!-- variablelist is a two-column table with table style='variablelist' -->
+<xsl:template match="&variablelist;" mode="group">
+  <variablelist>
+    <xsl:call-template name="object.id"/>
+    <xsl:apply-templates select="w:tr" mode="variablelist"/>
+  </variablelist>
+</xsl:template>
+
+<xsl:template match="w:tr" mode="variablelist">
+  <varlistentry>
+    <term>
+      <xsl:apply-templates select="w:tc[1]/*" mode="variablelist.term"/>
+    </term>
+    <listitem>
+      <xsl:apply-templates select="w:tc[2]/*" mode="group"/> 
+    </listitem>
+  </varlistentry>
+</xsl:template>
+
+<!-- No para tags inside variablelist term -->
+<xsl:template match="w:p" mode="variablelist.term">
+  <xsl:apply-templates select="w:r|w:hlink"/>
+</xsl:template>
+
+<xsl:template match='&admontitle;' mode='group'>
+  <xsl:variable name='element.name'
+    select='substring-before(w:pPr/w:pStyle/@w:val, "-title")'/>
+
+  <xsl:element name='{$element.name}'>
+    <xsl:call-template name='object.id'/>
+    <title>
+      <xsl:apply-templates select='w:r|w:hlink'/>
+    </title>
+
+    <!-- Identify the node that follows all admonitions of the same type -->
+    <xsl:variable name='stop.node'
+      select='generate-id(following-sibling::w:p[w:p/w:pStyle/@w:val != $element.name][1])'/>
+
+    <xsl:choose>
+      <xsl:when test='$stop.node'>
+        <xsl:apply-templates
+          select='following-sibling::w:p[w:p/w:pStyle/@w:val = $element.name]
+                  [generate-id(following-sibling::w:p[w:p/w:pStyle/@w:val != $element.name][1]) = $stop.node]' mode='continue'/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select='following-sibling::*' mode='continue'>
+          <xsl:with-param name='styles' select='concat(" ", $element.name, " para-continue ")'/>
+        </xsl:apply-templates>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:element>
+</xsl:template>
+
+<!-- Handle admonitions without a title -->
+<xsl:template match="&admon;" mode="group">
+  <xsl:variable name="element.name" select="w:pPr/w:pStyle/@w:val"/>
+
+  <xsl:variable name='title.node'
+    select='preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = concat($element.name, "-title")][1]'/>
+  <xsl:variable name='stop.node'
+    select='preceding-sibling::w:p[w:pPr/w:pStyle/@w:val != concat($element.name, "-title")][1]'/>
+
+  <xsl:choose>
+    <xsl:when test='preceding-sibling::*[1]/self::w:p[w:pPr/w:pStyle/@w:val = $element.name or w:pPr/w:pStyle/@w:val = "para-continue"]'/>
+    <xsl:when test='$title.node and $stop.node and
+                    count($title.node|$stop.node/preceding-sibling::*) = count($stop.node/preceding-sibling::*)'>
+      <!-- The previous title is not related to this node -->
+      <xsl:call-template name='make-admonition'>
+        <xsl:with-param name='element.name' select='$element.name'/>
+      </xsl:call-template>
+    </xsl:when>
+
+    <!-- The title node has included this node -->
+    <xsl:when test='$title.node'/>
+
+    <xsl:otherwise>
+      <xsl:call-template name='make-admonition'>
+        <xsl:with-param name='element.name' select='$element.name'/>
+      </xsl:call-template>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+<xsl:template name='make-admonition'>
+  <xsl:param name='element.name'/>
+
+  <xsl:element name="{$element.name}">
+    <xsl:call-template name="object.id"/>
+    <para>
+      <xsl:apply-templates select="w:r|w:hlink"/>
+    </para>
+    <xsl:apply-templates mode="continue" 
+      select="following-sibling::*[1]">
+      <xsl:with-param name='styles' select='concat(" ", $element.name, " para-continue ")'/>
+    </xsl:apply-templates>
+  </xsl:element>
+</xsl:template>
+
+<xsl:template match="w:p" mode="continue">
+  <xsl:param name='styles' select='" para-continue "'/>
+
+  <xsl:if test='contains($styles, concat(" ", w:pPr/w:pStyle/@w:val, " "))'>
+    <para>
+      <xsl:call-template name="object.id"/>
+      <xsl:apply-templates select="w:r|w:hlink"/>
+    </para>
+    <!-- Continue to process any immediate following -->
+    <xsl:apply-templates mode="continue"
+                select="following-sibling::*[1]">
+      <xsl:with-param name='styles' select='$styles'/>
+    </xsl:apply-templates>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template match="&verbatim;[not(preceding-sibling::*[1]
+                     [self::&verbatim;])]" 
+                     mode="group">
+
+  <xsl:variable name="element.name" select="w:pPr/w:pStyle/@w:val"/>
+  <!-- Start the listing and process all subsequent ones too -->
+  <xsl:element name="{$element.name}">
+    <xsl:call-template name="object.id"/>
+    <xsl:apply-templates select="." mode="item"/>
+  </xsl:element>
+
+</xsl:template>
+
+<xsl:template match="&verbatim;[not(preceding-sibling::*[1]
+                     [self::&verbatim;])]" 
+                     mode="example">
+
+  <xsl:variable name="element.name" select="w:pPr/w:pStyle/@w:val"/>
+  <!-- Start the listing and process all subsequent ones too -->
+  <xsl:element name="{$element.name}">
+    <xsl:call-template name="object.id"/>
+    <xsl:apply-templates select="." mode="item"/>
+  </xsl:element>
+
+</xsl:template>
+
+
+<xsl:template match="&verbatim;[preceding-sibling::*[1]
+                     [self::&verbatim;]]" 
+                     mode="group">
+  <!-- Non-first verbatims are handled in item mode -->
+</xsl:template>
+
+<xsl:template match="&verbatim;" mode="item">
+  
+  <xsl:apply-templates select="w:r|w:hlink" />
+  <xsl:text>&#x0A;</xsl:text>
+  <xsl:apply-templates select="following-sibling::*[1][self::&verbatim;]"
+                       mode="item"/>
+</xsl:template>
+
+<xsl:template match="w:br[ancestor::&verbatim;]">
+  <xsl:text>&#x0A;</xsl:text>
+</xsl:template>
+  
+<xsl:template match="&verbatim;[preceding-sibling::*[1]
+                     [self::&exampletitle;]]" 
+              priority="2"
+              mode="group"/>
+
+<xsl:template match="w:tbl[preceding-sibling::*[1][self::&exampletitle;]]" 
+              priority="2"
+              mode="group"/>
+
+</xsl:stylesheet>
diff --git a/xsl/wordml/wordml-normalise.xsl b/xsl/wordml/wordml-normalise.xsl
new file mode 100644 (file)
index 0000000..2ef0d03
--- /dev/null
@@ -0,0 +1,58 @@
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
+  xmlns:v="urn:schemas-microsoft-com:vml"
+  xmlns:w10="urn:schemas-microsoft-com:office:word"
+  xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core"
+  xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
+  xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
+  xmlns:o="urn:schemas-microsoft-com:office:office"
+  xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
+
+  <xsl:output method='xml' indent="yes" encoding='UTF-8'/>
+
+  <!-- ********************************************************************
+       $Id$
+       ********************************************************************
+
+       This file is part of the XSL DocBook Stylesheet distribution.
+       See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+       and other information.
+
+       ******************************************************************** -->
+
+  <xsl:strip-space elements='*'/>
+  <xsl:preserve-space elements='w:t'/>
+
+  <xsl:template match="w:wordDocument">
+    <xsl:copy>
+      <xsl:apply-templates select='w:body'/>
+    </xsl:copy>
+  </xsl:template>
+
+  <xsl:template match='wx:sect|wx:sub-section|wx:pBdrGroup|aml:annotation|aml:content'>
+    <xsl:apply-templates/>
+  </xsl:template>
+
+  <xsl:template match='wx:borders |
+                       wx:margin-left |
+                       w:r[w:rPr/w:rStyle/@w:val = "CommentReference"]'/>
+
+  <xsl:template match='w:pStyle|w:rStyle'>
+    <xsl:copy>
+      <xsl:for-each select='@*'>
+        <xsl:copy/>
+      </xsl:for-each>
+    </xsl:copy>
+  </xsl:template>
+
+  <xsl:template match='*'>
+    <xsl:copy>
+      <xsl:for-each select='@*'>
+        <xsl:copy/>
+      </xsl:for-each>
+      <xsl:apply-templates/>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/xsl/wordml/wordml-sections.xsl b/xsl/wordml/wordml-sections.xsl
new file mode 100644 (file)
index 0000000..537da16
--- /dev/null
@@ -0,0 +1,1452 @@
+<?xml version="1.0" encoding="utf-8"?>
+<axsl:stylesheet xmlns:axsl="http://www.w3.org/1999/XSL/Transform" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" version="1.0">
+<!--====================================-->
+<!--=                                  =-->
+<!--=   DO NOT EDIT THIS STYLESHEET    =-->
+<!--=                                  =-->
+<!--= This stylesheet is generated     =-->
+<!--= by makeSections.xsl and a        =-->
+<!--= mapping specification.           =-->
+<!--=                                  =-->
+<!--= Revision history:                =-->
+<!--=  1.1 2004-12-08 SRB              =-->
+<!--=   Implement multiple elements... =-->
+<!--=  1.0.1 2004-12-01 SRB            =-->
+<!--=   Fixed missing sections.        =-->
+<!--=                                  =-->
+<!--= $Id$ =-->
+<!--=                                  =-->
+<!--====================================-->
+  <axsl:output indent="yes" encoding="utf-8"/>
+  <axsl:strip-space elements="*"/>
+  <axsl:preserve-space elements="w:t"/>
+  <axsl:template match="w:body">
+    <axsl:copy>
+      <axsl:for-each select="@*">
+        <axsl:copy/>
+      </axsl:for-each>
+      <axsl:variable name="books" select="w:p[w:pPr/w:pStyle/@w:val = &quot;book&quot; or w:pPr/w:pStyle/@w:val = &quot;book-title&quot;]"/>
+      <axsl:variable name="toplevel-components" select="w:p[w:pPr/w:pStyle/@w:val = &quot;article&quot; or w:pPr/w:pStyle/@w:val = &quot;article-title&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix-title&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter-title&quot; or w:pPr/w:pStyle/@w:val = &quot;preface&quot; or w:pPr/w:pStyle/@w:val = &quot;preface-title&quot;]"/>
+      <axsl:variable name="glossarys" select="w:p[w:pPr/w:pStyle/@w:val = &quot;glossary&quot; or w:pPr/w:pStyle/@w:val = &quot;glossary-title&quot;]"/>
+      <axsl:variable name="bibliographys" select="w:p[w:pPr/w:pStyle/@w:val = &quot;bibliography&quot; or w:pPr/w:pStyle/@w:val = &quot;bibliography-title&quot;]"/>
+      <axsl:choose>
+        <axsl:when test="$books">
+          <axsl:apply-templates select="$books[1]/preceding-sibling::*"/>
+          <axsl:apply-templates select="$books[1]" mode="book">
+            <axsl:with-param name="books" select="$books[position() != 1]"/>
+          </axsl:apply-templates>
+        </axsl:when>
+        <axsl:when test="$toplevel-components">
+          <axsl:apply-templates select="$toplevel-components[1]/preceding-sibling::*"/>
+          <axsl:apply-templates select="$toplevel-components[1]" mode="toplevel-component">
+            <axsl:with-param name="toplevel-components" select="$toplevel-components[position() != 1]"/>
+          </axsl:apply-templates>
+        </axsl:when>
+        <axsl:when test="$glossarys">
+          <axsl:apply-templates select="$glossarys[1]/preceding-sibling::*"/>
+          <axsl:apply-templates select="$glossarys[1]" mode="glossary">
+            <axsl:with-param name="glossarys" select="$glossarys[position() != 1]"/>
+          </axsl:apply-templates>
+        </axsl:when>
+        <axsl:when test="$bibliographys">
+          <axsl:apply-templates select="$bibliographys[1]/preceding-sibling::*"/>
+          <axsl:apply-templates select="$bibliographys[1]" mode="bibliography">
+            <axsl:with-param name="bibliographys" select="$bibliographys[position() != 1]"/>
+          </axsl:apply-templates>
+        </axsl:when>
+        <axsl:otherwise>
+          <axsl:apply-templates/>
+        </axsl:otherwise>
+      </axsl:choose>
+    </axsl:copy>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book">
+    <axsl:param name="books" select="/.."/>
+    <axsl:choose>
+      <axsl:when test="$books and (w:pPr/w:pStyle/@w:val = &quot;book&quot; or w:pPr/w:pStyle/@w:val = &quot;book-title&quot;)">
+        <axsl:call-template name="make-book">
+          <axsl:with-param name="books" select="$books"/>
+          <axsl:with-param name="book-components" select="$books[1]/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;article&quot; or w:pPr/w:pStyle/@w:val = &quot;article-title&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix-title&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter-title&quot; or w:pPr/w:pStyle/@w:val = &quot;preface&quot; or w:pPr/w:pStyle/@w:val = &quot;preface-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="make-book">
+          <axsl:with-param name="books" select="$books"/>
+          <axsl:with-param name="book-components" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;article&quot; or w:pPr/w:pStyle/@w:val = &quot;article-title&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix-title&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter-title&quot; or w:pPr/w:pStyle/@w:val = &quot;preface&quot; or w:pPr/w:pStyle/@w:val = &quot;preface-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template name="make-book">
+    <axsl:param name="books" select="/.."/>
+    <axsl:param name="book-components" select="/.."/>
+    <wx:sub-section class="book">
+      <axsl:call-template name="copy"/>
+      <axsl:apply-templates select="following-sibling::*[1]" mode="book-component">
+        <axsl:with-param name="nextbook" select="$books[1]"/>
+        <axsl:with-param name="book-components" select="$book-components"/>
+      </axsl:apply-templates>
+    </wx:sub-section>
+    <axsl:apply-templates select="$books[1]" mode="book">
+      <axsl:with-param name="books" select="$books[position() != 1]"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="w:p" mode="toplevel-component">
+    <axsl:param name="toplevel-components" select="/.."/>
+    <axsl:choose>
+      <axsl:when test="$toplevel-components and (w:pPr/w:pStyle/@w:val = &quot;article&quot; or w:pPr/w:pStyle/@w:val = &quot;article-title&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix-title&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter-title&quot; or w:pPr/w:pStyle/@w:val = &quot;preface&quot; or w:pPr/w:pStyle/@w:val = &quot;preface-title&quot;)">
+        <axsl:call-template name="make-toplevel-component">
+          <axsl:with-param name="toplevel-components" select="$toplevel-components"/>
+          <axsl:with-param name="sect1s" select="$toplevel-components[1]/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="make-toplevel-component">
+          <axsl:with-param name="toplevel-components" select="$toplevel-components"/>
+          <axsl:with-param name="sect1s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template name="make-toplevel-component">
+    <axsl:param name="toplevel-components" select="/.."/>
+    <axsl:param name="sect1s" select="/.."/>
+    <wx:sub-section class="toplevel-component">
+      <axsl:call-template name="copy"/>
+      <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect1">
+        <axsl:with-param name="nexttoplevel-component" select="$toplevel-components[1]"/>
+        <axsl:with-param name="sect1s" select="$sect1s"/>
+      </axsl:apply-templates>
+    </wx:sub-section>
+    <axsl:apply-templates select="$toplevel-components[1]" mode="toplevel-component">
+      <axsl:with-param name="toplevel-components" select="$toplevel-components[position() != 1]"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="w:p" mode="glossary">
+    <axsl:param name="glossarys" select="/.."/>
+    <axsl:choose>
+      <axsl:when test="$glossarys and (w:pPr/w:pStyle/@w:val = &quot;glossary&quot; or w:pPr/w:pStyle/@w:val = &quot;glossary-title&quot;)">
+        <axsl:call-template name="make-glossary">
+          <axsl:with-param name="glossarys" select="$glossarys"/>
+          <axsl:with-param name="glossdivs" select="$glossarys[1]/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;glossdiv&quot; or w:pPr/w:pStyle/@w:val = &quot;glossdiv-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="make-glossary">
+          <axsl:with-param name="glossarys" select="$glossarys"/>
+          <axsl:with-param name="glossdivs" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;glossdiv&quot; or w:pPr/w:pStyle/@w:val = &quot;glossdiv-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template name="make-glossary">
+    <axsl:param name="glossarys" select="/.."/>
+    <axsl:param name="glossdivs" select="/.."/>
+    <wx:sub-section class="glossary">
+      <axsl:call-template name="copy"/>
+      <axsl:apply-templates select="following-sibling::*[1]" mode="glossary-glossdiv">
+        <axsl:with-param name="nextglossary" select="$glossarys[1]"/>
+        <axsl:with-param name="glossdivs" select="$glossdivs"/>
+      </axsl:apply-templates>
+    </wx:sub-section>
+    <axsl:apply-templates select="$glossarys[1]" mode="glossary">
+      <axsl:with-param name="glossarys" select="$glossarys[position() != 1]"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="w:p" mode="bibliography">
+    <axsl:param name="bibliographys" select="/.."/>
+    <axsl:choose>
+      <axsl:when test="$bibliographys and (w:pPr/w:pStyle/@w:val = &quot;bibliography&quot; or w:pPr/w:pStyle/@w:val = &quot;bibliography-title&quot;)">
+        <axsl:call-template name="make-bibliography">
+          <axsl:with-param name="bibliographys" select="$bibliographys"/>
+          <axsl:with-param name="bibliodivs" select="$bibliographys[1]/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;bibliodiv&quot; or w:pPr/w:pStyle/@w:val = &quot;bibliodiv-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="make-bibliography">
+          <axsl:with-param name="bibliographys" select="$bibliographys"/>
+          <axsl:with-param name="bibliodivs" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;bibliodiv&quot; or w:pPr/w:pStyle/@w:val = &quot;bibliodiv-title&quot;]"/>
+        </axsl:call-template>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template name="make-bibliography">
+    <axsl:param name="bibliographys" select="/.."/>
+    <axsl:param name="bibliodivs" select="/.."/>
+    <wx:sub-section class="bibliography">
+      <axsl:call-template name="copy"/>
+      <axsl:apply-templates select="following-sibling::*[1]" mode="bibliography-bibliodiv">
+        <axsl:with-param name="nextbibliography" select="$bibliographys[1]"/>
+        <axsl:with-param name="bibliodivs" select="$bibliodivs"/>
+      </axsl:apply-templates>
+    </wx:sub-section>
+    <axsl:apply-templates select="$bibliographys[1]" mode="bibliography">
+      <axsl:with-param name="bibliographys" select="$bibliographys[position() != 1]"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book-component">
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextbook)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;article&quot; or w:pPr/w:pStyle/@w:val = &quot;article-title&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix-title&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter-title&quot; or w:pPr/w:pStyle/@w:val = &quot;preface&quot; or w:pPr/w:pStyle/@w:val = &quot;preface-title&quot;">
+        <axsl:variable name="nextbook-component" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;article&quot; or w:pPr/w:pStyle/@w:val = &quot;article-title&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix&quot; or w:pPr/w:pStyle/@w:val = &quot;appendix-title&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter&quot; or w:pPr/w:pStyle/@w:val = &quot;chapter-title&quot; or w:pPr/w:pStyle/@w:val = &quot;preface&quot; or w:pPr/w:pStyle/@w:val = &quot;preface-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextbook-component">
+            <axsl:variable name="sect1s" select="$nextbook-component/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;]"/>
+            <wx:sub-section class="book-component">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="count($book-components|$nextbook-component) = count($book-components)">
+              <axsl:apply-templates select="$nextbook-component" mode="book-component">
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect1s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;]"/>
+            <wx:sub-section class="book-component">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="count($book-components|$nextbook-component) = count($book-components)">
+              <axsl:apply-templates select="$nextbook-component" mode="book-component">
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="book-component">
+          <axsl:with-param name="nextbook" select="$nextbook"/>
+          <axsl:with-param name="book-components" select="$book-components"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book-sect1">
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;">
+        <axsl:variable name="nextsect1" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect1">
+            <axsl:variable name="sect2s" select="$nextsect1/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;]"/>
+            <wx:sub-section class="sect1">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect1 and (not($book-components) or count($sect1s|$nextsect1) = count($sect1s))">
+              <axsl:apply-templates select="$nextsect1" mode="book-sect1">
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect2s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;]"/>
+            <wx:sub-section class="sect1">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect1 and (not($book-components) or count($sect1s|$nextsect1) = count($sect1s))">
+              <axsl:apply-templates select="$nextsect1" mode="book-sect1">
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+          <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+          <axsl:with-param name="nextbook" select="$nextbook"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+          <axsl:with-param name="book-components" select="$book-components"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book-sect2">
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;">
+        <axsl:variable name="nextsect2" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect2">
+            <axsl:variable name="sect3s" select="$nextsect2/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;]"/>
+            <wx:sub-section class="sect2">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+              <axsl:apply-templates select="$nextsect2" mode="book-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect3s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;]"/>
+            <wx:sub-section class="sect2">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+              <axsl:apply-templates select="$nextsect2" mode="book-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+          <axsl:with-param name="nextbook" select="$nextbook"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+          <axsl:with-param name="book-components" select="$book-components"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book-sect3">
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;">
+        <axsl:variable name="nextsect3" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect3">
+            <axsl:variable name="sect4s" select="$nextsect3/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;]"/>
+            <wx:sub-section class="sect3">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+              <axsl:apply-templates select="$nextsect3" mode="book-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect4s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;]"/>
+            <wx:sub-section class="sect3">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+              <axsl:apply-templates select="$nextsect3" mode="book-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+          <axsl:with-param name="nextbook" select="$nextbook"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+          <axsl:with-param name="book-components" select="$book-components"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book-sect4">
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;">
+        <axsl:variable name="nextsect4" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect4">
+            <axsl:variable name="sect5s" select="$nextsect4/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;]"/>
+            <wx:sub-section class="sect4">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+                <axsl:with-param name="nextsect4" select="$nextsect4"/>
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect5s" select="$sect5s"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+              <axsl:apply-templates select="$nextsect4" mode="book-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect5s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;]"/>
+            <wx:sub-section class="sect4">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+                <axsl:with-param name="nextsect4" select="$nextsect4"/>
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect5s" select="$sect5s"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+              <axsl:apply-templates select="$nextsect4" mode="book-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+                <axsl:with-param name="nextbook" select="$nextbook"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+                <axsl:with-param name="book-components" select="$book-components"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+          <axsl:with-param name="nextsect3" select="$nextsect3"/>
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+          <axsl:with-param name="nextbook" select="$nextbook"/>
+          <axsl:with-param name="sect4s" select="$sect4s"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+          <axsl:with-param name="book-components" select="$book-components"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book-sect5">
+    <axsl:param name="nextsect4" select="/.."/>
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect5s"/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;">
+        <axsl:variable name="nextsect5" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;][1]"/>
+        <wx:sub-section class="sect5">
+          <axsl:call-template name="copy"/>
+          <axsl:apply-templates select="following-sibling::*[1]" mode="book-terminal">
+            <axsl:with-param name="nextsect5" select="$nextsect5"/>
+            <axsl:with-param name="nextsect4" select="$nextsect4"/>
+            <axsl:with-param name="nextsect3" select="$nextsect3"/>
+            <axsl:with-param name="nextsect2" select="$nextsect2"/>
+            <axsl:with-param name="nextsect1" select="$nextsect1"/>
+            <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+            <axsl:with-param name="nextbook" select="$nextbook"/>
+            <axsl:with-param name="sect5s" select="$sect5s"/>
+            <axsl:with-param name="sect4s" select="$sect4s"/>
+            <axsl:with-param name="sect3s" select="$sect3s"/>
+            <axsl:with-param name="sect2s" select="$sect2s"/>
+            <axsl:with-param name="sect1s" select="$sect1s"/>
+            <axsl:with-param name="book-components" select="$book-components"/>
+          </axsl:apply-templates>
+        </wx:sub-section>
+        <axsl:if test="$nextsect5 and (not($sect4s) or count($sect5s|$nextsect5) = count($sect5s))">
+          <axsl:apply-templates select="$nextsect5" mode="book-sect5">
+            <axsl:with-param name="nextsect4" select="$nextsect4"/>
+            <axsl:with-param name="nextsect3" select="$nextsect3"/>
+            <axsl:with-param name="nextsect2" select="$nextsect2"/>
+            <axsl:with-param name="nextsect1" select="$nextsect1"/>
+            <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+            <axsl:with-param name="nextbook" select="$nextbook"/>
+            <axsl:with-param name="sect5s" select="$sect5s"/>
+            <axsl:with-param name="sect4s" select="$sect4s"/>
+            <axsl:with-param name="sect3s" select="$sect3s"/>
+            <axsl:with-param name="sect2s" select="$sect2s"/>
+            <axsl:with-param name="sect1s" select="$sect1s"/>
+            <axsl:with-param name="book-components" select="$book-components"/>
+          </axsl:apply-templates>
+        </axsl:if>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+          <axsl:with-param name="nextsect4" select="$nextsect4"/>
+          <axsl:with-param name="nextsect3" select="$nextsect3"/>
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+          <axsl:with-param name="nextbook" select="$nextbook"/>
+          <axsl:with-param name="sect5s" select="$sect5s"/>
+          <axsl:with-param name="sect4s" select="$sect4s"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+          <axsl:with-param name="book-components" select="$book-components"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="toplevel-sect1">
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;">
+        <axsl:variable name="nextsect1" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect1&quot; or w:pPr/w:pStyle/@w:val = &quot;sect1-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect1">
+            <axsl:variable name="sect2s" select="$nextsect1/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;]"/>
+            <wx:sub-section class="sect1">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="count($sect1s|$nextsect1) = count($sect1s)">
+              <axsl:apply-templates select="$nextsect1" mode="toplevel-sect1">
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect2s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;]"/>
+            <wx:sub-section class="sect1">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="count($sect1s|$nextsect1) = count($sect1s)">
+              <axsl:apply-templates select="$nextsect1" mode="toplevel-sect1">
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect1">
+          <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="toplevel-sect2">
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;">
+        <axsl:variable name="nextsect2" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect2&quot; or w:pPr/w:pStyle/@w:val = &quot;sect2-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect2">
+            <axsl:variable name="sect3s" select="$nextsect2/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;]"/>
+            <wx:sub-section class="sect2">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+              <axsl:apply-templates select="$nextsect2" mode="toplevel-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect3s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;]"/>
+            <wx:sub-section class="sect2">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect2 and (not($sect1s) or count($sect2s|$nextsect2) = count($sect2s))">
+              <axsl:apply-templates select="$nextsect2" mode="toplevel-sect2">
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="toplevel-sect3">
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;">
+        <axsl:variable name="nextsect3" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect3&quot; or w:pPr/w:pStyle/@w:val = &quot;sect3-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect3">
+            <axsl:variable name="sect4s" select="$nextsect3/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;]"/>
+            <wx:sub-section class="sect3">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+              <axsl:apply-templates select="$nextsect3" mode="toplevel-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect4s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;]"/>
+            <wx:sub-section class="sect3">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect3 and (not($sect2s) or count($sect3s|$nextsect3) = count($sect3s))">
+              <axsl:apply-templates select="$nextsect3" mode="toplevel-sect3">
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="toplevel-sect4">
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;">
+        <axsl:variable name="nextsect4" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect4&quot; or w:pPr/w:pStyle/@w:val = &quot;sect4-title&quot;][1]"/>
+        <axsl:choose>
+          <axsl:when test="$nextsect4">
+            <axsl:variable name="sect5s" select="$nextsect4/preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;]"/>
+            <wx:sub-section class="sect4">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+                <axsl:with-param name="nextsect4" select="$nextsect4"/>
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect5s" select="$sect5s"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+              <axsl:apply-templates select="$nextsect4" mode="toplevel-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:when>
+          <axsl:otherwise>
+            <axsl:variable name="sect5s" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;]"/>
+            <wx:sub-section class="sect4">
+              <axsl:call-template name="copy"/>
+              <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+                <axsl:with-param name="nextsect4" select="$nextsect4"/>
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect5s" select="$sect5s"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </wx:sub-section>
+            <axsl:if test="$nextsect4 and (not($sect3s) or count($sect4s|$nextsect4) = count($sect4s))">
+              <axsl:apply-templates select="$nextsect4" mode="toplevel-sect4">
+                <axsl:with-param name="nextsect3" select="$nextsect3"/>
+                <axsl:with-param name="nextsect2" select="$nextsect2"/>
+                <axsl:with-param name="nextsect1" select="$nextsect1"/>
+                <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+                <axsl:with-param name="sect4s" select="$sect4s"/>
+                <axsl:with-param name="sect3s" select="$sect3s"/>
+                <axsl:with-param name="sect2s" select="$sect2s"/>
+                <axsl:with-param name="sect1s" select="$sect1s"/>
+              </axsl:apply-templates>
+            </axsl:if>
+          </axsl:otherwise>
+        </axsl:choose>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+          <axsl:with-param name="nextsect3" select="$nextsect3"/>
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+          <axsl:with-param name="sect4s" select="$sect4s"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="toplevel-sect5">
+    <axsl:param name="nextsect4" select="/.."/>
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect5s"/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;">
+        <axsl:variable name="nextsect5" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;sect5&quot; or w:pPr/w:pStyle/@w:val = &quot;sect5-title&quot;][1]"/>
+        <wx:sub-section class="sect5">
+          <axsl:call-template name="copy"/>
+          <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-terminal">
+            <axsl:with-param name="nextsect5" select="$nextsect5"/>
+            <axsl:with-param name="nextsect4" select="$nextsect4"/>
+            <axsl:with-param name="nextsect3" select="$nextsect3"/>
+            <axsl:with-param name="nextsect2" select="$nextsect2"/>
+            <axsl:with-param name="nextsect1" select="$nextsect1"/>
+            <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+            <axsl:with-param name="sect5s" select="$sect5s"/>
+            <axsl:with-param name="sect4s" select="$sect4s"/>
+            <axsl:with-param name="sect3s" select="$sect3s"/>
+            <axsl:with-param name="sect2s" select="$sect2s"/>
+            <axsl:with-param name="sect1s" select="$sect1s"/>
+          </axsl:apply-templates>
+        </wx:sub-section>
+        <axsl:if test="$nextsect5 and (not($sect4s) or count($sect5s|$nextsect5) = count($sect5s))">
+          <axsl:apply-templates select="$nextsect5" mode="toplevel-sect5">
+            <axsl:with-param name="nextsect4" select="$nextsect4"/>
+            <axsl:with-param name="nextsect3" select="$nextsect3"/>
+            <axsl:with-param name="nextsect2" select="$nextsect2"/>
+            <axsl:with-param name="nextsect1" select="$nextsect1"/>
+            <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+            <axsl:with-param name="sect5s" select="$sect5s"/>
+            <axsl:with-param name="sect4s" select="$sect4s"/>
+            <axsl:with-param name="sect3s" select="$sect3s"/>
+            <axsl:with-param name="sect2s" select="$sect2s"/>
+            <axsl:with-param name="sect1s" select="$sect1s"/>
+          </axsl:apply-templates>
+        </axsl:if>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+          <axsl:with-param name="nextsect4" select="$nextsect4"/>
+          <axsl:with-param name="nextsect3" select="$nextsect3"/>
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+          <axsl:with-param name="sect5s" select="$sect5s"/>
+          <axsl:with-param name="sect4s" select="$sect4s"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="glossary-glossdiv">
+    <axsl:param name="nextglossary" select="/.."/>
+    <axsl:param select="/.." name="glossdivs"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextglossary)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;glossdiv&quot; or w:pPr/w:pStyle/@w:val = &quot;glossdiv-title&quot;">
+        <axsl:variable name="nextglossdiv" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;glossdiv&quot; or w:pPr/w:pStyle/@w:val = &quot;glossdiv-title&quot;][1]"/>
+        <wx:sub-section class="glossdiv">
+          <axsl:call-template name="copy"/>
+          <axsl:apply-templates select="following-sibling::*[1]" mode="glossary-terminal">
+            <axsl:with-param name="nextglossdiv" select="$nextglossdiv"/>
+            <axsl:with-param name="nextglossary" select="$nextglossary"/>
+            <axsl:with-param name="glossdivs" select="$glossdivs"/>
+          </axsl:apply-templates>
+        </wx:sub-section>
+        <axsl:if test="count($glossdivs|$nextglossdiv) = count($glossdivs)">
+          <axsl:apply-templates select="$nextglossdiv" mode="glossary-glossdiv">
+            <axsl:with-param name="nextglossary" select="$nextglossary"/>
+            <axsl:with-param name="glossdivs" select="$glossdivs"/>
+          </axsl:apply-templates>
+        </axsl:if>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="glossary-glossdiv">
+          <axsl:with-param name="nextglossary" select="$nextglossary"/>
+          <axsl:with-param name="glossdivs" select="$glossdivs"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="bibliography-bibliodiv">
+    <axsl:param name="nextbibliography" select="/.."/>
+    <axsl:param select="/.." name="bibliodivs"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextbibliography)"/>
+      <axsl:when test="w:pPr/w:pStyle/@w:val = &quot;bibliodiv&quot; or w:pPr/w:pStyle/@w:val = &quot;bibliodiv-title&quot;">
+        <axsl:variable name="nextbibliodiv" select="following-sibling::w:p[w:pPr/w:pStyle/@w:val = &quot;bibliodiv&quot; or w:pPr/w:pStyle/@w:val = &quot;bibliodiv-title&quot;][1]"/>
+        <wx:sub-section class="bibliodiv">
+          <axsl:call-template name="copy"/>
+          <axsl:apply-templates select="following-sibling::*[1]" mode="bibliography-terminal">
+            <axsl:with-param name="nextbibliodiv" select="$nextbibliodiv"/>
+            <axsl:with-param name="nextbibliography" select="$nextbibliography"/>
+            <axsl:with-param name="bibliodivs" select="$bibliodivs"/>
+          </axsl:apply-templates>
+        </wx:sub-section>
+        <axsl:if test="count($bibliodivs|$nextbibliodiv) = count($bibliodivs)">
+          <axsl:apply-templates select="$nextbibliodiv" mode="bibliography-bibliodiv">
+            <axsl:with-param name="nextbibliography" select="$nextbibliography"/>
+            <axsl:with-param name="bibliodivs" select="$bibliodivs"/>
+          </axsl:apply-templates>
+        </axsl:if>
+      </axsl:when>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="bibliography-bibliodiv">
+          <axsl:with-param name="nextbibliography" select="$nextbibliography"/>
+          <axsl:with-param name="bibliodivs" select="$bibliodivs"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="book-terminal">
+    <axsl:param name="nextsect5" select="/.."/>
+    <axsl:param name="nextsect4" select="/.."/>
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect5s"/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect5)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook-component)"/>
+      <axsl:when test="generate-id() = generate-id($nextbook)"/>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="book-terminal">
+          <axsl:with-param name="nextsect5" select="$nextsect5"/>
+          <axsl:with-param name="nextsect4" select="$nextsect4"/>
+          <axsl:with-param name="nextsect3" select="$nextsect3"/>
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+          <axsl:with-param name="nextbook" select="$nextbook"/>
+          <axsl:with-param name="sect5s" select="$sect5s"/>
+          <axsl:with-param name="sect4s" select="$sect4s"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+          <axsl:with-param name="book-components" select="$book-components"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="toplevel-terminal">
+    <axsl:param name="nextsect5" select="/.."/>
+    <axsl:param name="nextsect4" select="/.."/>
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect5s"/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextsect5)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect4)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect3)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect2)"/>
+      <axsl:when test="generate-id() = generate-id($nextsect1)"/>
+      <axsl:when test="generate-id() = generate-id($nexttoplevel-component)"/>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-terminal">
+          <axsl:with-param name="nextsect5" select="$nextsect5"/>
+          <axsl:with-param name="nextsect4" select="$nextsect4"/>
+          <axsl:with-param name="nextsect3" select="$nextsect3"/>
+          <axsl:with-param name="nextsect2" select="$nextsect2"/>
+          <axsl:with-param name="nextsect1" select="$nextsect1"/>
+          <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+          <axsl:with-param name="sect5s" select="$sect5s"/>
+          <axsl:with-param name="sect4s" select="$sect4s"/>
+          <axsl:with-param name="sect3s" select="$sect3s"/>
+          <axsl:with-param name="sect2s" select="$sect2s"/>
+          <axsl:with-param name="sect1s" select="$sect1s"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="glossary-terminal">
+    <axsl:param name="nextglossdiv" select="/.."/>
+    <axsl:param name="nextglossary" select="/.."/>
+    <axsl:param select="/.." name="glossdivs"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextglossdiv)"/>
+      <axsl:when test="generate-id() = generate-id($nextglossary)"/>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="glossary-terminal">
+          <axsl:with-param name="nextglossdiv" select="$nextglossdiv"/>
+          <axsl:with-param name="nextglossary" select="$nextglossary"/>
+          <axsl:with-param name="glossdivs" select="$glossdivs"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="w:p" mode="bibliography-terminal">
+    <axsl:param name="nextbibliodiv" select="/.."/>
+    <axsl:param name="nextbibliography" select="/.."/>
+    <axsl:param select="/.." name="bibliodivs"/>
+    <axsl:choose>
+      <axsl:when test="generate-id() = generate-id($nextbibliodiv)"/>
+      <axsl:when test="generate-id() = generate-id($nextbibliography)"/>
+      <axsl:otherwise>
+        <axsl:call-template name="copy"/>
+        <axsl:apply-templates select="following-sibling::*[1]" mode="bibliography-terminal">
+          <axsl:with-param name="nextbibliodiv" select="$nextbibliodiv"/>
+          <axsl:with-param name="nextbibliography" select="$nextbibliography"/>
+          <axsl:with-param name="bibliodivs" select="$bibliodivs"/>
+        </axsl:apply-templates>
+      </axsl:otherwise>
+    </axsl:choose>
+  </axsl:template>
+  <axsl:template match="*">
+    <axsl:call-template name="copy"/>
+  </axsl:template>
+  <axsl:template match="*" mode="book">
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="book"/>
+  </axsl:template>
+  <axsl:template match="*" mode="book-component">
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="book-component">
+      <axsl:with-param name="nextbook" select="$nextbook"/>
+      <axsl:with-param name="book-components" select="$book-components"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="book-sect1">
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect1">
+      <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+      <axsl:with-param name="nextbook" select="$nextbook"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+      <axsl:with-param name="book-components" select="$book-components"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="book-sect2">
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect2">
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+      <axsl:with-param name="nextbook" select="$nextbook"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+      <axsl:with-param name="book-components" select="$book-components"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="book-sect3">
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect3">
+      <axsl:with-param name="nextsect2" select="$nextsect2"/>
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+      <axsl:with-param name="nextbook" select="$nextbook"/>
+      <axsl:with-param name="sect3s" select="$sect3s"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+      <axsl:with-param name="book-components" select="$book-components"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="book-sect4">
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect4">
+      <axsl:with-param name="nextsect3" select="$nextsect3"/>
+      <axsl:with-param name="nextsect2" select="$nextsect2"/>
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+      <axsl:with-param name="nextbook" select="$nextbook"/>
+      <axsl:with-param name="sect4s" select="$sect4s"/>
+      <axsl:with-param name="sect3s" select="$sect3s"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+      <axsl:with-param name="book-components" select="$book-components"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="book-sect5">
+    <axsl:param name="nextsect4" select="/.."/>
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nextbook-component" select="/.."/>
+    <axsl:param name="nextbook" select="/.."/>
+    <axsl:param select="/.." name="sect5s"/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:param select="/.." name="book-components"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="book-sect5">
+      <axsl:with-param name="nextsect4" select="$nextsect4"/>
+      <axsl:with-param name="nextsect3" select="$nextsect3"/>
+      <axsl:with-param name="nextsect2" select="$nextsect2"/>
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nextbook-component" select="$nextbook-component"/>
+      <axsl:with-param name="nextbook" select="$nextbook"/>
+      <axsl:with-param name="sect5s" select="$sect5s"/>
+      <axsl:with-param name="sect4s" select="$sect4s"/>
+      <axsl:with-param name="sect3s" select="$sect3s"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+      <axsl:with-param name="book-components" select="$book-components"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="toplevel-component">
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-component"/>
+  </axsl:template>
+  <axsl:template match="*" mode="toplevel-sect1">
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect1">
+      <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="toplevel-sect2">
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect2">
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="toplevel-sect3">
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect3">
+      <axsl:with-param name="nextsect2" select="$nextsect2"/>
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+      <axsl:with-param name="sect3s" select="$sect3s"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="toplevel-sect4">
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect4">
+      <axsl:with-param name="nextsect3" select="$nextsect3"/>
+      <axsl:with-param name="nextsect2" select="$nextsect2"/>
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+      <axsl:with-param name="sect4s" select="$sect4s"/>
+      <axsl:with-param name="sect3s" select="$sect3s"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="toplevel-sect5">
+    <axsl:param name="nextsect4" select="/.."/>
+    <axsl:param name="nextsect3" select="/.."/>
+    <axsl:param name="nextsect2" select="/.."/>
+    <axsl:param name="nextsect1" select="/.."/>
+    <axsl:param name="nexttoplevel-component" select="/.."/>
+    <axsl:param select="/.." name="sect5s"/>
+    <axsl:param select="/.." name="sect4s"/>
+    <axsl:param select="/.." name="sect3s"/>
+    <axsl:param select="/.." name="sect2s"/>
+    <axsl:param select="/.." name="sect1s"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="toplevel-sect5">
+      <axsl:with-param name="nextsect4" select="$nextsect4"/>
+      <axsl:with-param name="nextsect3" select="$nextsect3"/>
+      <axsl:with-param name="nextsect2" select="$nextsect2"/>
+      <axsl:with-param name="nextsect1" select="$nextsect1"/>
+      <axsl:with-param name="nexttoplevel-component" select="$nexttoplevel-component"/>
+      <axsl:with-param name="sect5s" select="$sect5s"/>
+      <axsl:with-param name="sect4s" select="$sect4s"/>
+      <axsl:with-param name="sect3s" select="$sect3s"/>
+      <axsl:with-param name="sect2s" select="$sect2s"/>
+      <axsl:with-param name="sect1s" select="$sect1s"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="glossary">
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="glossary"/>
+  </axsl:template>
+  <axsl:template match="*" mode="glossary-glossdiv">
+    <axsl:param name="nextglossary" select="/.."/>
+    <axsl:param select="/.." name="glossdivs"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="glossary-glossdiv">
+      <axsl:with-param name="nextglossary" select="$nextglossary"/>
+      <axsl:with-param name="glossdivs" select="$glossdivs"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template match="*" mode="bibliography">
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="bibliography"/>
+  </axsl:template>
+  <axsl:template match="*" mode="bibliography-bibliodiv">
+    <axsl:param name="nextbibliography" select="/.."/>
+    <axsl:param select="/.." name="bibliodivs"/>
+    <axsl:call-template name="copy"/>
+    <axsl:apply-templates select="following-sibling::*[1]" mode="bibliography-bibliodiv">
+      <axsl:with-param name="nextbibliography" select="$nextbibliography"/>
+      <axsl:with-param name="bibliodivs" select="$bibliodivs"/>
+    </axsl:apply-templates>
+  </axsl:template>
+  <axsl:template name="copy">
+    <axsl:copy>
+      <axsl:for-each select="@*">
+        <axsl:copy/>
+      </axsl:for-each>
+      <axsl:apply-templates/>
+    </axsl:copy>
+  </axsl:template>
+</axsl:stylesheet>
index 15f39e1073522dbfdbf1bb03839cdd2af26ee206..312a7ba5288d52d23f13550399c08c3c47e55bf1 100755 (executable)
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE xsl:stylesheet [
 
-<!ENTITY para "w:p[w:pPr/w:pStyle[@w:val='para']]">
+<!ENTITY para "w:p[w:pPr/w:pStyle[@w:val='para' or @w:val='Normal']]">
+<!ENTITY continue "w:p[w:pPr/w:pStyle/@w:val='para-continue']">
 
 <!ENTITY itemizedlist "w:p[w:pPr/w:pStyle[starts-with(@w:val,'itemizedlist')]]">
 <!ENTITY itemizedlist1 "w:p[w:pPr/w:pStyle[@w:val = 'itemizedlist']]">
 <!ENTITY orderedlist "w:p[w:pPr/w:pStyle[starts-with(@w:val,'orderedlist')]]">
 <!ENTITY orderedlist1 "w:p[w:pPr/w:pStyle[@w:val = 'orderedlist']]">
-<!ENTITY listcontinue "w:p[w:pPr/w:pStyle[starts-with(@w:val,'listcontinue')]]">
 
 <!ENTITY variablelist "w:tbl[w:tblPr/w:tblStyle[starts-with(@w:val,'variablelist')]]">
 
 <!ENTITY verbatim "w:p[w:pPr/w:pStyle[@w:val='programlisting' or @w:val='screen' or @w:val='literallayout']]">
+<!ENTITY admontitle "w:p[w:pPr/w:pStyle[@w:val='note-title' or @w:val='caution-title' or @w:val='important-title' or @w:val='tip-title' or @w:val='warning-title']]">
 <!ENTITY admon "w:p[w:pPr/w:pStyle[@w:val='note' or @w:val='caution' or @w:val='important' or @w:val='tip' or @w:val='warning']]">
-<!ENTITY admoncontinue "w:p[w:pPr/w:pStyle[@w:val='notecontinue' or @w:val='cautioncontinue' or @w:val='importantcontinue' or @w:val='tipcontinue' or @w:val='warningcontinue']]">
 <!ENTITY figure "w:p[w:pPr/w:pStyle[@w:val='figure']]">
 <!ENTITY figuretitle "w:p[w:pPr/w:pStyle[@w:val='figuretitle']]">
 <!ENTITY figurecaption "w:p[w:pPr/w:pStyle[@w:val='figuretitle']]">
@@ -57,6 +57,8 @@
          match="w:list"
          use="w:ilst/@w:val"/>
 
+<xsl:strip-space elements='*'/>
+<xsl:preserve-space elements='w:t'/>
 
 <xsl:template match="/">
   <xsl:apply-templates select="//w:body"/>
 
   <xsl:variable name="element.name">
     <xsl:choose>
-      <xsl:when test="$style = 'article'">article</xsl:when>
-      <xsl:when test="$style = 'appendix'">appendix</xsl:when>
-      <xsl:when test="$style = 'sect1' and 
-                                $nest.sections != 0">section</xsl:when>
-      <xsl:when test="$style = 'sect1'">sect1</xsl:when>
-      <xsl:when test="$style = 'sect2' and 
-                                $nest.sections != 0">section</xsl:when>
-      <xsl:when test="$style = 'sect2'">sect2</xsl:when>
-      <xsl:when test="$style = 'sect3' and 
-                                $nest.sections != 0">section</xsl:when>
-      <xsl:when test="$style = 'sect3'">sect3</xsl:when>
-      <xsl:when test="$style = 'sect4' and 
-                                $nest.sections != 0">section</xsl:when>
-      <xsl:when test="$style = 'sect4'">sect4</xsl:when>
-      <xsl:when test="$style = 'sect5' and 
-                                $nest.sections != 0">section</xsl:when>
-      <xsl:when test="$style = 'sect5'">sect5</xsl:when>
+      <xsl:when test="$style = 'article' or
+                      $style = 'article-title'">article</xsl:when>
+      <xsl:when test="$style = 'appendix' or
+                      $style = 'appendix-title'">appendix</xsl:when>
+      <xsl:when test="($style = 'sect1' or
+                       $style = 'sect1-title') and 
+                      $nest.sections != 0">section</xsl:when>
+      <xsl:when test="$style = 'sect1' or
+                      $style = 'sect1-title'">sect1</xsl:when>
+      <xsl:when test="($style = 'sect2' or
+                       $style = 'sect2-title') and 
+                      $nest.sections != 0">section</xsl:when>
+      <xsl:when test="$style = 'sect2' or
+                      $style = 'sect2-title'">sect2</xsl:when>
+      <xsl:when test="($style = 'sect3' or
+                       $style = 'sect3-title') and 
+                      $nest.sections != 0">section</xsl:when>
+      <xsl:when test="$style = 'sect3' or
+                      $style = 'sect3-title'">sect3</xsl:when>
+      <xsl:when test="($style = 'sect4' or
+                       $style = 'sect4-title') and 
+                      $nest.sections != 0">section</xsl:when>
+      <xsl:when test="$style = 'sect4' or
+                      $style = 'sect4-title'">sect4</xsl:when>
+      <xsl:when test="($style = 'sect5' or
+                       $style = 'sect5') and 
+                      $nest.sections != 0">section</xsl:when>
+      <xsl:when test="$style = 'sect5' or
+                      $style = 'sect5-title'">sect5</xsl:when>
       <xsl:otherwise>bogus</xsl:otherwise>
     </xsl:choose>
   </xsl:variable>
 
-  <xsl:element name="{$element.name}">
-    <xsl:call-template name="object.id"/>
-    <xsl:apply-templates mode="group"/>
-  </xsl:element>
+  <xsl:choose>
+    <xsl:when test='$element.name != "bogus"'>
+      <xsl:element name="{$element.name}">
+        <xsl:call-template name="object.id"/>
+        <xsl:apply-templates mode="group"/>
+      </xsl:element>
+    </xsl:when>
+
+    <xsl:otherwise>
+      <xsl:apply-templates mode='group'/>
+    </xsl:otherwise>
+  </xsl:choose>
     
 </xsl:template>
 
 </xsl:template>
 
 <!-- Ordinary para -->
-<xsl:template match="&para;" mode="group">
+<xsl:template match="&para;|w:p[not(w:pPr/w:pStyle)]" mode="group">
   <para>
     <xsl:call-template name="object.id"/>
     <xsl:apply-templates select="w:r|w:hlink"/>
 <xsl:template match="*" mode="group">
 </xsl:template>
 
+<!-- continued paragraphs are included by their (preceding) parent -->
+<xsl:template match="&continue;" mode='group'/>
 
 <!-- Match on the first one of an itemizedlist -->
 <xsl:template match="&itemizedlist1;[not(preceding-sibling::*[1]
-                     [self::&itemizedlist; or self::&listcontinue;])]" 
+                     [self::&itemizedlist; or self::&continue;])]" 
                      priority="2"
                      mode="group">
 
   <!-- Identify the node that follows all the listitems -->
   <xsl:variable name="stop.node"
               select="generate-id(following-sibling::*[not(self::&itemizedlist;
-                      or self::&listcontinue;
+                      or self::&continue;
                       or self::&orderedlist;)][1])"/>
                        
   <!-- Start the list and process all the level 1 listitems -->
       <xsl:apply-templates/>
     </para>
     <xsl:apply-templates mode="item" 
-                select="following-sibling::*[1][self::&listcontinue;]"/>
+                select="following-sibling::*[1][self::&continue;]"/>
     <!-- Now any nested list is inside this list item -->
     <xsl:apply-templates mode="subgroup"
             select="following-sibling::*[1]
                         self::&orderedlist;[&listlevel; &lt; $depth] or
                         not(self::&itemizedlist; or 
                             self::&orderedlist; or
-                            self::&listcontinue;)]
+                            self::&continue;)]
                         [1])"/>
 
   <itemizedlist>
 <xsl:template match="&itemizedlist;[preceding-sibling::*[1]
                      [self::&itemizedlist; or 
                       self::&orderedlist; or
-                      self::&listcontinue;]]" 
+                      self::&continue;]]" 
                      mode="group">
   <!-- Handle with mode = group -->
 </xsl:template>
 
 <!-- Match on the first one of an orderedlist -->
 <xsl:template match="&orderedlist1;[not(preceding-sibling::*[1]
-                     [self::&orderedlist; or self::&listcontinue;])]" 
+                     [self::&orderedlist; or self::&continue;])]" 
                      priority="2"
                      mode="group">
 
   <!-- Identify the node that follows all the listitems -->
   <xsl:variable name="stop.node"
               select="generate-id(following-sibling::*[not(self::&itemizedlist;
-                      or self::&listcontinue;
+                      or self::&continue;
                       or self::&orderedlist;)][1])"/>
                        
   <!-- Start the list and process all the level 1 listitems -->
       <xsl:apply-templates/>
     </para>
     <xsl:apply-templates mode="item" 
-                select="following-sibling::*[1][self::&listcontinue;]"/>
+                select="following-sibling::*[1][self::&continue;]"/>
     <!-- Now any nested list is inside this list item -->
     <xsl:apply-templates mode="subgroup"
             select="following-sibling::*[1]
                         self::&orderedlist;[&listlevel; &lt; $depth] or
                         not(self::&itemizedlist; or 
                             self::&orderedlist; or
-                            self::&listcontinue;)]
+                            self::&continue;)]
                         [1])"/>
 
   <orderedlist>
 <xsl:template match="&orderedlist;[preceding-sibling::*[1]
                      [self::&itemizedlist; or 
                       self::&orderedlist; or
-                      self::&listcontinue;]]" 
+                      self::&continue;]]" 
                      mode="group">
   <!-- Handle with mode = group -->
 </xsl:template>
 
-
-<xsl:template match="&listcontinue;" mode="item">
+<xsl:template match="&continue;" mode="item">
   <para>
     <xsl:call-template name="object.id"/>
     <xsl:apply-templates select="w:r|w:hlink"/>
   </para>
   <!-- Continue to process any immediate following -->
   <xsl:apply-templates mode="item" 
-                select="following-sibling::*[1][self::&listcontinue;]"/>
+                select="following-sibling::*[1][self::&continue;]"/>
 </xsl:template>
 
-<xsl:template match="&listcontinue;" mode="group">
+<xsl:template match="&continue;" mode="group">
   <!-- Handled in item mode -->
 </xsl:template>
 
   <xsl:apply-templates select="w:r|w:hlink"/>
 </xsl:template>
 
+<xsl:template match='&admontitle;' mode='group'>
+  <xsl:variable name='element.name'
+    select='substring-before(w:pPr/w:pStyle/@w:val, "-title")'/>
+
+  <xsl:element name='{$element.name}'>
+    <xsl:call-template name='object.id'/>
+    <title>
+      <xsl:apply-templates select='w:r|w:hlink'/>
+    </title>
+
+    <!-- Identify the node that follows all admonitions of the same type -->
+    <xsl:variable name='stop.node'
+      select='generate-id(following-sibling::w:p[w:p/w:pStyle/@w:val != $element.name][1])'/>
+
+    <xsl:choose>
+      <xsl:when test='$stop.node'>
+        <xsl:apply-templates
+          select='following-sibling::w:p[w:p/w:pStyle/@w:val = $element.name]
+                  [generate-id(following-sibling::w:p[w:p/w:pStyle/@w:val != $element.name][1]) = $stop.node]' mode='continue'/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select='following-sibling::*' mode='continue'>
+          <xsl:with-param name='styles' select='concat(" ", $element.name, " para-continue ")'/>
+        </xsl:apply-templates>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:element>
+</xsl:template>
+
+<!-- Handle admonitions without a title -->
 <xsl:template match="&admon;" mode="group">
   <xsl:variable name="element.name" select="w:pPr/w:pStyle/@w:val"/>
 
+  <xsl:variable name='title.node'
+    select='preceding-sibling::w:p[w:pPr/w:pStyle/@w:val = concat($element.name, "-title")][1]'/>
+  <xsl:variable name='stop.node'
+    select='preceding-sibling::w:p[w:pPr/w:pStyle/@w:val != concat($element.name, "-title")][1]'/>
+
+  <xsl:choose>
+    <xsl:when test='preceding-sibling::*[1]/self::w:p[w:pPr/w:pStyle/@w:val = $element.name or w:pPr/w:pStyle/@w:val = "para-continue"]'/>
+    <xsl:when test='$title.node and $stop.node and
+                    count($title.node|$stop.node/preceding-sibling::*) = count($stop.node/preceding-sibling::*)'>
+      <!-- The previous title is not related to this node -->
+      <xsl:call-template name='make-admonition'>
+        <xsl:with-param name='element.name' select='$element.name'/>
+      </xsl:call-template>
+    </xsl:when>
+
+    <!-- The title node has included this node -->
+    <xsl:when test='$title.node'/>
+
+    <xsl:otherwise>
+      <xsl:call-template name='make-admonition'>
+        <xsl:with-param name='element.name' select='$element.name'/>
+      </xsl:call-template>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+<xsl:template name='make-admonition'>
+  <xsl:param name='element.name'/>
+
   <xsl:element name="{$element.name}">
     <xsl:call-template name="object.id"/>
     <para>
       <xsl:apply-templates select="w:r|w:hlink"/>
     </para>
-    <xsl:apply-templates mode="item" 
-                select="following-sibling::*[1][self::&admoncontinue;]"/>
+    <xsl:apply-templates mode="continue" 
+      select="following-sibling::*[1]">
+      <xsl:with-param name='styles' select='concat(" ", $element.name, " para-continue ")'/>
+    </xsl:apply-templates>
   </xsl:element>
 </xsl:template>
 
-<xsl:template match="&admoncontinue;" mode="item">
-  <para>
-    <xsl:call-template name="object.id"/>
-    <xsl:apply-templates select="w:r|w:hlink"/>
-  </para>
-  <!-- Continue to process any immediate following -->
-  <xsl:apply-templates mode="item" 
-                select="following-sibling::*[1][self::&admoncontinue;]"/>
-</xsl:template>
+<xsl:template match="w:p" mode="continue">
+  <xsl:param name='styles' select='" para-continue "'/>
 
-<xsl:template match="&admoncontinue;" mode="group">
-  <!-- Handled by note -->
+  <xsl:if test='contains($styles, concat(" ", w:pPr/w:pStyle/@w:val, " "))'>
+    <para>
+      <xsl:call-template name="object.id"/>
+      <xsl:apply-templates select="w:r|w:hlink"/>
+    </para>
+    <!-- Continue to process any immediate following -->
+    <xsl:apply-templates mode="continue"
+                select="following-sibling::*[1]">
+      <xsl:with-param name='styles' select='$styles'/>
+    </xsl:apply-templates>
+  </xsl:if>
 </xsl:template>
 
 <xsl:template match="&verbatim;[not(preceding-sibling::*[1]