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

RE: Outputing a node whose value appears only once

Subject: RE: Outputing a node whose value appears only once
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Mon, 18 Jul 2005 22:59:45 -0700 (PDT)
xslt run only once
Hi Jonathan,
  I think you need this stylesheet! As Mike suggested
we need to use Muenchian grouping technique..

<?xml version="1.0"?> 
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
 
<xsl:output method="text" /> 

<xsl:key name="by-elem" match="a/* | c/*" use="." />
 
<xsl:template match="/root">
  <xsl:for-each select="(a/* | c/*)[generate-id() =
generate-id(key('by-elem',.)[1])][count(key('by-elem',.))
= 1]">
     <xsl:value-of select="."
/><xsl:text>&#xa;</xsl:text>
  </xsl:for-each>
</xsl:template>
 
</xsl:stylesheet>

Regards,
Mukul

--- Jonathan Marenus <jonathanmarenus@xxxxxxxxx>
wrote:

> 
> Ok, I kind of got your point thus far. In my
> example,
> I had two parents, 'a' and 'c'.  How would I go
> about
> outputing what is in 'a' and not 'c' separately from
> outputing what is in 'c' but not 'a'.  In other
> words,
> I want to run my XSL to account for both the unique
> values in 'a' as well as the unique values in 'c'. 
> 
> --- Michael Kay <mike@xxxxxxxxxxxx> wrote:
> 
> > Read about Muenchian grouping at
> > http://www.jenitennison.com/xslt/grouping.
> > You can use the same idea to test whether a value
> is
> > unique within the file
> > (a member of a group of one) by defining the
> > grouping key
> > 
> > <xsl:key name="gk" match="b|bb|bbb" use="."/>
> > 
> > and testing a node
> > 
> > <xsl:template match="b|bb|bbb">
> >   <xsl:if test="not(key('gk', .)[2])">
> >     The value is unique
> >   </xsl:if>
> > </xsl:template>
> > 
> > Michael Kay
> > http://www.saxonica.com/
> >  
> > 
> > > -----Original Message-----
> > > From: Jonathan Marenus
> > [mailto:jonathanmarenus@xxxxxxxxx] 
> > > Sent: 18 July 2005 23:35
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject:  Outputing a node whose value
> > appears only once
> > > 
> > > 
> > > What I would like to do now is output a value
> that
> > > appears only once throughout the XML file. For
> > > example, if I have:
> > > 
> > > <a>
> > >    <b>value1</b>
> > >    <bb>value2</bb>
> > >    <bbb>value3</bbb>
> > > </a>
> > > <c>
> > >    <b>value1</b>
> > >    <bb>value2</bb>
> > >    <bbb>value4</bbb>
> > > </c>
> > > 
> > > From the point of view of 'a', I would want to
> > output
> > > "value3" because 'a' contains it but 'c' does
> not.
> > 
> > > This is assuming that the above is the entire
> > file.  I
> > > also need to output a sibling of the node which
> > does
> > > not appear more than once (like the value of a/b
> > or
> > > a/bbb).  It is also assumed that multiple
> > instances of
> > > the same value will have different parents. 
> This
> > is
> > > shown in the example above.
> > > 
> > > Thanks for the help.
> > > 
> > > Jonathan


		
____________________________________________________
Start your day with Yahoo! - make it your home page 
http://www.yahoo.com/r/hs 

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.