Re: [xsl] WordML to XML

Subject: Re: [xsl] WordML to XML
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Sat, 12 Feb 2005 11:18:52 +0100
Tempore 03:14:57, die 02/12/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Vasu Nanjangud <vasdeep@xxxxxxxxx>:

Joris, et al...

My requirement is specifically to convert wordML to
xml. i.e. strip off the "wordML" specific tags, but
retain the "formatting instructions".

When you apply this template to your WordML doc:

<xsl:stylesheet xmlns:xsl=""; version="1.0" xmlns:w=""; exclude-result-prefixes="w">
<xsl:output method="xml" version="1.0" encoding="UTF-8"

<xsl:template match="w:wordDocument">
		<xsl:apply-templates select=".//w:body"/>

<xsl:template match="w:r ">
	<xsl:apply-templates select="(w:rPr|w:t)[1]"  mode="styling"/>

<xsl:template match="w:rPr"  mode="styling">
	<xsl:apply-templates select="*[1]" mode="styling"/>

<xsl:template match="w:u|w:b|w:i" priority="5" mode="styling">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="(following-sibling::*|../../w:t)[1]" mode="styling"/>

<xsl:template match="w:rPr/*" mode="styling">
<xsl:apply-templates select="(following-sibling::*|../../w:t)[1]" mode="styling"/>

<xsl:template match="w:t" mode="styling"><xsl:value-of select="."/></xsl:template>


you will get this output:

         I have bold, italics and underscore

(I added modes, so the algorithm will not interfere with other templates you might be using.)

So, I need help in writing an xslt which will
1. traverse through every "w:r" block.

2. Look for "w:rPr" tags with "w:i", "w:b" , "w:u"
possible, but not necessary.
3. If they exist, output <i>, <b>, <u> tags, then
output the contents of the corresponding "w:t" block
and then close the <i>, <b>, <u> tags.
This is not the way XSLT works. In XSLT you construct elements, which are added to the result tree. When the XSLT processing is done, a serializer outputs these elements as tags.
In other words, you cannot "open a tag" nor "close a tag" in XSLT. (unless your messing with it as if it was character data, but don't do that)

While step 3 of your the algorithm, can't be used in XSLT. The templates in my stylesheet will give output exactly as if they were following step 3.

regards, -- Joris Gillis ( Gaudiam omnibus traderat W3C, nec vana fides

Current Thread