473,581 Members | 2,338 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Has anyone solved the problem of lists in WordML (Word 2003)?

Has anyone solved the issue of translating lists in Word 2003 (WordML)
into xHTML? I have been trying to get the nested table code for my XSLT
to work for a while now, with no way to get the collection that I need.

To begin, I am using xsltproc that conmes with Cygwin as my processor.
I have no particular affinity to this processor except that it is open
source and standards compliant. I don't like M$, but if using a M$
processing program will fix this transformation, then I will use it.
xsltproc can be gotten here (for Windows platform):
http://www.zlatkovic.com/libxml.en.html
ftp://ftp.zlatkovic.com/pub/libxml/
(This is a windows port of libxslt, that comes with GNOME).

The problem is this:

As those of you who have worked with this type of problem, the WordML
structure is a flat structure where the focus is on visual formatting.
So, instead of a nicely nested list structure like HTML has, WordML has
a linear collection of w:p elements that contain a child <w:listPr>
element, containing the list information. A typical Word paragraph that
represents a list item is shown here:

<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/>
</w:listPr>
</w:pPr>
<w:r>
<w:t>Bulleted item 1</w:t>
</w:r>
</w:p>

The item <w:ilvl w:val="0"/> tells me that the level of nesting for this
item is "0", i.e. the first level (zero based counting).

My model for processing this list was this: As I encounter the first
<w:p> that is a list item, represented by the xPath
match="w:p[descendant-or-self::w:pPr/w:listPr][1]", then I grab the
entire collection of following-sibling elements that are paragraphs with
listPr children. This is "grabbing the list". I call a template and
pass this list to the template.

The template itself is a recursive template. Whenever I encounter a
"transition al list item" (one that is at a level greater then the
current level being processed by the template), I want to grab the
sub-collection of list elements above my current level, enclose them in
<ol></ol> and then call the template again with the new collection.

So... what is my problem? Let us pretend that my list looks like this:

* Bulleted item 1
* Bulleted item 2
o First level nesting, bulleted item 2-1
o First level nesting, bulleted item 2-2
* Bulleted item 3
* Bulleted item 4
o First level nesting, bulleted item 4-1
o First level nesting, bulleted item 4-2
o First level nesting, bulleted item 4-3
o First level nesting, bulleted item 4-4
* Bulleted item 5
* Bulleted item 6
When I am processing level 0, I don't have any issues until I grab the
items on level 1. When I do, I not only get the items 2-1 and 2-2, but
also 4-1, 4-2, 4-3, and 4-4. I have tried tweaking the xPath for this
list, but to no avail. My output looks like this with my method:

* Bulleted item 1
* Bulleted item 2
o First level nesting, bulleted item 2-1
o First level nesting, bulleted item 2-2
o First level nesting, bulleted item 4-1
o First level nesting, bulleted item 4-2
o First level nesting, bulleted item 4-3
o First level nesting, bulleted item 4-4
* Bulleted item 3
* Bulleted item 4
o First level nesting, bulleted item 4-1
o First level nesting, bulleted item 4-2
o First level nesting, bulleted item 4-3
o First level nesting, bulleted item 4-4
* Bulleted item 5
* Bulleted item 6

This following 2 items are the stripped down WordML and stripped down
XSLT for this transformation, to make this posting not insanely long.
If anyone can contribute to this problem or has already solved it, I
would be most grateful for feedback.

Cliff

*************** *************** *************** *************** *************** *****
XSLT for processing the WordML
*************** *************** *************** *************** *************** *****
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY tab " ">
<!ENTITY sp " ">
<!ENTITY crlf " ">
<!ENTITY nbsp " ">
<!ENTITY bullet "•">
]>
<xsl:styleshe et xmlns:xsl="http ://www.w3.org/1999/XSL/Transform"
xmlns:w="http://schemas.microso ft.com/office/word/2003/wordml"
xmlns:v="urn:sc hemas-microsoft-com:vml"
xmlns:w10="urn: schemas-microsoft-com:office:word "
xmlns:sl="http://schemas.microso ft.com/schemaLibrary/2003/core"
xmlns:aml="http ://schemas.microso ft.com/aml/2001/core"
xmlns:wx="http://schemas.microso ft.com/office/word/2003/auxHint"
xmlns:o="urn:sc hemas-microsoft-com:office:offi ce"
xmlns:dt="uuid: C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:st1="urn: schemas-microsoft-com:office:smar ttags" version="1.0"
exclude-result-prefixes="w v w10 sl aml wx o dt st1">
<!-- START stylesheet commands -->
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
doctype-system="fubar.d td" />
<xsl:strip-space elements="*" />
<xsl:preserve-space elements="w:bin Data w:tab" />
<!-- End stylesheet commands -->
<!-- START variable declarations -->
<!-- null value for text comparisons -->
<xsl:variable name="null"></xsl:variable>
<!-- null value for text comparisons -->
<xsl:variable name="space">&s p;</xsl:variable>
<!-- null value for text comparisons -->
<xsl:variable name="bullet">À ·</xsl:variable>
<!-- END variable declarations -->
<!-- START template declarations -->

<xsl:template match="/w:wordDocument" >
<html>
<!-- Process the head information -->
<xsl:apply-templates select="//o:DocumentPrope rties" mode="head" />
<!-- Process the body information -->
<xsl:apply-templates select="//w:body" mode="body" />
</html>
</xsl:template>

<xsl:template match="w:body" mode="body">
<body>
<xsl:apply-templates select="*" mode="body" />
</body>
</xsl:template>

<xsl:template match="wx:sect" mode="body">
<xsl:apply-templates mode="body" />
</xsl:template>

<xsl:template match="wx:sub-section" mode="body">
<xsl:apply-templates mode="body" />
</xsl:template>

<xsl:template match="w:p[descendant-or-self::w:pPr/w:listPr][1]"
mode="body">
<!-- <xsl:comment> w:p[1] template match found... </xsl:comment> -->
<xsl:call-template name="listProce ssor" mode="list">
<xsl:with-param name="myCollect ionOfSiblingLis tItems"
select=".|follo wing-sibling::w:p[descendant-or-self::w:pPr/w:listPr]" />
</xsl:call-template>
</xsl:template>

<xsl:template name="listProce ssor" mode="list">
<xsl:param name="myCollect ionOfSiblingLis tItems" />

<xsl:variable name="myCurrent ListLevel"
select="$myColl ectionOfSibling ListItems[1]/w:pPr/w:listPr/w:ilvl/@w:val" />
<ul>
<xsl:for-each select="$myColl ectionOfSibling ListItems">

<xsl:variable name="previousS iblingListLevel "
select="precedi ng-sibling::w:p[position() =
1]/w:pPr/w:listPr/w:ilvl/@w:val" />
<xsl:variable name="myOwnCurr entListLevel"
select="descend ant-or-self::w:p/w:pPr/w:listPr/w:ilvl/@w:val" />
<xsl:variable name="nextSibli ngListLevel"
select="followi ng-sibling::w:p[position() =
1]/w:pPr/w:listPr/w:ilvl/@w:val" />

<xsl:variable name="attempToG etTheRightSetIn toAVariable"
select="followi ng-sibling::w:p[child::w:pPr/w:listPr/w:ilvl/@w:val][generate-id(preceding-sibling::w:p[child::w:pPr/w:listPr/w:ilvl/@w:val
= 0]) = generate-id(current())]" />

<!-- <xsl:comment> current contents: <xsl:value-of
select="current ()" /><xsl:text> </xsl:text></xsl:comment> -->
<!-- <xsl:comment><x sl:text> *****Found a collection of this many
items: </xsl:text><xsl:v alue-of
select="count($ attempToGetTheR ightSetIntoAVar iable)" /><xsl:text>
</xsl:text></xsl:comment> -->

<xsl:choose>
<xsl:when
test="number(de scendant-or-self::w:pPr/w:listPr/w:ilvl/@w:val) =
number($myCurre ntListLevel)">
<li>
<xsl:call-template name="processPa ragraphAsListIt emContents"
mode="list" />
</li>
</xsl:when>
<xsl:when test="(
number(descenda nt-or-self::w:pPr/w:listPr/w:ilvl/@w:val) &gt;
number($myCurre ntListLevel) ) and (
number(descenda nt-or-self::w:pPr/w:listPr/w:ilvl/@w:val) &gt;
number($previou sSiblingListLev el))">
<xsl:variable name="nextListI temIndexOnOrBel owMyLevel"
select="followi ng-sibling::w:p[w:pPr/w:listPr/w:ilvl/@w:val &lt;=
number($myCurre ntListLevel)]" />
<xsl:variable name="subCollec tion"
select=".|follo wing-sibling::w:p[descendant-or-self::w:pPr/w:listPr/w:ilvl/@w:val
&gt; number($myCurre ntListLevel)]"></xsl:variable>

<!-- <xsl:comment> My current list level for recursive call:
<xsl:value-of select="number( $myCurrentListL evel)" /> , with current
contents: <xsl:value-of select="." /><xsl:text>
</xsl:text></xsl:comment> -->
<li>
<xsl:call-template name="listProce ssor" mode="list" >
<xsl:with-param name="myCollect ionOfSiblingLis tItems"
select="$subCol lection" />
</xsl:call-template>
</li>

</xsl:when>
<xsl:otherwis e>
<!-- Do nothing! -->
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</ul>
</xsl:template>

<xsl:template name="processPa ragraphAsListIt emContents" mode="list">
<xsl:if test="descendan t-or-self::text()">
<xsl:apply-templates mode="body" />
</xsl:if>
</xsl:template>

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

<xsl:template match="w:r|w:b| w:u|w:i" mode="body">
<xsl:apply-templates mode="body" />
</xsl:template>

<xsl:template match="*" mode="body">
<!-- Do nothing... drop content here... -->
</xsl:template>
<!-- END template declarations -->
</xsl:stylesheet>
*************** *************** *************** *************** *************** *****
Sample stripped down WordML
*************** *************** *************** *************** *************** *****
<?xml version="1.0" encoding="UTF-8" standalone="yes "?>
<?mso-application progid="Word.Do cument"?>
<w:wordDocume nt
xmlns:w="http://schemas.microso ft.com/office/word/2003/wordml"
xmlns:v="urn:sc hemas-microsoft-com:vml"
xmlns:w10="urn: schemas-microsoft-com:office:word "
xmlns:sl="http://schemas.microso ft.com/schemaLibrary/2003/core"
xmlns:aml="http ://schemas.microso ft.com/aml/2001/core"
xmlns:wx="http://schemas.microso ft.com/office/word/2003/auxHint"
xmlns:o="urn:sc hemas-microsoft-com:office:offi ce"
xmlns:dt="uuid: C2F41010-65B3-11d1-A29F-00AA00C14882"
w:macrosPresent ="no" w:embeddedObjPr esent="no" w:ocxPresent="n o"
xml:space="pres erve">
<w:body>
<wx:sect>
<wx:sub-section>
<w:p>
<w:pPr>
<w:pStyle w:val="Heading1 "/></w:pPr>
<w:r>
<w:t>Test #9</w:t></w:r></w:p>
<w:p>
<w:r>
<w:t>Here is a bulleted test list with 2 levels deep
nesting:</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Bulleted item 1</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Bulleted item 2</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="1"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="o" wx:wTabBefore=" 1080" wx:wTabAfter="2 10"/>
<wx:font wx:val="Courier New"/></w:listPr></w:pPr>
<w:r>
<w:t>First level nesting, bulleted item 2-1</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="1"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="o" wx:wTabBefore=" 1080" wx:wTabAfter="2 10"/>
<wx:font wx:val="Courier New"/></w:listPr></w:pPr>
<w:r>
<w:t>First level nesting, bulleted item 2-2</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Bulleted item 3</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Bulleted item 4</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="1"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="o" wx:wTabBefore=" 1080" wx:wTabAfter="2 10"/>
<wx:font wx:val="Courier New"/></w:listPr></w:pPr>
<w:r>
<w:t>First level nesting, bulleted item 4-1</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="1"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="o" wx:wTabBefore=" 1080" wx:wTabAfter="2 10"/>
<wx:font wx:val="Courier New"/></w:listPr></w:pPr>
<w:r>
<w:t>First level nesting, bulleted item 4-2</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="1"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="o" wx:wTabBefore=" 1080" wx:wTabAfter="2 10"/>
<wx:font wx:val="Courier New"/></w:listPr></w:pPr>
<w:r>
<w:t>First level nesting, bulleted item 4-3</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="1"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="o" wx:wTabBefore=" 1080" wx:wTabAfter="2 10"/>
<wx:font wx:val="Courier New"/></w:listPr></w:pPr>
<w:r>
<w:t>First level nesting, bulleted item 4-4</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Bulleted item 5</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Bulleted item 6</w:t></w:r></w:p>
<w:p>
<w:r>
<w:t>Here is some following text...</w:t></w:r></w:p></wx:sub-section>
<wx:sub-section>
<w:p>
<w:pPr>
<w:pStyle w:val="Heading1 "/></w:pPr>
<w:r>
<w:t>Test #10</w:t></w:r></w:p>
<w:p>
<w:r>
<w:t>Here is another bulleted test list for testing
purposes:</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Another list entirely, Bulleted item 1</w:t></w:r></w:p>
<w:p>
<w:pPr>
<w:listPr>
<w:ilvl w:val="0"/>
<w:ilfo w:val="2"/>
<wx:t wx:val="·" wx:wTabBefore=" 360" wx:wTabAfter="2 40"/>
<wx:font wx:val="Symbol"/></w:listPr></w:pPr>
<w:r>
<w:t>Another list entirely, Bulleted item 2</w:t></w:r></w:p>
<w:p/>
<w:sectPr>
<w:pgSz w:w="12240" w:h="15840"/>
<w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800"
w:header="720" w:footer="720" w:gutter="0"/>
<w:cols w:space="720"/>
<w:docGrid
w:line-pitch="360"/></w:sectPr></wx:sub-section></wx:sect></w:body></w:wordDocument>
Jul 20 '05 #1
5 7403
Check Oleg Tkachenko's site; he created a WordML -> HTML XSLT app.
http://blog.tkachenko.com

--
Mary McRae
blogs: http://blogs.officezealot.com/mary
web: http://www.office-xml.com
Jul 20 '05 #2
"Clifford W. Racz" <ra*******@veri zon.net> writes:
<snip/>
This following 2 items are the stripped down WordML and stripped down
XSLT for this transformation, to make this posting not insanely
long. If anyone can contribute to this problem or has already solved
it, I would be most grateful for feedback.


I don't think you are going to be able to solve this by tinkering with
the XPath - the XML just doesn't have enough structure. The problem
is that you need to track transitions between list levels, and they
are not accessible with XPath in this flat XML structure

Here's a radically simplified version that simulates your problem that
you should be able to adapt to your code easily enough.

It again uses a recursive template to keep track of the list level,
but now the list items are considered sequentially rather than in
groups of the same level. Using the recursion we can detect when the
list level changes and insert some markup accordingly (this has to be
done "by hand" using disable-output-escaping, which is ugly. But it
works).

[Note by the way: you can't use the mode attribute on
xsl:call-template, but that's not the problem here]

This transformation

- - -
<xsl:styleshe et
xmlns:xsl="http ://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="list">
<ul>
<xsl:call-template name="process-list-items">
<xsl:with-param name="item-number" select="1"/>
<xsl:with-param name="level" select="0"/>
</xsl:call-template>
</ul>
</xsl:template>

<xsl:template name="process-list-items">
<xsl:param name="item-number"/>
<xsl:param name="level"/>

<xsl:variable name="current-item" select="./item[$item-number]"/>

<!-- If the list level has increased we start a sublist -->
<xsl:if test="$level &lt; $current-item/level/@val">
<xsl:text disable-output-escaping="yes"> &lt;ul></xsl:text>
</xsl:if>

<!-- If the list level has decreased we end the sublist -->
<xsl:if test="$level &gt; $current-item/level/@val">
<xsl:text disable-output-escaping="yes"> &lt;/ul></xsl:text>
</xsl:if>

<!-- Output the list item -->
<li><xsl:valu e-of select="$curren t-item/text"/></li>

<!-- Process the next list item -->
<xsl:if test="./item[$item-number+1]">
<xsl:call-template name="process-list-items">
<xsl:with-param name="item-number" select="$item-number+1"/>
<xsl:with-param name="level" select="$curren t-item/level/@val"/>
</xsl:call-template>
</xsl:if>

</xsl:template>

</xsl:stylesheet>
- - -

with this XML

- - -
<list>
<item>
<level val="0"/>
<text>Item 1</text>
</item>
<item>
<level val="0"/>
<text>Item 2</text>
</item>
<item>
<level val="1"/>
<text>Item 2-1</text>
</item>
<item>
<level val="1"/>
<text>Item 2-2</text>
</item>
<item>
<level val="0"/>
<text>Item 3</text>
</item>
<item>
<level val="0"/>
<text>Item 4</text>
</item>
<item>
<level val="1"/>
<text>Item 4-1</text>
</item>
<item>
<level val="1"/>
<text>Item 4-2</text>
</item>
<item>
<level val="0"/>
<text>Item 5</text>
</item>
</list>
- - -

gives this output (after reformatting)

- - -
<?xml version="1.0"?>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<ul>
<li>Item 2-1</li>
<li>Item 2-2</li>
</ul>
<li>Item 3</li>
<li>Item 4</li>
<ul>
<li>Item 4-1</li>
<li>Item 4-2</li>
</ul>
<li>Item 5</li>
</ul>
- - -

--
Ben Edgington
Mail to the address above is discarded.
Mail to ben at that address might be read.
http://www.edginet.org/
Jul 20 '05 #3
Clifford W. Racz wrote:
Has anyone solved the issue of translating lists in Word 2003 (WordML)
into xHTML? I have been trying to get the nested table code for my XSLT
to work for a while now, with no way to get the collection that I need.


You may want to download Microsoft's WordML viewer and take a look at
their XSLT stylesheet.

--
Oleg Tkachenko [XML MVP]
http://blog.tkachenko.com
Jul 20 '05 #4
I have looked at the M$ WordML viewer... of course, that was one of the first things I did.

What is spit out of that thing is a paragraph that is styled to sort-of look like a list item, just as word handles it in WordML.

For example, here is the first list item when transformed by the word2html.xsl:

<p class="Normal-P" style="margin-left:36pt;text-indent:-18pt;">
<span class="Normal-H"><span style="font-family:Symbol;f ont-style:normal;te xt-decoration:none ;font-weight:normal;" >·<span style="padding-left:12pt;"></span></span>Bulleted item 1</span>
</p>

And so, that is useless when trying to export this to html. Word internally handles it differently because the "save as..." html option does export it properly. However, I am not wanting html output, only xml that is compatable with the html list model.

Clifford
Oleg Tkachenko [MVP] wrote:
Clifford W. Racz wrote:
Has anyone solved the issue of translating lists in Word 2003 (WordML)
into xHTML? I have been trying to get the nested table code for my XSLT
to work for a while now, with no way to get the collection that I need.

You may want to download Microsoft's WordML viewer and take a look at
their XSLT stylesheet.

Jul 20 '05 #5
I am trying to write a simple XSLT to "beautify" any arbitrary xml, i.e. to indent it for readability and convert it to UTF-8 for use in some scripts that I authored.

If I use something like this:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:styleshe et version="1.0" xmlns:xsl="http ://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>

It does the trick nicely. I want to accept any arbitrary xml language, so I don't specify a default namespace. Not a problem.

Problem: I want to output the proper DOCTYPE statement for the input file, so that I can validte it.

So, does anyone know a way to access the public and system dtd names for an input filetype?
Clifford
Jul 20 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
7588
by: Tom Frey | last post by:
Hi, is there any solution available for transforming WordML XML files to PDF on server requests. Here is basically what I'm looking for: We have like 15 different types of contracts that have to be filled dynamically with data (names, addresse, etc.). These contracts are up to 30 pages long. Right now they are all in .doc format and we...
4
1475
by: helpful sql | last post by:
Hi all, In my code, I need all "datasetMPI" nodes in an array. Here is a portion of my xml file: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?mso-application progid="Word.Document"?> <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml"...
3
4036
by: utterberg | last post by:
If I have an xml that looks something like this: <section> <item> <label>label one</label> <data>123</label> </item> <item> <label>label two</label> <data>456</label>
0
1153
by: Matthias Langbein | last post by:
Hi all, in ref. to the MSDN-Article "New XML Features of the Microsoft Office Word 2003 Object Model" (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_wd2003_ta/html/odc_Wdnew2k3XMLOM.asp) I've got a few questions: 1.) They say, the first step to work with XML in a word document is to add the XML-Schema to the...
1
3644
by: Marco Moioli | last post by:
Hi, I have a problem with a X509 digital signature. I want to sign a Word 2003 document saved in .xml format. the problem is that after the signature, Word 2003 don't want to open the document. If I apply a standard W3C signature to an Xml file wrote in Word 2003 I obtain: <?mso-application progid="Word.Document"?> <w:wordDocument
4
1793
by: dwergkees | last post by:
Hi, Got a litte problem here. I'm trying to create a XSLT file that will do a transformation from WordML format (MS Word XML format, see http://rep.oio.dk/Microsoft.com/officeschemas/welcome.htm) to a reasonably clean (X)HTML format. (The reason being that, combined with some PHP scripting it should be possible to store the embedded...
1
1175
by: Me | last post by:
Hi all I have word documents that is saved as word 2003 xml. My asp.net application allows users to see these files and download them. I would then like these files to be edited by the user in their browser. How can I do this? What options do I have?
1
2974
by: Biff | last post by:
I have a WordML file that I want to render in the browser in word via ASP.NET. If I use Response.Redirect("filename.xml") in the ASP.NET codebehind I can get it to work. I would prefer to use set the ContentType to the appropriate value and write the actual XML text to the Response object, but I can't get that to work. I've tried the...
1
3142
by: Pedro Rosas Silva | last post by:
Hi everyone, Is anybody aware of a way how to insert an image in a WordML document programmatically, through C#? I have a C# application that loads into memory a WordML document (XmlDocument). The document is tagged in certain places so that the C# application can search for those tags (using the System.Xml namepace) and fill
0
7789
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
8301
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
1
7894
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
8169
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
5361
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3803
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
0
3820
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2300
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
0
1132
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.