RE: [xsl] problem with flat xml file

Subject: RE: [xsl] problem with flat xml file
From: "McNally, David" <David.McNally@xxxxxxxxxx>
Date: Wed, 6 Feb 2002 18:04:45 -0500
I'm not sure I've fully understood what you're looking for, but here's an
attempt.  I wrapped your data in a <doc> tag.  Basically to find the
elements that have to be folded into each CKF_overskrift I'm testing all
following Gruppe nodes to see if its first preceding CKF_overskrift is the
same as the current one.  As always, there may well be some bugs, and there
are probably more efficient ways of doing this with keys...


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
	<xsl:output method="xml" version="1.0" encoding="UTF-8"
indent="yes"/>
	
	<xsl:template match="doc">
		<xsl:element name="{name(.)}">
			<xsl:copy-of select="@*"/>
			<xsl:apply-templates select="CKF_overskrift"/>
		</xsl:element>
	</xsl:template>

	<xsl:template match="CKF_overskrift">
		<xsl:element name="{name(.)}">
			<xsl:copy-of select="@*"/>
			<xsl:apply-templates/>
			<xsl:variable name="this" select="generate-id()"/>
			<xsl:apply-templates
select="../Gruppe[generate-id(preceding-sibling::CKF_overskrift[1]) =
$this]"/>
		</xsl:element>
	</xsl:template>

	<xsl:template match="Gruppe">
		<xsl:element name="{name(.)}">
			<xsl:attribute name="number"><xsl:value-of
select="child::p"/></xsl:attribute>
			<xsl:apply-templates
select="following-sibling::Delmaal[1]"/>
		</xsl:element>
	</xsl:template>

	<xsl:template match="Delmaal">
		<xsl:element name="{name(.)}">
			<xsl:copy-of select="@*"/>
			<xsl:apply-templates/>
		</xsl:element>
	</xsl:template>
	
	<xsl:template match="p">
		<xsl:element name="{name(.)}">
			<xsl:copy-of select="@*"/>
			<xsl:apply-templates/>
		</xsl:element>
	</xsl:template>

</xsl:stylesheet>

Hope this helps,
David.
--
David McNally            Moody's Investors Service
Software Engineer        99 Church St, NY NY 10007 
David.McNally@xxxxxxxxxx            (212) 553-7475 

> -----Original Message-----
> From: Bryan Rasmussen [mailto:bry@xxxxxxxxxx]
> Sent: Wednesday, February 06, 2002 11:25 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] problem with flat xml file
> 
> 
> for reasons to idiotic too describe I have been given the project of
> processing an extremely large flat xml file into a 
> hierarchical structure.
> I'm stuck on the following:
>  <CKF_overskrift number="1">
>   <p>Kommunikative færdigheder</p>
>   </CKF_overskrift>
>   <Gruppe number="1">
>   <p>1</p>
>   </Gruppe>
>   <Delmaal number="1">
>   <p>forstå sætninger og udtryk anvendt i forbindelse med nære og
> genkendelige emner, fx familie og dagligdag, skole, dyr, 
> fritid, ferier og
> højtider</p>
>   </Delmaal>
>   <Gruppe number="2">
>   <p>2</p>
>   </Gruppe>
>   <Delmaal number="2">
>   <p>følge med i udvalgte lyd- og billedmedier på engelsk om 
> genkendelige
> emner og danne sig en mening om, hvad det drejer sig om</p>
>   </Delmaal>
>   <Gruppe number="3">
>   <p>3</p>
>   </Gruppe>
>   <Delmaal number="3">
>   <p>beskrive sig selv og svare på enkle spørgsmål om sig 
> selv, familie,
> fritid og skole</p>
>   </Delmaal>
>   <Gruppe number="4">
>   <p>4</p>
>   </Gruppe>
>   <Delmaal number="4">
>   <p>deltage i sproglege og små rollespil</p>
>   </Delmaal>
>   <Gruppe number="5">
>   <p>5</p>
>   </Gruppe>
>   <Delmaal number="5">
>   <p>læse korte, sprogligt enkle tekster om dagligdags emner</p>
>   </Delmaal>
>   <Gruppe number="6">
>   <p>6</p>
>   </Gruppe>
>   <Delmaal number="6">
>   <p>udnytte bånd- og billedstøtte i forbindelse med læsning</p>
>   </Delmaal>
>   <Gruppe number="7">
>   <p>7</p>
>   </Gruppe>
>   <Delmaal number="7">
>   <p>uddrage informationer af enkle sagtekster</p>
>   </Delmaal>
>   <Gruppe number="8">
>   <p>8</p>
>   </Gruppe>
>   <Delmaal number="8">
>   <p>skrive enkle ord, udtryk og sætninger inden for nære og 
> genkendelige
> emner, fx familie, dyr, interesser, ferier og højtider</p>
>   </Delmaal>
>   <CKF_overskrift number="2">
>   <p>Sprog og sprogbrug</p>
>   </CKF_overskrift>
>   <Gruppe number="9">
>   <p>1</p>
>   </Gruppe>
>   <Delmaal number="9">
>   <p>udtale de engelske ord, der arbejdes med</p>
>   </Delmaal>
> 
> and so on and so on ad infinitum:
> this needs to be changed into the following structure
>  <CKF_overskrift number="1">
>  <p>Kommunikative færdigheder</p>
> <Gruppe number="1">
> <Delmaal number="1">
>   <p>forstå sætninger og udtryk anvendt i forbindelse med nære og
> genkendelige emner, fx familie og dagligdag, skole, dyr, 
> fritid, ferier og
> højtider</p>
>   </Delmaal>
>   </Gruppe>
> ........repeat
> </CKF_overskrift>
> the Gruppe attribute number should get the value of the 
> child::p, there is
> an equal number of Gruppe and Delmaal(I put in the number 
> attribute from an
> analytical stylesheet), in the example here child::p is equal 
> to the number
> attribute but it's not that way anywhere else. There is no 
> mathematical
> relationship between CKF_overskrift and Delmaal or Gruppe. 
> Help please!  I'm
> currently in that mental state where one has looked at a 
> problem so long
> that one can no longer think.
> 
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


---------------------------------------

The information contained in this e-mail message, and any attachment thereto, is confidential and may not be disclosed without our express permission.  If you are not the intended recipient or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that you have received this message in error and that any review, dissemination, distribution or copying of this message, or any attachment thereto, in whole or in part, is strictly prohibited.  If you have received this message in error, please immediately notify us by telephone, fax or e-mail and delete the message and all of its attachments.  Thank you.

Every effort is made to keep our network free from viruses.  You should, however, review this e-mail message, as well as any attachment thereto, for viruses.  We take no responsibility and have no liability for any computer virus which may be transferred via this e-mail message.

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread