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

Re: grouping questions

Subject: Re: grouping questions
From: Xiang Li <lix@xxxxxxx>
Date: Thu, 05 Aug 2004 10:05:59 EDT
xiang li
Hi, Mukul,

Thank you again for the XSL file. now i have one more question left, if in
the original file, rows of "c" are not always the
"following-sibling::row[1]" to the corresponding "a" row, is there any way
to find it? the reason i asked this question is, I got the original data
from different sources, and there are lots of problems with the original
data.

Regards,
Xiang

On Wed, 4 Aug 2004 21:40:33 -0700 (PDT) Mukul Gandhi wrote:

> Hi Xiang,
>   Please try this XSL -
> 
> <?xml version="1.0"?> 
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
>  
> <xsl:output method="xml" indent="yes" /> 
>  
> <xsl:decimal-format name="fmt" digit="D" />
> 
> <xsl:template match="/root">
>   <root>
>    <xsl:for-each select="Record">
>     <Sample label="{@sample}">
>      <xsl:for-each select="row[Axis = 'a']">
>	<Record>
>	 <Ratio_A_by_C>
>	   <xsl:value-of select="format-number(length
> div following-sibling::row[1]/length, 'DDDD.DD',
> 'fmt')" />
>	 </Ratio_A_by_C>
>	 <ExperimentalConditions>
>	    <xsl:for-each select="*[(name() != 'Axis')
> and (name() != 'length')]">
>	      <xsl:element name="{name()}">
>		<xsl:value-of select="." />
>	      </xsl:element>
>	    </xsl:for-each>
>	 </ExperimentalConditions>
>	</Record>
>      </xsl:for-each>
>     </Sample> 
>    </xsl:for-each>
>   </root> 
> </xsl:template>
>   
> </xsl:stylesheet>
> 
> Regards,
> Mukul
> 
> --- Xiang Li <lix@xxxxxxx> wrote:
> 
> > 
> > Hi, Mukul,
> > 
> > Thanks for your reply. I guess I did not explain the
> > problem well in my
> > last message, actually i wanted to put togther
> > row[Axis='c'] and
> > row[Axis='a'] according to their experimental
> > conditions, so that i can use
> > their <length> values to do some calculations. and
> > the grouping is done
> > within each <Sample> element.
> > 
> > so my output file should look like:
> > 
> > <root>
> >  <Sample label="1">
> >    <Record>
> >	 <Ratio_A_by_C>1.02</Ratio_A_by_C> <!--length of
> > 'a' divided by length
> > of 'c' -->
> >	 <ExperimentalConditions>
> >	   <atmosphere>air</atmosphere>
> >	   <temperature>200K</temperature>
> >	 </ExperimentalConditions>
> >    </Record>
> >    <Record>
> >	 <Ratio_A_by_C>0.93</Ratio_A_by_C>
> >	 <ExperimentalConditions>
> >	   <atmosphere>air</atmosphere>
> >	   <temperature>400K</temperature>
> >	 </ExperimentalConditions>>
> >    </Record>
> >    <Record>
> >	 <Ratio_A_by_C>1.0</Ratio_A_by_C>
> >	 <ExperimentalConditions>
> >	   <atmosphere>Ar</atmosphere>
> >	   <temperature>200K</temperature>
> >	 </ExperimentalConditions>
> >    </Record>
> >   </Sample>
> >  <Sample label="2">
> >    <Record>
> >	 <Ratio_A_by_C>1.15</Ratio_A_by_C>
> >	 <ExperimentalConditions>
> >	   <atmosphere>air</atmosphere>
> >	   <temperature>200K</temperature>
> >	 </ExperimentalConditions>
> >    </Record>
> >  ...
> >  ...
> >  </Sample>
> > </root>
> > 
> > one additional problem is that the experimental
> > condition tags
> > (temperature, are not always the same.
> > 
> > Appreciate your help!
> > 
> > Xiang
> > 
> > 
> > On Wed, 4 Aug 2004 09:33:24 -0700 (PDT) Mukul Gandhi
> > wrote:
> > 
> > > Hi Xiang,
> > > Please try this XSL -
> > > (this is a Muenchian Grouping solution)
> > > 
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsl:stylesheet version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > > 
> > > <xsl:output method="text"/>
> > >	    
> > > <xsl:key name="by-row" match="row"
> > > use="concat(length,' ',Axis)" />
> > >	    
> > > <xsl:template match="/root">
> > >	 <xsl:for-each select="Record/row[generate-id(.)
> > =
> > > generate-id(key('by-row', concat(length,'
> > > ',Axis))[1])]">
> > >	   Experiment (length=<xsl:value-of
> > select="length"
> > > />,Axis=<xsl:value-of select="Axis"
> > > />)<xsl:text>
> > </xsl:text>
> > >	   <xsl:for-each select="key('by-row',
> > > concat(length,' ',Axis))">
> > >	    <xsl:for-each select="*[(name() != 'length')
> > > and (name() != 'Axis')]">
> > >	       <xsl:value-of select="name()"
> > > />=<xsl:value-of select="." />
> > >		 <xsl:if test="position() !=
> > > last()">,</xsl:if>
> > >	    </xsl:for-each>
> > >	    <xsl:text>
> > </xsl:text> 	    
> > >	   </xsl:for-each>
> > >	 </xsl:for-each>
> > > </xsl:template>
> > >	    
> > > </xsl:stylesheet>
> > > 
> > > I added a <root> tag at the begining to make the
> > XML
> > > well formed.
> > > 
> > > Hope I understood the problem correctly..
> > > 
> > > Regards,
> > > Mukul
> > > 
> > > --- Xiang Li <lix@xxxxxxx> wrote:
> > > 
> > > > Hi, 
> > > > 
> > > > I have some problems in restructuring some data
> > > > files. what i have to do is
> > > > to group the measurements(<length>) of "a" and
> > "c"
> > > > (<Axis>) together, so i
> > > > need to find what are the other tags in each
> > row,
> > > > and read their values to
> > > > decide which ones belong to the same experiment.
> > 
> > > > 
> > > > my xml file looks like this:
> > > > 
> > > > <Record sample="1">
> > > >    <row row_id='0'>
> > > >     <length>5.4</length>
> > > >     <Axis>a</Axis>
> > > >     <Environment>air</Environment>
> > > >     <Temperature>200K</Temperature>
> > > >    </row>
> > > >    <row row_id='1'>
> > > >     <length>5.3</length>
> > > >     <Axis>c</Axis>
> > > >     <Environment>air</Environment>
> > > >     <Temperature>200K</Temperature>
> > > >    </row>
> > > >    <row row_id='2'>
> > > >     <length>5.0</length>
> > > >     <Axis>a</Axis>
> > > >     <Environment>air</Environment>
> > > >     <Temperature>400K</Temperature>
> > > >    </row>
> > > >    <row row_id='3'>
> > > >     <length>5.4</length>
> > > >     <Axis>c</Axis>
> > > >     <Environment>air</Environment>
> > > >     <Temperature>400K</Temperature>
> > > >    </row>
> > > >    <row row_id='4'>
> > > >     <length>5.4</length>
> > > >     <Axis>a</Axis>
> > > >     <Environment>Ar</Environment>
> > > >     <Temperature>200K</Temperature>
> > > >    </row>
> > > >    <row row_id='5'>
> > > >     <length>5.4</length>
> > > >     <Axis>c</Axis>
> > > >     <Environment>Ar</Environment>
> > > >     <Temperature>200K</Temperature>
> > > >    </row>
> > > > </Record>
> > > > <Record sample="2">
> > > >     ...
> > > > </Record>
> > > > 
> > > > Problem is, tags other than <length> and <Axis>
> > vary
> > > > from sample to sample.
> > > > this seems like impossible for me to do the
> > grouping
> > > > using xslt. Maybe some
> > > > gurus here can give me your brilliant ideas?...
> > > > thanks!!
> > > > 
> > > > Xiang
> 
> 
> 
>		  
> __________________________________
> Do you Yahoo!?
> New and Improved Yahoo! Mail - Send 10MB messages!
> http://promotions.yahoo.com/new_mail 

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.