Subject: [xsl] Re: Processing an element only if there are no better optio ns From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Thu, 22 May 2003 07:14:36 +0200 |
Use: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes"/> <xsl:param name="pPrefs"> <pref>Media Release</pref> <pref>Assessment</pref> <pref>Reaction</pref> <pref>Citation</pref> </xsl:param> <xsl:variable name="vPrefs" select="document('')/*/xsl:param[@name='pPrefs']"/> <xsl:template match="ProductGroup"> <xsl:for-each select="Product"> <xsl:sort select="count($vPrefs/pref[current()/@Type = .]/preceding-sibling::*)" data-type="number"/> <xsl:if test="position() = 1"> <xsl:copy-of select="."/> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet> When this is applied on the following source.xml: <ProductGroup> <Product Type="Assessment">Some Assessment</Product> <Product Type="Reaction">Some Reaction</Product> <Product Type="Media Release">Some Media Release</Product> </ProductGroup> the wanted result is produced: <Product Type="Media Release">Some Media Release</Product> ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL "Dustin, Dave" <Dave.Dustin@xxxxxxxxxx> wrote in message news:2124ED9D3EF87D40B223B489CC93A94D9CC554@xxxxxxxxxxxxxxxxxxxxx > Thanks Juergen, > > Problem is that Type1 is not what the actual value is. The possible values > are (in the order of preference) > > Media Release > Assessment > Reaction > Citation > > Problem is, the system that generates the XML will spit these out in a > random order, so I can't rely on the one I want to appear first, nor can I > sort them due to the text order. > > > Dave > > > -----Original Message----- > From: Zink, Juergen [mailto:Juergen.Zink@xxxxxxxxxxxxxxxxxxxx] > Sent: Thursday, 22 May 2003 4:09 p.m. > To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx' > Subject: AW: [xsl] Processing an element only if there are no better optio > ns > Importance: Low > > > Hi Dave, > > <snip> > > ><ProductGroup> > > <Product Type="Type1">[...]</Product> > > <Product Type="Type2">[...]</Product> > > <Product Type="Type3">[...]</Product> > ></ProductGroup> > > > >What I need to do is only extract the contents of _1_ Product in an > >order > of > >preference. > > > >i.e. If there is a Type1 product, then don't output Type2 or Type3. > >However, if there is no Type1, then output Type2, but not Type3 if it's > >present. > > Inside a template use: select="/ProductGroup/Product[1]". > Selecting the first product in document order. > > Please, > > Juergen > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Processing an element onl, Dustin, Dave | Thread | [xsl] Header footer on every page.., krishnas |
[xsl] Re: Processing an element onl, Dimitre Novatchev | Date | Re: [xsl] [ANNOUNCE] alexandra-0.01, S Woodside |
Month |