source: freemind/trunk/fuentes/freemind/accessories/mm2wordml_utf8.xsl @ 68

Last change on this file since 68 was 68, checked in by jrpelegrina, 4 years ago

First release to Xenial

File size: 11.7 KB
Line 
1<?xml version="1.0" encoding="UTF-8" ?>
2<!--
3    (c) by Naoki Nose, 2006, and Eric Lavarde, 2008
4    This code is licensed under the GPLv2 or later.
5    (http://www.gnu.org/copyleft/gpl.html)
6    Check 'mm2wordml_utf8_TEMPLATE.mm' for detailed instructions on how to use
7    this sheet.
8--> 
9<xsl:stylesheet version="1.0"
10         xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" 
11         xmlns:v="urn:schemas-microsoft-com:vml" 
12         xmlns:w10="urn:schemas-microsoft-com:office:word" 
13         xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" 
14         xmlns:aml="http://schemas.microsoft.com/aml/2001/core" 
15         xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" 
16         xmlns:o="urn:schemas-microsoft-com:office:office" 
17         xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 
18         w:macrosPresent="no" 
19         w:embeddedObjPresent="no" 
20         w:ocxPresent="no" 
21         xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
22<xsl:output method="xml"  indent="yes" encoding="UTF-8" standalone="yes"/>
23
24<!-- the variable to be used to determine the maximum level of headings,
25     it is defined by the attribute 'head-maxlevel' of the root node if it
26     exists, else it's the default 4 (maximum possible is 9) -->
27<xsl:variable name="maxlevel">
28        <xsl:choose>
29                <xsl:when test="//map/node/attribute[@NAME='head-maxlevel']">
30                        <xsl:value-of select="//map/node/attribute[@NAME='head-maxlevel']/@VALUE"/>
31                </xsl:when>
32                <xsl:otherwise><xsl:value-of select="'4'"/></xsl:otherwise>
33        </xsl:choose>
34</xsl:variable>
35
36<xsl:template match="/">
37        <xsl:processing-instruction name="mso-application">progid="Word.Document"</xsl:processing-instruction>
38        <w:wordDocument>
39                <xsl:apply-templates mode="DocumentProperties" />
40                <xsl:call-template name="output-styles" />
41                <w:body>
42                        <wx:sect>
43                                <xsl:apply-templates mode="heading"/>
44                        </wx:sect>
45                </w:body>
46        </w:wordDocument>
47</xsl:template>
48
49<!-- the 2 following templates transform the doc-* attributes from the root
50     node into document properties -->
51<xsl:template match="//map" mode="DocumentProperties">
52<o:DocumentProperties>
53        <o:Title><xsl:value-of select="node/@TEXT"/></o:Title>
54        <xsl:apply-templates select="node/attribute">
55                <xsl:with-param name="prefix" select="'doc'"/>
56        </xsl:apply-templates>
57</o:DocumentProperties>
58</xsl:template>
59
60<xsl:template match="attribute">
61        <xsl:param name="prefix" />
62        <xsl:if test="starts-with(@NAME,concat($prefix,'-'))">
63                <xsl:element name="{concat('o:',substring-after(@NAME,concat($prefix,'-')))}">
64                        <xsl:value-of select="@VALUE"/>
65                </xsl:element>
66        </xsl:if>
67</xsl:template>
68
69<!-- output each node as heading -->
70<xsl:template match="node" mode="heading">
71<xsl:param name="level" select="0"/>
72<xsl:choose> <!-- we change our mind if the NoHeading attribute is present -->
73<xsl:when test="attribute/@NAME = 'NoHeading'">
74        <xsl:apply-templates select="." />
75</xsl:when>
76<xsl:otherwise>
77    <wx:sub-section>
78      <w:p>
79        <w:pPr>
80          <xsl:choose>
81                  <xsl:when test="$level = 0">
82                          <w:pStyle w:val="Title"/>
83                  </xsl:when>
84                  <xsl:otherwise>
85                          <w:pStyle w:val="Heading{$level}"/>
86                  </xsl:otherwise>
87          </xsl:choose>
88        </w:pPr>
89        <w:r>
90          <w:t><xsl:call-template name="output-node-text-as-text"/></w:t>
91        </w:r>
92      </w:p>
93      <xsl:call-template name="output-note-text-as-bodytext" />
94      <!-- if the level is higher than maxlevel, or if the current node is
95           marked with LastHeading, we start outputting normal paragraphs,
96           else we loop back into the heading mode -->
97      <xsl:choose>
98      <xsl:when test="attribute/@NAME = 'LastHeading'">
99              <xsl:apply-templates select="node" />
100      </xsl:when>
101      <xsl:when test="$level &lt; $maxlevel">
102              <xsl:apply-templates select="node" mode="heading">
103                      <xsl:with-param name="level" select="$level + 1"/>
104              </xsl:apply-templates>
105      </xsl:when>
106      <xsl:otherwise>
107              <xsl:apply-templates select="node" />
108      </xsl:otherwise>
109      </xsl:choose>
110    </wx:sub-section>
111</xsl:otherwise>
112</xsl:choose>
113</xsl:template>
114
115<!-- output each node as normal paragraph -->
116<xsl:template match="node">
117        <w:p>
118                <w:pPr>
119                        <w:pStyle w:val="Normal"/>
120                </w:pPr>
121                <w:r>
122                        <w:t><xsl:call-template
123                                        name="output-node-text-as-text"/></w:t>
124                </w:r>
125        </w:p>
126        <xsl:call-template name="output-note-text-as-bodytext" />
127        <xsl:apply-templates select="node" />
128</xsl:template>
129
130<xsl:template name="output-node-text-as-text">
131        <xsl:choose>
132        <xsl:when test="@TEXT">
133                <xsl:value-of select="normalize-space(@TEXT)" />
134        </xsl:when>
135        <xsl:when test="richcontent[@TYPE='NODE']">
136                <xsl:value-of
137                select="normalize-space(richcontent[@TYPE='NODE']/html/body)" />
138        </xsl:when>
139        <xsl:otherwise>
140                <xsl:text></xsl:text>
141        </xsl:otherwise>
142        </xsl:choose>
143</xsl:template>
144
145<xsl:template name="output-note-text-as-bodytext">
146        <xsl:if test="richcontent[@TYPE='NOTE']">
147        <w:p>
148                <w:pPr>
149                        <w:pStyle w:val="BodyText"/>
150                </w:pPr>
151                <w:r>
152                        <w:t><xsl:value-of
153                select="string(richcontent[@TYPE='NOTE']/html/body)" /></w:t>
154                </w:r>
155        </w:p>
156        </xsl:if>
157</xsl:template>
158
159<!-- The following is a very long template just to output the necessary styles,
160     this is the part you should edit if you'd like different default styles.
161-->
162
163<xsl:template name="output-styles">
164<w:styles>
165        <w:versionOfBuiltInStylenames w:val="4"/>
166        <w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/>
167
168        <w:style w:type="paragraph" w:default="on" w:styleId="Normal">
169                <w:name w:val="Normal"/>
170                <w:rsid w:val="00831C9D"/>
171                <w:rPr>
172                <wx:font wx:val="Times New Roman"/>
173                <w:sz w:val="24"/>
174                <w:sz-cs w:val="24"/>
175                <w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/>
176                </w:rPr>
177        </w:style>
178
179        <w:style w:type="paragraph" w:styleId="Heading1">
180                <w:name w:val="heading 1"/>
181                <wx:uiName wx:val="Heading 1"/>
182                <w:basedOn w:val="Normal"/>
183                <w:next w:val="Normal"/>
184                <w:rsid w:val="00BA7540"/>
185                <w:pPr>
186                <w:pStyle w:val="Heading1"/>
187                <w:keepNext/>
188                <w:spacing w:before="240" w:after="60"/>
189                <w:outlineLvl w:val="0"/>
190                </w:pPr>
191                <w:rPr>
192                <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/>
193                <wx:font wx:val="Arial"/>
194                <w:b/>
195                <w:b-cs/>
196                <w:kern w:val="32"/>
197                <w:sz w:val="32"/>
198                <w:sz-cs w:val="32"/>
199                </w:rPr>
200        </w:style>
201
202        <w:style w:type="paragraph" w:styleId="Heading2">
203                <w:name w:val="heading 2"/>
204                <wx:uiName wx:val="Heading 2"/>
205                <w:basedOn w:val="Normal"/>
206                <w:next w:val="Normal"/>
207                <w:rsid w:val="00BA7540"/>
208                <w:pPr>
209                <w:pStyle w:val="Heading2"/>
210                <w:keepNext/>
211                <w:spacing w:before="240" w:after="60"/>
212                <w:outlineLvl w:val="1"/>
213                </w:pPr>
214                <w:rPr>
215                <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/>
216                <wx:font wx:val="Arial"/>
217                <w:b/>
218                <w:b-cs/>
219                <w:i/>
220                <w:i-cs/>
221                <w:sz w:val="28"/>
222                <w:sz-cs w:val="28"/>
223                </w:rPr>
224        </w:style>
225
226        <w:style w:type="paragraph" w:styleId="Heading3">
227                <w:name w:val="heading 3"/>
228                <wx:uiName wx:val="Heading 3"/>
229                <w:basedOn w:val="Normal"/>
230                <w:next w:val="Normal"/>
231                <w:rsid w:val="00BA7540"/>
232                <w:pPr>
233                <w:pStyle w:val="Heading3"/>
234                <w:keepNext/>
235                <w:spacing w:before="240" w:after="60"/>
236                <w:outlineLvl w:val="2"/>
237                </w:pPr>
238                <w:rPr>
239                <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/>
240                <wx:font wx:val="Arial"/>
241                <w:b/>
242                <w:b-cs/>
243                <w:sz w:val="26"/>
244                <w:sz-cs w:val="26"/>
245                </w:rPr>
246        </w:style>
247
248        <w:style w:type="paragraph" w:styleId="Heading4">
249                <w:name w:val="heading 4"/>
250                <wx:uiName wx:val="Heading 4"/>
251                <w:basedOn w:val="Normal"/>
252                <w:next w:val="Normal"/>
253                <w:rsid w:val="00BA7540"/>
254                <w:pPr>
255                <w:pStyle w:val="Heading4"/>
256                <w:keepNext/>
257                <w:spacing w:before="240" w:after="60"/>
258                <w:outlineLvl w:val="3"/>
259                </w:pPr>
260                <w:rPr>
261                <wx:font wx:val="Times New Roman"/>
262                <w:b/>
263                <w:b-cs/>
264                <w:sz w:val="28"/>
265                <w:sz-cs w:val="28"/>
266                </w:rPr>
267        </w:style>
268
269        <w:style w:type="paragraph" w:styleId="Heading5">
270                <w:name w:val="heading 5"/>
271                <wx:uiName wx:val="Heading 5"/>
272                <w:basedOn w:val="Normal"/>
273                <w:next w:val="Normal"/>
274                <w:rsid w:val="00BA7540"/>
275                <w:pPr>
276                <w:pStyle w:val="Heading5"/>
277                <w:spacing w:before="240" w:after="60"/>
278                <w:outlineLvl w:val="4"/>
279                </w:pPr>
280                <w:rPr>
281                <wx:font wx:val="Times New Roman"/>
282                <w:b/>
283                <w:b-cs/>
284                <w:i/>
285                <w:i-cs/>
286                <w:sz w:val="26"/>
287                <w:sz-cs w:val="26"/>
288                </w:rPr>
289        </w:style>
290
291        <w:style w:type="paragraph" w:styleId="Heading6">
292                <w:name w:val="heading 6"/>
293                <wx:uiName wx:val="Heading 6"/>
294                <w:basedOn w:val="Normal"/>
295                <w:next w:val="Normal"/>
296                <w:rsid w:val="00BA7540"/>
297                <w:pPr>
298                <w:pStyle w:val="Heading6"/>
299                <w:spacing w:before="240" w:after="60"/>
300                <w:outlineLvl w:val="5"/>
301                </w:pPr>
302                <w:rPr>
303                <wx:font wx:val="Times New Roman"/>
304                <w:b/>
305                <w:b-cs/>
306                <w:sz w:val="22"/>
307                <w:sz-cs w:val="22"/>
308                </w:rPr>
309        </w:style>
310
311        <w:style w:type="paragraph" w:styleId="Heading7">
312                <w:name w:val="heading 7"/>
313                <wx:uiName wx:val="Heading 7"/>
314                <w:basedOn w:val="Normal"/>
315                <w:next w:val="Normal"/>
316                <w:rsid w:val="00BA7540"/>
317                <w:pPr>
318                <w:pStyle w:val="Heading7"/>
319                <w:spacing w:before="240" w:after="60"/>
320                <w:outlineLvl w:val="6"/>
321                </w:pPr>
322                <w:rPr>
323                <wx:font wx:val="Times New Roman"/>
324                </w:rPr>
325        </w:style>
326
327        <w:style w:type="paragraph" w:styleId="Heading8">
328                <w:name w:val="heading 8"/>
329                <wx:uiName wx:val="Heading 8"/>
330                <w:basedOn w:val="Normal"/>
331                <w:next w:val="Normal"/>
332                <w:rsid w:val="00BA7540"/>
333                <w:pPr>
334                <w:pStyle w:val="Heading8"/>
335                <w:spacing w:before="240" w:after="60"/>
336                <w:outlineLvl w:val="7"/>
337                </w:pPr>
338                <w:rPr>
339                <wx:font wx:val="Times New Roman"/>
340                <w:i/>
341                <w:i-cs/>
342                </w:rPr>
343        </w:style>
344
345        <w:style w:type="paragraph" w:styleId="Heading9">
346                <w:name w:val="heading 9"/>
347                <wx:uiName wx:val="Heading 9"/>
348                <w:basedOn w:val="Normal"/>
349                <w:next w:val="Normal"/>
350                <w:rsid w:val="00BA7540"/>
351                <w:pPr>
352                <w:pStyle w:val="Heading9"/>
353                <w:spacing w:before="240" w:after="60"/>
354                <w:outlineLvl w:val="8"/>
355                </w:pPr>
356                <w:rPr>
357                <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/>
358                <wx:font wx:val="Arial"/>
359                <w:sz w:val="22"/>
360                <w:sz-cs w:val="22"/>
361                </w:rPr>
362        </w:style>
363
364        <w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont">
365                <w:name w:val="Default Paragraph Font"/>
366                <w:semiHidden/>
367        </w:style>
368
369        <w:style w:type="table" w:default="on" w:styleId="TableNormal">
370                <w:name w:val="Normal Table"/>
371                <wx:uiName wx:val="Table Normal"/>
372                <w:semiHidden/>
373                <w:rPr>
374                <wx:font wx:val="Times New Roman"/>
375                </w:rPr>
376                <w:tblPr>
377                <w:tblInd w:w="0" w:type="dxa"/>
378                <w:tblCellMar>
379                <w:top w:w="0" w:type="dxa"/>
380                <w:left w:w="108" w:type="dxa"/>
381                <w:bottom w:w="0" w:type="dxa"/>
382                <w:right w:w="108" w:type="dxa"/>
383                </w:tblCellMar>
384                </w:tblPr>
385        </w:style>
386
387        <w:style w:type="list" w:default="on" w:styleId="NoList">
388                <w:name w:val="No List"/>
389                <w:semiHidden/>
390        </w:style>
391
392        <w:style w:type="paragraph" w:styleId="Title">
393                <w:name w:val="Title"/>
394                <w:basedOn w:val="Normal"/>
395                <w:rsid w:val="00BA7540"/>
396                <w:pPr>
397                <w:pStyle w:val="Title"/>
398                <w:spacing w:before="240" w:after="60"/>
399                <w:jc w:val="center"/>
400                <w:outlineLvl w:val="0"/>
401                </w:pPr>
402                <w:rPr>
403                <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/>
404                <wx:font wx:val="Arial"/>
405                <w:b/>
406                <w:b-cs/>
407                <w:kern w:val="28"/>
408                <w:sz w:val="32"/>
409                <w:sz-cs w:val="32"/>
410                </w:rPr>
411        </w:style>
412
413        <w:style w:type="paragraph" w:styleId="BodyText">
414                <w:name w:val="Body Text"/>
415                <w:basedOn w:val="Normal"/>
416                <w:rsid w:val="00BA7540"/>
417                <w:pPr>
418                <w:pStyle w:val="BodyText"/>
419                <w:spacing w:after="120"/>
420                </w:pPr>
421                <w:rPr>
422                <wx:font wx:val="Times New Roman"/>
423                </w:rPr>
424        </w:style>
425
426</w:styles>
427</xsl:template>
428
429</xsl:stylesheet> 
Note: See TracBrowser for help on using the repository browser.