|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Processing an element only if there are no better
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: 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








