XML to XML newbee help

A

Adam

Hi, Me very confused. I have some XML that I want to convert to a more
basic XML. I have put an example of what I have and what I want, I
have used XSL to convert XML to HTML, but never this way.

The <item numberingtext="10.01.01 "> I want in the para tag I
think, but if it has to be it own tag, no worrys.

Any help would be fantastic

Example of what I have:
=========================
<?xml version="1.0" encoding="UTF-8" ?>
<document xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/HTML/1998/html4" xml:lang="en"
style="widows: 0; orphans: 0; word-break-inside: normal;
\-ilx-endnote-position: sectionbottom; \-ilx-endnote-style-type:
lower-alpha; \-ilx-footnote-position: pagebottom;
\-ilx-footnote-numbering-policy: continuous;
\-ilx-endnote-numbering-policy: continuous; \-ilx-footnote-style-type:
decimal;\-ilx-block-border-mode: merge;">
<part style="page: pageStyle1;">
<par class="Ahead">Duis autem vel eum iriure dolor in hendrerit in
</par>
<par class="Bhead">vulputate velit esse consequat</par>
<par class="Normal" style="font-size: 12.0pt;"></par>
<list style="margin-left: 18.0mm; list-style-type: decimal;
\-ilx-list-group: 4; \-ilx-marker-align: left; \-ilx-marker-format:
&quot;%0.%1.%0&quot;; \-ilx-marker-offset: -1020tw;
\-ilx-marker-follow: tab;">
<item numberingtext="10.01.01 ">
<par class="MainText" style="\-ilx-tab-stops: &quot;left blank
0tw&quot;;">Lorem ipsum dolor sit amet,
<link xlink:type="simple" xlink:show="replace"
xlink:actuate="onRequest" xlink:href="http://www.apple.com">
<inline class="Hyperlink">consectetuer</inline>
</link> adipiscing elit, sed diam nonummy nibh euismod
<inline class="reference">tincidunt</inline> ut laoreet dolore
magna aliquam erat volutpat Ut wisi eiim ad minim veniam, quis nostrud
exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea
commodo consequat (B-1664-0010). Duis lobortis autem vel eum iriure
dolor in hendrerit in vulputate velit esse
<link xlink:type="simple" xlink:show="replace"
xlink:actuate="onRequest" xlink:href="http://www.apple.com">
<inline class="Hyperlink">molestie</inline>
</link> consequat, vel illum dolore eu feugiat nulla facilisis at
vero eros et accumsan et iusto odio dignissim qui blandit praesent
luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
</par>
</item>
</list>
</part>
</document>




=========================
This is what I want:
=========================
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Ahead>Duis autem vel eum iriure dolor in hendrerit in</Ahead>
<Bhead>vulputate velit esse consequat</Bhead>
<para>10.01.01 Lorem ipsum dolor sit amet,
<link href="http://www.apple.com">consectetuer</link> adipiscing
elit, sed diam nonummy nibh euismod
ut laoreet dolore magna aliquam erat volutpat Ut wisi eiim ad minim
veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl
ut aliquip ex ea commodo consequat (B-1664-0010). Duis lobortis autem
vel eum iriure dolor in hendrerit in vulputate velit esse
<link href="http://www.apple.com">consectetuer</link> consequat, vel
illum dolore eu feugiat nulla facilisis at vero eros et accumsan et
iusto odio dignissim qui blandit praesent luptatum zzril delenit augue
duis dolore te feugait nulla facilisi.
</para>
</root>
 
A

Adam

Hi,

I want to convert the XML at the top using XSL to cleaner XML, to then
be used in other aplications.

Can this be done?.


Thanks
 
A

Andy Dingley

Hi, Me very confused. I have some XML that I want to convert to a more
basic XML. I have put an example of what I have and what I want,

Try this:

Notes:
- I'm ingnoring some whitespace issues that are rarely significant.
You'd need to supply a better spec before going there.

- I guess the text of the second link in your example was a typo.

- This is an impossible problem to solve, as a general case from one
example. I can make it work (quite easily) for that one case, but a
couple of examples don't _define_ a mapping (I had to guess at this,
and it's a 50:50 guess between whether to map <item> or <par
class="MainText"> as the output <para>).

As a reductio ad absurdum, I could simply have wrapped your output
example in a <xsl:template> element (literal text and all !) and
called that a valid solution to the stated question. You see the
problem ?


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink"
exclude-result-prefixes="xlink"
<xsl:eek:utput method="xml" version="1.0" encoding="UTF-8" indent="yes"/>


<xsl:template match="link" >
<link href="{@xlink:href}" ><xsl:value-of select=".//text()"
/></link>
</xsl:template>

<xsl:template match="par[@class='Normal']" />

<xsl:template
match="par[@class='MainText']" >
<para>
<xsl:value-of select="translate (parent::item/@numberingtext,
' ', ' ')" />
<xsl:apply-templates select="* | text()" />
</para>
</xsl:template>


<xsl:template
match="par[@class and not (@class = 'Normal' or @class =
'MainText')]" >
<xsl:element name="{./@class}" ><xsl:value-of select="text()"
/></xsl:element>
</xsl:template>


<xsl:template match="document/part" >
<root>
<xsl:apply-templates select="*" />
</root>
</xsl:template>

</xsl:stylesheet>
 
A

Adam

Thank you very much, will give this a go, and let you know how I get on.



Again Thanks


Adam
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top