[15c7d39] | 1 | <xsl:stylesheet version="1.0"
|
---|
| 2 | xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
---|
| 3 | xmlns:w='http://schemas.microsoft.com/office/word/2003/wordml'
|
---|
| 4 | xmlns:v='urn:schemas-microsoft-com:vml'
|
---|
| 5 | xmlns:w10="urn:schemas-microsoft-com:office:word"
|
---|
| 6 | xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
|
---|
| 7 | xmlns:wx='http://schemas.microsoft.com/office/word/2003/auxHint'
|
---|
| 8 | xmlns:o="urn:schemas-microsoft-com:office:office"
|
---|
| 9 | xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
|
---|
| 10 | xmlns:sl='http://schemas.microsoft.com/schemaLibrary/2003/core'
|
---|
| 11 | xmlns:doc='http://docbook.org/ns/docbook'
|
---|
| 12 | exclude-result-prefixes='doc'>
|
---|
| 13 |
|
---|
| 14 | <xsl:import href='dbk2wp.xsl'/>
|
---|
| 15 |
|
---|
| 16 | <xsl:output method="xml" indent='yes' standalone='yes' encoding='UTF-8'/>
|
---|
| 17 |
|
---|
| 18 | <!-- ********************************************************************
|
---|
| 19 | $Id: dbk2wordml.xsl 9651 2012-10-26 20:44:10Z bobstayton $
|
---|
| 20 | ********************************************************************
|
---|
| 21 |
|
---|
| 22 | This file is part of the XSL DocBook Stylesheet distribution.
|
---|
| 23 | See ../README or http://docbook.sf.net/release/xsl/current/ for
|
---|
| 24 | copyright and other information.
|
---|
| 25 |
|
---|
| 26 | ******************************************************************** -->
|
---|
| 27 |
|
---|
| 28 | <xsl:include href='../VERSION.xsl'/>
|
---|
| 29 | <xsl:include href='param.xsl'/>
|
---|
| 30 |
|
---|
| 31 | <xsl:strip-space elements='*'/>
|
---|
| 32 | <xsl:preserve-space elements='literallayout doc:literallayout
|
---|
| 33 | programlisting doc:programlisting'/>
|
---|
| 34 |
|
---|
| 35 | <xsl:variable name='templatedoc' select='document($wordml.template)'/>
|
---|
| 36 |
|
---|
| 37 | <xsl:template match="/" name='wordml.top'>
|
---|
| 38 | <xsl:param name='doc' select='/'/>
|
---|
| 39 |
|
---|
| 40 | <xsl:if test='not($wordml.template)'>
|
---|
| 41 | <xsl:message terminate='yes'>Please specify the template document with the "wordml.template" parameter</xsl:message>
|
---|
| 42 | </xsl:if>
|
---|
| 43 | <xsl:if test='not($templatedoc)'>
|
---|
| 44 | <xsl:message terminate='yes'>Unable to open template document "<xsl:value-of select='$wordml.template'/>"</xsl:message>
|
---|
| 45 | </xsl:if>
|
---|
| 46 |
|
---|
| 47 | <xsl:processing-instruction name='mso-application'>
|
---|
| 48 | <xsl:text>progid="Word.Document"</xsl:text>
|
---|
| 49 | </xsl:processing-instruction>
|
---|
| 50 | <xsl:text>
</xsl:text>
|
---|
| 51 |
|
---|
| 52 | <xsl:variable name='info'
|
---|
| 53 | select='$doc/book/bookinfo|$doc/article/articleinfo'/>
|
---|
| 54 | <xsl:variable name='authors' select='$info/author|$info/authorinitials|$info/authorgroup/author|$info/authorgroup/editor'/>
|
---|
| 55 |
|
---|
| 56 | <w:wordDocument
|
---|
| 57 | w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no">
|
---|
| 58 | <xsl:attribute name='xml:space'>preserve</xsl:attribute>
|
---|
| 59 |
|
---|
| 60 | <o:DocumentProperties>
|
---|
| 61 | <o:Author>
|
---|
| 62 | <xsl:choose>
|
---|
| 63 | <xsl:when test='$authors'>
|
---|
| 64 | <xsl:variable name="content">
|
---|
| 65 | <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
|
---|
| 66 | </xsl:variable>
|
---|
| 67 | <xsl:value-of select="$content"/>
|
---|
| 68 | </xsl:when>
|
---|
| 69 | <xsl:otherwise>Unknown</xsl:otherwise>
|
---|
| 70 | </xsl:choose>
|
---|
| 71 | </o:Author>
|
---|
| 72 | <o:LastAuthor>
|
---|
| 73 | <xsl:variable name="content">
|
---|
| 74 | <xsl:choose>
|
---|
| 75 | <xsl:when test='$info/revhistory/revision[1]/*[self::author|self::authorinitials]'>
|
---|
| 76 | <xsl:apply-templates select='$info/revhistory/revision[1]/*[self::author|self::authorinitials]' mode='doc:docprop.author'/>
|
---|
| 77 | </xsl:when>
|
---|
| 78 | <xsl:when test='$authors'>
|
---|
| 79 | <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
|
---|
| 80 | </xsl:when>
|
---|
| 81 | <xsl:otherwise>Unknown</xsl:otherwise>
|
---|
| 82 | </xsl:choose>
|
---|
| 83 | </xsl:variable>
|
---|
| 84 | <xsl:value-of select="$content"/>
|
---|
| 85 | </o:LastAuthor>
|
---|
| 86 | <o:Revision>1</o:Revision>
|
---|
| 87 | <o:TotalTime></o:TotalTime>
|
---|
| 88 |
|
---|
| 89 | <!-- dummy values -->
|
---|
| 90 | <o:Created>2004-01-01T07:07:00Z</o:Created>
|
---|
| 91 | <o:LastSaved>2004-01-01T08:08:00Z</o:LastSaved>
|
---|
| 92 |
|
---|
| 93 | <o:Pages>1</o:Pages>
|
---|
| 94 | <o:Words>1</o:Words>
|
---|
| 95 | <o:Characters>1</o:Characters>
|
---|
| 96 |
|
---|
| 97 | <!-- could derive this from author -->
|
---|
| 98 | <o:Company>DocBook</o:Company>
|
---|
| 99 |
|
---|
| 100 | <o:Lines>1</o:Lines>
|
---|
| 101 | <o:Paragraphs>1</o:Paragraphs>
|
---|
| 102 | <o:CharactersWithSpaces>1</o:CharactersWithSpaces>
|
---|
| 103 | <o:Version>11.6113</o:Version>
|
---|
| 104 | </o:DocumentProperties>
|
---|
| 105 |
|
---|
| 106 | <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'/>
|
---|
| 107 |
|
---|
| 108 | <w:docPr>
|
---|
| 109 | <w:view w:val="print"/>
|
---|
| 110 | <w:zoom w:percent="100"/>
|
---|
| 111 | <w:doNotEmbedSystemFonts/>
|
---|
| 112 | <w:attachedTemplate w:val=""/>
|
---|
| 113 | <w:documentProtection w:formatting='on' w:enforcement='on'
|
---|
| 114 | w:unprotectPassword='CAA7FF77'/>
|
---|
| 115 | <w:defaultTabStop w:val="720"/>
|
---|
| 116 | <w:autoHyphenation/>
|
---|
| 117 | <w:hyphenationZone w:val="357"/>
|
---|
| 118 | <w:doNotHyphenateCaps/>
|
---|
| 119 | <w:evenAndOddHeaders/>
|
---|
| 120 | <w:characterSpacingControl w:val="DontCompress"/>
|
---|
| 121 | <w:optimizeForBrowser/>
|
---|
| 122 | <w:validateAgainstSchema/>
|
---|
| 123 | <w:saveInvalidXML w:val="off"/>
|
---|
| 124 | <w:ignoreMixedContent w:val="off"/>
|
---|
| 125 | <w:alwaysShowPlaceholderText w:val="off"/>
|
---|
| 126 | <w:footnotePr>
|
---|
| 127 | <w:footnote w:type="separator">
|
---|
| 128 | <w:p>
|
---|
| 129 | <w:r>
|
---|
| 130 | <w:separator/>
|
---|
| 131 | </w:r>
|
---|
| 132 | </w:p>
|
---|
| 133 | </w:footnote>
|
---|
| 134 | <w:footnote w:type="continuation-separator">
|
---|
| 135 | <w:p>
|
---|
| 136 | <w:r>
|
---|
| 137 | <w:continuationSeparator/>
|
---|
| 138 | </w:r>
|
---|
| 139 | </w:p>
|
---|
| 140 | </w:footnote>
|
---|
| 141 | </w:footnotePr>
|
---|
| 142 | <w:endnotePr>
|
---|
| 143 | <w:endnote w:type="separator">
|
---|
| 144 | <w:p>
|
---|
| 145 | <w:r>
|
---|
| 146 | <w:separator/>
|
---|
| 147 | </w:r>
|
---|
| 148 | </w:p>
|
---|
| 149 | </w:endnote>
|
---|
| 150 | <w:endnote w:type="continuation-separator">
|
---|
| 151 | <w:p>
|
---|
| 152 | <w:r>
|
---|
| 153 | <w:continuationSeparator/>
|
---|
| 154 | </w:r>
|
---|
| 155 | </w:p>
|
---|
| 156 | </w:endnote>
|
---|
| 157 | </w:endnotePr>
|
---|
| 158 | <w:compat>
|
---|
| 159 | <w:breakWrappedTables/>
|
---|
| 160 | <w:snapToGridInCell/>
|
---|
| 161 | <w:wrapTextWithPunct/>
|
---|
| 162 | <w:useAsianBreakRules/>
|
---|
| 163 | <w:useWord2002TableStyleRules/>
|
---|
| 164 | </w:compat>
|
---|
| 165 | <w:docVars>
|
---|
| 166 | </w:docVars>
|
---|
| 167 | </w:docPr>
|
---|
| 168 |
|
---|
| 169 | <xsl:apply-templates select='$doc/*' mode='doc:toplevel'/>
|
---|
| 170 |
|
---|
| 171 | </w:wordDocument>
|
---|
| 172 | </xsl:template>
|
---|
| 173 |
|
---|
| 174 | <xsl:template name='doc:make-body'>
|
---|
| 175 | <xsl:param name='content'>
|
---|
| 176 | <xsl:apply-templates mode='doc:body'/>
|
---|
| 177 | </xsl:param>
|
---|
| 178 |
|
---|
| 179 | <w:body>
|
---|
| 180 | <wx:sect>
|
---|
| 181 | <wx:sub-section>
|
---|
| 182 | <xsl:copy-of select='$content'/>
|
---|
| 183 | </wx:sub-section>
|
---|
| 184 | </wx:sect>
|
---|
| 185 | </w:body>
|
---|
| 186 | </xsl:template>
|
---|
| 187 |
|
---|
| 188 | <xsl:template name='doc:make-subsection'>
|
---|
| 189 | <xsl:param name='content'>
|
---|
| 190 | <xsl:apply-templates mode='doc:body'/>
|
---|
| 191 | </xsl:param>
|
---|
| 192 |
|
---|
| 193 | <wx:sub-section>
|
---|
| 194 | <xsl:copy-of select='$content'/>
|
---|
| 195 | </wx:sub-section>
|
---|
| 196 | </xsl:template>
|
---|
| 197 |
|
---|
| 198 | <xsl:template name='doc:make-paragraph'>
|
---|
| 199 | <xsl:param name='style' select='"unknown"'/>
|
---|
| 200 | <xsl:param name='content'>
|
---|
| 201 | <xsl:apply-templates mode='doc:body'/>
|
---|
| 202 | </xsl:param>
|
---|
| 203 | <xsl:param name='outline.level' select='0'/>
|
---|
| 204 | <xsl:param name='attributes.node' select='.'/>
|
---|
| 205 |
|
---|
| 206 | <w:p>
|
---|
| 207 | <xsl:if test='$style != "" or
|
---|
| 208 | $outline.level != 0'>
|
---|
| 209 | <w:pPr>
|
---|
| 210 | <xsl:if test='$style != ""'>
|
---|
| 211 | <w:pStyle w:val='{$style}'/>
|
---|
| 212 | </xsl:if>
|
---|
| 213 |
|
---|
| 214 | <xsl:if test='$outline.level != 0'>
|
---|
| 215 | <w:outlineLvl w:val='{$outline.level}'/>
|
---|
| 216 | </xsl:if>
|
---|
| 217 | </w:pPr>
|
---|
| 218 | </xsl:if>
|
---|
| 219 |
|
---|
| 220 | <xsl:call-template name='attributes'>
|
---|
| 221 | <xsl:with-param name='node' select='$attributes.node'/>
|
---|
| 222 | </xsl:call-template>
|
---|
| 223 |
|
---|
| 224 | <xsl:copy-of select='$content'/>
|
---|
| 225 | </w:p>
|
---|
| 226 | </xsl:template>
|
---|
| 227 |
|
---|
| 228 | <xsl:template name='doc:make-phrase'>
|
---|
| 229 | <xsl:param name='style' select='""'/>
|
---|
| 230 | <xsl:param name='italic' select='0'/>
|
---|
| 231 | <xsl:param name='bold' select='0'/>
|
---|
| 232 | <xsl:param name='content'>
|
---|
| 233 | <xsl:apply-templates mode='doc:phrase'/>
|
---|
| 234 | </xsl:param>
|
---|
| 235 |
|
---|
| 236 | <w:r>
|
---|
| 237 | <xsl:if test='$style != "" or
|
---|
| 238 | $bold = 1 or
|
---|
| 239 | $italic = 1'>
|
---|
| 240 | <w:rPr>
|
---|
| 241 | <xsl:if test='$style != ""'>
|
---|
| 242 | <w:rStyle w:val='{$style}'/>
|
---|
| 243 | </xsl:if>
|
---|
| 244 | <xsl:if test='$italic = 1'>
|
---|
| 245 | <w:i/>
|
---|
| 246 | </xsl:if>
|
---|
| 247 | <xsl:if test='$bold = 1'>
|
---|
| 248 | <w:b/>
|
---|
| 249 | </xsl:if>
|
---|
| 250 | </w:rPr>
|
---|
| 251 | </xsl:if>
|
---|
| 252 |
|
---|
| 253 | <w:t>
|
---|
| 254 | <xsl:copy-of select='$content'/>
|
---|
| 255 | </w:t>
|
---|
| 256 | </w:r>
|
---|
| 257 | </xsl:template>
|
---|
| 258 |
|
---|
| 259 | <xsl:template name='doc:make-hyperlink'>
|
---|
| 260 | <xsl:param name='target'/>
|
---|
| 261 | <xsl:param name='content'>
|
---|
| 262 | <xsl:apply-templates mode='doc:body'/>
|
---|
| 263 | </xsl:param>
|
---|
| 264 |
|
---|
| 265 | <w:hlink w:dest='{$target}'>
|
---|
| 266 | <xsl:copy-of select='$content'/>
|
---|
| 267 | </w:hlink>
|
---|
| 268 | </xsl:template>
|
---|
| 269 |
|
---|
| 270 | <xsl:template name='doc:make-table'>
|
---|
| 271 | <xsl:param name='columns'/>
|
---|
| 272 | <xsl:param name='content'>
|
---|
| 273 | <xsl:apply-templates select='*[not(self::caption|self::doc:caption|self::textobject|self::doc:textobject)]'
|
---|
| 274 | mode='doc:body'/>
|
---|
| 275 | </xsl:param>
|
---|
| 276 |
|
---|
| 277 | <w:tbl>
|
---|
| 278 | <w:tblPr>
|
---|
| 279 | <w:tblW w:w="0" w:type="auto"/>
|
---|
| 280 | <w:tblInd w:w="108" w:type="dxa"/>
|
---|
| 281 | <w:tblLayout w:type="Fixed"/>
|
---|
| 282 | </w:tblPr>
|
---|
| 283 | <w:tblGrid>
|
---|
| 284 | <xsl:copy-of select='$columns'/>
|
---|
| 285 | </w:tblGrid>
|
---|
| 286 | <xsl:copy-of select='$content'/>
|
---|
| 287 | </w:tbl>
|
---|
| 288 | </xsl:template>
|
---|
| 289 |
|
---|
| 290 | <xsl:template name='doc:make-column'>
|
---|
| 291 | <xsl:param name='width' select='0'/>
|
---|
| 292 |
|
---|
| 293 | <w:gridcol w:w='{$width}'/>
|
---|
| 294 | </xsl:template>
|
---|
| 295 |
|
---|
| 296 | <xsl:template name='doc:make-table-row'>
|
---|
| 297 | <xsl:param name='content'>
|
---|
| 298 | <xsl:apply-templates mode='doc:body'/>
|
---|
| 299 | </xsl:param>
|
---|
| 300 | <xsl:param name='is-header' select='false()'/>
|
---|
| 301 |
|
---|
| 302 | <w:tr>
|
---|
| 303 | <w:trPr>
|
---|
| 304 | <xsl:if test='$is-header'>
|
---|
| 305 | <w:tblHeader/>
|
---|
| 306 | </xsl:if>
|
---|
| 307 | </w:trPr>
|
---|
| 308 | <xsl:copy-of select='$content'/>
|
---|
| 309 | </w:tr>
|
---|
| 310 | </xsl:template>
|
---|
| 311 |
|
---|
| 312 | <xsl:template name='doc:make-table-cell'>
|
---|
| 313 | <xsl:param name='width' select='0'/>
|
---|
| 314 | <xsl:param name='hidden' select='false()'/>
|
---|
| 315 | <xsl:param name='rowspan' select='1'/>
|
---|
| 316 | <xsl:param name='colspan' select='1'/>
|
---|
| 317 | <xsl:param name='content'>
|
---|
| 318 | <xsl:apply-templates mode='doc:body'/>
|
---|
| 319 | </xsl:param>
|
---|
| 320 |
|
---|
| 321 | <w:tc>
|
---|
| 322 | <xsl:if test='$colspan != 1 or
|
---|
| 323 | $width != 0'>
|
---|
| 324 | <w:tcPr>
|
---|
| 325 | <xsl:if test='$colspan != 1 or
|
---|
| 326 | $width != 0'>
|
---|
| 327 | <w:tcW w:w='{$width}' w:type='dxa'/>
|
---|
| 328 | </xsl:if>
|
---|
| 329 | <xsl:if test='$hidden'>
|
---|
| 330 | <w:vmerge w:val='{$hidden}'/>
|
---|
| 331 | </xsl:if>
|
---|
| 332 | <xsl:if test='$rowspan != 1'>
|
---|
| 333 | <w:vmerge w:val='restart'/>
|
---|
| 334 | </xsl:if>
|
---|
| 335 | <xsl:if test='$colspan != 1'>
|
---|
| 336 | <w:gridspan w:val='{$colspan}'/>
|
---|
| 337 | </xsl:if>
|
---|
| 338 | </w:tcPr>
|
---|
| 339 | </xsl:if>
|
---|
| 340 |
|
---|
| 341 | <xsl:copy-of select='$content'/>
|
---|
| 342 | </w:tc>
|
---|
| 343 | </xsl:template>
|
---|
| 344 |
|
---|
| 345 | <xsl:template name='doc:make-soft-break'>
|
---|
| 346 | <w:br/>
|
---|
| 347 | </xsl:template>
|
---|
| 348 |
|
---|
| 349 | <xsl:template name='attributes'>
|
---|
| 350 | <xsl:param name='node' select='.'/>
|
---|
| 351 |
|
---|
| 352 | <xsl:if test='$node/@*'>
|
---|
| 353 | <aml:annotation aml:id='{count(preceding::*) + 1}' w:type='Word.Comment.Start'/>
|
---|
| 354 | <w:r>
|
---|
| 355 | <w:rPr>
|
---|
| 356 | <w:rStyle w:val='attributes'/>
|
---|
| 357 | </w:rPr>
|
---|
| 358 | <w:t>
|
---|
| 359 | <xsl:text> </xsl:text>
|
---|
| 360 | </w:t>
|
---|
| 361 | </w:r>
|
---|
| 362 | <aml:annotation aml:id='{count(preceding::*) + 1}' w:type='Word.Comment.End'/>
|
---|
| 363 | <w:r>
|
---|
| 364 | <w:rPr>
|
---|
| 365 | <w:rStyle w:val='CommentReference'/>
|
---|
| 366 | </w:rPr>
|
---|
| 367 | <aml:annotation aml:id='{count(preceding::*) + 1}' aml:author="DocBook" aml:createdate='2004-12-23T00:01:00' w:type='Word.Comment' w:initials='DBK'>
|
---|
| 368 | <aml:content>
|
---|
| 369 | <w:p>
|
---|
| 370 | <w:pPr>
|
---|
| 371 | <w:pStyle w:val='CommentText'/>
|
---|
| 372 | </w:pPr>
|
---|
| 373 | <w:r>
|
---|
| 374 | <w:rPr>
|
---|
| 375 | <w:rStyle w:val='CommentReference'/>
|
---|
| 376 | </w:rPr>
|
---|
| 377 | <w:annotationRef/>
|
---|
| 378 | </w:r>
|
---|
| 379 | <xsl:for-each select='$node/@*'>
|
---|
| 380 | <w:r>
|
---|
| 381 | <w:rPr>
|
---|
| 382 | <w:rStyle w:val='attribute-name'/>
|
---|
| 383 | </w:rPr>
|
---|
| 384 | <w:t>
|
---|
| 385 | <xsl:value-of select='name()'/>
|
---|
| 386 | </w:t>
|
---|
| 387 | </w:r>
|
---|
| 388 | <w:r>
|
---|
| 389 | <w:t>=</w:t>
|
---|
| 390 | </w:r>
|
---|
| 391 | <w:r>
|
---|
| 392 | <w:rPr>
|
---|
| 393 | <w:rStyle w:val='attribute-value'/>
|
---|
| 394 | </w:rPr>
|
---|
| 395 | <w:t>
|
---|
| 396 | <xsl:value-of select='.'/>
|
---|
| 397 | </w:t>
|
---|
| 398 | </w:r>
|
---|
| 399 | </xsl:for-each>
|
---|
| 400 | </w:p>
|
---|
| 401 | </aml:content>
|
---|
| 402 | </aml:annotation>
|
---|
| 403 | </w:r>
|
---|
| 404 | </xsl:if>
|
---|
| 405 | </xsl:template>
|
---|
| 406 |
|
---|
| 407 | </xsl:stylesheet>
|
---|