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

Re: grouping questions

Subject: Re: grouping questions
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Thu, 5 Aug 2004 07:22:59 -0700 (PDT)
xsl for each sample
Hi Xiang,
  If rows of "c" are not always the
"following-sibling::row[1]" to the corresponding "a"
row , then somehow you have to find the pattern by
which they are related, and construct a suitable XPATH
expression. 

Without looking at all possible ways by which "a" and
"c" rows are related, its difficult to suggest a
solution.

Regards,
Mukul

--- Xiang Li <lix@xxxxxxx> wrote:

> 
> 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!?
Y! Messenger - Communicate in real time. Download now. 
http://messenger.yahoo.com

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.