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>
|