OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] Existing libraries/mechanisms for alphabetically sorting a

[ Lists Home | Date Index | Thread Index ]

Transforming <a.b.c>...</a.b.c> to <a><b><c>...</c></b></a>

can be done as:

<xsl:template match="*[contains(name(), '.')]">
 <xsl:element name="{substring-before(name(), '.')}">
 <xsl:variable name="temp">
   <xsl:element name="{substring-after(name(), '.')}">
     <xsl:copy-of select="@*|node()"/>
   </xsl:element>
 </xsl:variable>
 <xsl:apply-templates select="xx:node-set($temp)"/>
 </xsl:element>
</xsl:template>

<xsl:template match="*">
  <xsl:copy>
  <xsl:copy-of select="@*"/>
  <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

where xx:node-set() uses the specific XSLT vendor's xx namespace.

Not tested.

Note that XSLT coding questions are best asked on the xsl-list at
mulberrytech.com

Michael Kay


> -----Original Message-----
> From: Peter Loh Yoon Chao [mailto:yoonchao@starhub.net.sg] 
> Sent: 10 February 2004 09:45
> To: michael.h.kay@ntlworld.com; xml-dev@lists.xml.org
> Subject: RE: [xml-dev] Existing libraries/mechanisms for 
> alphabetically sorting and formatting XML files
> 
> 
> Hi Michael,
> 
> Could you give some pointers?  I am really new at this. Thanks.
> 
> Peter
> 
> > -----Original Message-----
> > From: Michael Kay [mailto:michael.h.kay@ntlworld.com]
> > Sent: Tuesday, February 10, 2004 5:29 PM
> > To: 'Peter Loh Yoon Chao'; xml-dev@lists.xml.org
> > Subject: RE: [xml-dev] Existing libraries/mechanisms for 
> > alphabetically sorting and formatting XML files
> > 
> > 
> > I don't think you'll find an off-the-shelf solution 
> (structured tags 
> > like <a.b.c> are pretty weird) but it's not difficult to 
> express this 
> > transformation in XSLT, especially if you split it into two phases.
> > 
> > Michael Kay
> > 
> > > -----Original Message-----
> > > From: Peter Loh Yoon Chao [mailto:yoonchao@starhub.net.sg]
> > > Sent: 10 February 2004 01:51
> > > To: xml-dev@lists.xml.org
> > > Subject: [xml-dev] Existing libraries/mechanisms for 
> > > alphabetically sorting and formatting XML files
> > > 
> > > 
> > > Hi,
> > > 
> > > I currently have XML files with a flat key-value structure
> > > and the elements are unsorted and without proper formatting, e.g.
> > > 
> > >     <main>
> > > <e.f.g>
> > >   <value xml:lang="en">data 2</value>
> > >         </e.f.g>
> > >         <a.b.c>
> > > <value xml:lang="en">data 1</value>
> > >         </a.b.c>
> > >         ...
> > >      </main>
> > > 
> > > Are there any existing libraries or mechanisms to do the 
> following?
> > > - convert the file structure into a hierarchical tree structure
> > > - alphabetically sorting the individual elements at each level
> > > - indent the individual nodes properly in the resulting XML file
> > > 
> > > The resulting XML file should look something like the following:
> > > 
> > >     <main>
> > >         <a>
> > > 	<b>
> > > 	  <c>
> > >                 <value xml:lang="en">data 1</value>
> > > 	  </c>
> > > 	</b>
> > >         </a>
> > >         <e>
> > > 	<f>
> > > 	  <g>
> > >                 <value xml:lang="en">data 2</value>
> > > 	  </g>
> > > 	</f>
> > >         </e>
> > >         ...
> > >      </main>
> > > 
> > > I would rather not reinvent the wheel if there are existing
> > > libraries/mechanisms to do this sort of thing.  Thanks in 
> > > advance for any input.
> > > 
> > > Peter
> > > 
> > > 
> > > -----------------------------------------------------------------
> > > The xml-dev list is sponsored by XML.org
> > > <http://www.xml.org>, an initiative of OASIS 
> > <http://www.oasis-open.org>
> > 
> > The list archives are at http://lists.xml.org/archives/xml-dev/
> > 
> > To subscribe or unsubscribe from this list use the subscription
> > manager: <http://lists.xml.org/ob/adm.pl>
> > 
> 





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS