[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Paragraphs in Word XML

Subject: RE: Paragraphs in Word XML
From: "Kaila Kaarle" <Kaarle.Kaila@xxxxxxx>
Date: Fri, 6 Jan 2006 10:56:47 +0200
xml paragraphs
Hi again,

To follow up this thread I'll tell you how I finally succeeded in this. As
Michael said it was a tough one.

I did the transformation in two steps. If I understand correctly it could not
be done with plain XSLT 1.0 but libsxlt has the <xsl:document> element from
XSLT 1.1 that I needed and this is available in other engines too.

1. First I created a temporary file as this:

<xsl:document href="tmp.xml">
<dict>
  <entry>
 <xsl:call-template name="raport" />
  </entry>
</dict>
</xsl:document>

2. Here I created the result without any <p> elements but with
<w:pPr>
   <w:pStyle w:val="TableHeader"/>
</w:pPr>

(Paragraph style definition) at the beginning of every paragraph

3. Then I read the data into the document using

 <xsl:apply-templates select="document('tmp.xml')"/>


4. In this I used transformations using method by David Carlisle from

http://www.biglist.com/lists/xsl-list/archives/200510/msg00089.html

To add the <p> element in the right places.
I could not solve without using tmp.xml.

So great thanks for Michael and David and for this great list.

Regards
Kaarle


-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: 4. tammikuuta 2006 17:06
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  Paragraphs in Word XML

This is a tough one but similar problems have been solved on this list
before!

I think the design in outline is this: if you encounter a table that has a
break element within it, you need to apply a template/function that splits it
into two: everything before the break, and everything after the break; you
then apply the same processing recursively to "everything after the break" in
case there are multiple breaks.

The processing is a template rule that takes the break element as a parameter.
When processing an element that is an ancestor of the break element, create a
shallow copy of yourself containing deep copies of all your pre-break
children; then apply templates recursively to the child that's an ancestor of
the break element, then create a shallow copy of yourself containing deep
copies of all your post-break children.

Hope that makes sense, I don't have time to translate it into code!

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Kaila Kaarle [mailto:Kaarle.Kaila@xxxxxxx]
> Sent: 04 January 2006 13:52
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Paragraphs in Word XML
>
> Hello,
>
> I have an xml file containing the data for my genealogical report. It
> contains table elements and section elements and within sections there
> are person - relation and notices elements.
> Notices elements contain notice elements with information such as
> birth dates and places but also long texts about what the person did.
> The text is divided into para elements and some of them must be
> written into separate paragraps in the output.
>
> Word XML requires that <body> element contains <p>
> (paragraph) elements. When I use XSTL to create my document I would
> usually transform one section in my XML into a <p> element in Word
> XML. But if the text contains paragraph marks I need to fininsh the
> current Word paragraph and start a new one (with a different style)
> but I don't know if I can do that in XSLT.
>
> I'll add an example at the end of this message of my xml.
>
> My xml looks like this: All of it should go to one pargraph if the
> <notice tag="NOTE"> would not contain the <para type="NEW"> element.
> The rest of the text should go to the second paragraph.
>
> How can I split the text in the example into two different elements on
> output???
> Regards
> Kaarle
>
>  <tables>
>     <table number="1">
>       <section type="MAIN" gen="1">
>         <person sex="M" unitid="I1" source="1">
>           <name>
>             <givenname>Paavo</givenname>
>             <surname>Kaila</surname>
>           </name>
>           <notices>
>             <notice tag="BIRT" text="Syntynyt">
>               <date value="18840413">13.04.1884</date>
>               <place name="Vimpeli">Vimpeli</place>
>             </notice>
>             <notice tag="DEAT" text="Kuollut">
>               <place name="Lappeenranta">Lappeenranta</place>
>             </notice>
>             <notice tag="OCCU">
>               <para>Bonde</para>
>               <place name="Esse">Esse</place>
>             </notice>
>             <notice tag="NOTE">
>               <para>Paavo oli isdni isd. Hdn meni Evan kanssa
> naimisiin mutta oli hdnelld pari kolme muutakin vaimoa. Heitd en ole
> tavannut vaikka viimeinen kuoli vasta muutama vuiosi sitten.
> </para>
>               <para type="NEW">Lisdsin tdhdn vield tdllaisen toisen
> tekstikappaleen. Word-xml testi on nyt testattavana ja siindkin
> pitdisi saada kappaleet paikoilleen. Muuten homma ei oikein suju.
> Myvskin olisi hyvd jos tdmd jatkuisi useammalle riville. Ehkd se jo on
> ohittanut ekan rivin loppusarakkeen.</para>
>             </notice>
>             <notice tag="PHOT">
>               <media name="P1R7.jpg" number="1">Tdmd on Paavo</media>
>             </notice>
>           </notices>
>           <relation type="SPOU" number="1" source="2">
>             <event type="MARR">
>               <date value="1907">1907</date>
>               <place name="Tammerfors">Tammerfors</place>
>             </event>
>             <person sex="F" unitid="I2">
>               <name>
>                 <givenname>Eva Charlotta</givenname>
>                 <surname>Koskinen</surname>
>               </name>
>               <notices>
>                 <notice tag="NAME">
>                   <name>
>                     <givenname>Eva Charlotta</givenname>
>                     <surname>Kaila</surname>
>                   </name>
>                 </notice>
>                 <notice tag="BIRT" text="Syntynyt" source="3">
>                   <date value="18920422">22.04.1892</date>
>                   <place name="Tammela">Tammela</place>
>                 </notice>
>                 <notice tag="DEAT" text="Kuollut">
>                   <date value="19640406">06.04.1964</date>
>                   <place name="Helsinki">Helsinki</place>
>                 </notice>
>               </notices>
>             </person>
>           </relation>
>         </person>
>       </section>
>    </table>
> </tables>

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.