| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 | <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: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:sl='http://schemas.microsoft.com/schemaLibrary/2003/core'  xmlns:doc='http://docbook.org/ns/docbook'  exclude-result-prefixes='doc'>  <xsl:import href='dbk2wp.xsl'/>  <xsl:output method="xml" indent='yes' standalone='yes' encoding='UTF-8'/>  <!-- ********************************************************************       $Id: dbk2wordml.xsl 9651 2012-10-26 20:44:10Z bobstayton $       ********************************************************************       This file is part of the XSL DocBook Stylesheet distribution.       See ../README or http://docbook.sf.net/release/xsl/current/ for       copyright and other information.       ******************************************************************** -->  <xsl:include href='../VERSION.xsl'/>  <xsl:include href='param.xsl'/>  <xsl:strip-space elements='*'/>  <xsl:preserve-space elements='literallayout doc:literallayout                                programlisting doc:programlisting'/>  <xsl:variable name='templatedoc' select='document($wordml.template)'/>  <xsl:template match="/" name='wordml.top'>    <xsl:param name='doc' select='/'/>    <xsl:if test='not($wordml.template)'>      <xsl:message terminate='yes'>Please specify the template document with the "wordml.template" parameter</xsl:message>    </xsl:if>    <xsl:if test='not($templatedoc)'>      <xsl:message terminate='yes'>Unable to open template document "<xsl:value-of select='$wordml.template'/>"</xsl:message>    </xsl:if>    <xsl:processing-instruction name='mso-application'>      <xsl:text>progid="Word.Document"</xsl:text>    </xsl:processing-instruction>    <xsl:text>
</xsl:text>    <xsl:variable name='info'      select='$doc/book/bookinfo|$doc/article/articleinfo'/>    <xsl:variable name='authors' select='$info/author|$info/authorinitials|$info/authorgroup/author|$info/authorgroup/editor'/>    <w:wordDocument      w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no">      <xsl:attribute name='xml:space'>preserve</xsl:attribute>      <o:DocumentProperties>        <o:Author>          <xsl:choose>            <xsl:when test='$authors'>              <xsl:variable name="content">                <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>              </xsl:variable>              <xsl:value-of select="$content"/>            </xsl:when>            <xsl:otherwise>Unknown</xsl:otherwise>          </xsl:choose>        </o:Author>        <o:LastAuthor>          <xsl:variable name="content">            <xsl:choose>              <xsl:when test='$info/revhistory/revision[1]/*[self::author|self::authorinitials]'>                <xsl:apply-templates select='$info/revhistory/revision[1]/*[self::author|self::authorinitials]' mode='doc:docprop.author'/>              </xsl:when>              <xsl:when test='$authors'>                <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>              </xsl:when>              <xsl:otherwise>Unknown</xsl:otherwise>            </xsl:choose>          </xsl:variable>          <xsl:value-of select="$content"/>        </o:LastAuthor>        <o:Revision>1</o:Revision>        <o:TotalTime></o:TotalTime>        <!-- dummy values -->        <o:Created>2004-01-01T07:07:00Z</o:Created>        <o:LastSaved>2004-01-01T08:08:00Z</o:LastSaved>        <o:Pages>1</o:Pages>        <o:Words>1</o:Words>        <o:Characters>1</o:Characters>        <!-- could derive this from author -->        <o:Company>DocBook</o:Company>        <o:Lines>1</o:Lines>        <o:Paragraphs>1</o:Paragraphs>        <o:CharactersWithSpaces>1</o:CharactersWithSpaces>        <o:Version>11.6113</o:Version>      </o:DocumentProperties>      <xsl:apply-templates select='$templatedoc/w:wordDocument/o:CustomDocumentProperties|$templatedoc/w:wordDocument/w:fonts|$templatedoc/w:wordDocument/w:lists|$templatedoc/w:wordDocument/w:styles' mode='doc:copy'/>      <w:docPr>        <w:view w:val="print"/>        <w:zoom w:percent="100"/>        <w:doNotEmbedSystemFonts/>        <w:attachedTemplate w:val=""/>        <w:documentProtection w:formatting='on' w:enforcement='on'          w:unprotectPassword='CAA7FF77'/>        <w:defaultTabStop w:val="720"/>        <w:autoHyphenation/>        <w:hyphenationZone w:val="357"/>        <w:doNotHyphenateCaps/>        <w:evenAndOddHeaders/>        <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:footnotePr>          <w:footnote w:type="separator">            <w:p>              <w:r>                <w:separator/>              </w:r>            </w:p>          </w:footnote>          <w:footnote w:type="continuation-separator">            <w:p>              <w:r>                <w:continuationSeparator/>              </w:r>            </w:p>          </w:footnote>        </w:footnotePr>        <w:endnotePr>          <w:endnote w:type="separator">            <w:p>              <w:r>                <w:separator/>              </w:r>            </w:p>          </w:endnote>          <w:endnote w:type="continuation-separator">            <w:p>              <w:r>                <w:continuationSeparator/>              </w:r>            </w:p>          </w:endnote>        </w:endnotePr>        <w:compat>          <w:breakWrappedTables/>          <w:snapToGridInCell/>          <w:wrapTextWithPunct/>          <w:useAsianBreakRules/>          <w:useWord2002TableStyleRules/>        </w:compat>        <w:docVars>        </w:docVars>      </w:docPr>      <xsl:apply-templates select='$doc/*' mode='doc:toplevel'/>    </w:wordDocument>  </xsl:template>  <xsl:template name='doc:make-body'>    <xsl:param name='content'>      <xsl:apply-templates mode='doc:body'/>    </xsl:param>    <w:body>      <wx:sect>        <wx:sub-section>          <xsl:copy-of select='$content'/>        </wx:sub-section>      </wx:sect>    </w:body>  </xsl:template>  <xsl:template name='doc:make-subsection'>    <xsl:param name='content'>      <xsl:apply-templates mode='doc:body'/>    </xsl:param>    <wx:sub-section>      <xsl:copy-of select='$content'/>    </wx:sub-section>  </xsl:template>  <xsl:template name='doc:make-paragraph'>    <xsl:param name='style' select='"unknown"'/>    <xsl:param name='content'>      <xsl:apply-templates mode='doc:body'/>    </xsl:param>    <xsl:param name='outline.level' select='0'/>    <xsl:param name='attributes.node' select='.'/>    <w:p>      <xsl:if test='$style != "" or		    $outline.level != 0'>	<w:pPr>	  <xsl:if test='$style != ""'>            <w:pStyle w:val='{$style}'/>	  </xsl:if>	  <xsl:if test='$outline.level != 0'>            <w:outlineLvl w:val='{$outline.level}'/>	  </xsl:if>	</w:pPr>      </xsl:if>      <xsl:call-template name='attributes'>        <xsl:with-param name='node' select='$attributes.node'/>      </xsl:call-template>      <xsl:copy-of select='$content'/>    </w:p>  </xsl:template>  <xsl:template name='doc:make-phrase'>    <xsl:param name='style' select='""'/>    <xsl:param name='italic' select='0'/>    <xsl:param name='bold' select='0'/>    <xsl:param name='content'>      <xsl:apply-templates mode='doc:phrase'/>    </xsl:param>    <w:r>      <xsl:if test='$style != "" or                    $bold = 1 or                    $italic = 1'>	<w:rPr>          <xsl:if test='$style != ""'>            <w:rStyle w:val='{$style}'/>          </xsl:if>          <xsl:if test='$italic = 1'>            <w:i/>          </xsl:if>          <xsl:if test='$bold = 1'>            <w:b/>          </xsl:if>	</w:rPr>      </xsl:if>      <w:t>        <xsl:copy-of select='$content'/>      </w:t>    </w:r>  </xsl:template>  <xsl:template name='doc:make-hyperlink'>    <xsl:param name='target'/>    <xsl:param name='content'>      <xsl:apply-templates mode='doc:body'/>    </xsl:param>    <w:hlink w:dest='{$target}'>      <xsl:copy-of select='$content'/>    </w:hlink>  </xsl:template>  <xsl:template name='doc:make-table'>    <xsl:param name='columns'/>    <xsl:param name='content'>      <xsl:apply-templates select='*[not(self::caption|self::doc:caption|self::textobject|self::doc:textobject)]'        mode='doc:body'/>    </xsl:param>    <w:tbl>      <w:tblPr>        <w:tblW w:w="0" w:type="auto"/>        <w:tblInd w:w="108" w:type="dxa"/>        <w:tblLayout w:type="Fixed"/>      </w:tblPr>      <w:tblGrid>        <xsl:copy-of select='$columns'/>      </w:tblGrid>      <xsl:copy-of select='$content'/>    </w:tbl>  </xsl:template>  <xsl:template name='doc:make-column'>    <xsl:param name='width' select='0'/>    <w:gridcol w:w='{$width}'/>  </xsl:template>  <xsl:template name='doc:make-table-row'>    <xsl:param name='content'>      <xsl:apply-templates mode='doc:body'/>    </xsl:param>    <xsl:param name='is-header' select='false()'/>    <w:tr>      <w:trPr>        <xsl:if test='$is-header'>          <w:tblHeader/>        </xsl:if>      </w:trPr>      <xsl:copy-of select='$content'/>    </w:tr>  </xsl:template>  <xsl:template name='doc:make-table-cell'>    <xsl:param name='width' select='0'/>    <xsl:param name='hidden' select='false()'/>    <xsl:param name='rowspan' select='1'/>    <xsl:param name='colspan' select='1'/>    <xsl:param name='content'>      <xsl:apply-templates mode='doc:body'/>    </xsl:param>    <w:tc>      <xsl:if test='$colspan != 1 or                    $width != 0'>        <w:tcPr>          <xsl:if test='$colspan != 1 or                        $width != 0'>            <w:tcW w:w='{$width}' w:type='dxa'/>          </xsl:if>          <xsl:if test='$hidden'>            <w:vmerge w:val='{$hidden}'/>          </xsl:if>          <xsl:if test='$rowspan != 1'>                      <w:vmerge w:val='restart'/>          </xsl:if>          <xsl:if test='$colspan != 1'>            <w:gridspan w:val='{$colspan}'/>          </xsl:if>        </w:tcPr>      </xsl:if>      <xsl:copy-of select='$content'/>    </w:tc>  </xsl:template>  <xsl:template name='doc:make-soft-break'>    <w:br/>  </xsl:template>  <xsl:template name='attributes'>    <xsl:param name='node' select='.'/>    <xsl:if test='$node/@*'>      <aml:annotation aml:id='{count(preceding::*) + 1}' w:type='Word.Comment.Start'/>      <w:r>        <w:rPr>          <w:rStyle w:val='attributes'/>        </w:rPr>        <w:t>          <xsl:text> </xsl:text>        </w:t>      </w:r>      <aml:annotation aml:id='{count(preceding::*) + 1}' w:type='Word.Comment.End'/>      <w:r>        <w:rPr>          <w:rStyle w:val='CommentReference'/>        </w:rPr>        <aml:annotation aml:id='{count(preceding::*) + 1}' aml:author="DocBook" aml:createdate='2004-12-23T00:01:00' w:type='Word.Comment' w:initials='DBK'>          <aml:content>            <w:p>              <w:pPr>                <w:pStyle w:val='CommentText'/>              </w:pPr>              <w:r>                <w:rPr>                  <w:rStyle w:val='CommentReference'/>                </w:rPr>                <w:annotationRef/>              </w:r>              <xsl:for-each select='$node/@*'>                <w:r>                  <w:rPr>                    <w:rStyle w:val='attribute-name'/>                  </w:rPr>                  <w:t>                    <xsl:value-of select='name()'/>                  </w:t>                </w:r>                <w:r>                  <w:t>=</w:t>                </w:r>                <w:r>                  <w:rPr>                    <w:rStyle w:val='attribute-value'/>                  </w:rPr>                  <w:t>                    <xsl:value-of select='.'/>                  </w:t>                </w:r>              </xsl:for-each>            </w:p>          </aml:content>        </aml:annotation>      </w:r>    </xsl:if>  </xsl:template></xsl:stylesheet>
 |