xsl-list
[Top] [All Lists]

Re: Processing an element only if there are no better options

2003-05-21 21:43:33
Use:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:output omit-xml-declaration="yes"/>
  <xsl:template match="ProductGroup">
    <xsl:for-each select="Product">
      <xsl:sort select="substring-after(@Type, 'Type')"
                data-type="number"/>
      <xsl:if test="position() = 1">
        <xsl:copy-of select="."/>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

When the above transformation is applied on this source.xml:

<ProductGroup>
  <Product Type="Type3">[...]</Product>
  <Product Type="Type1">[...]</Product>
  <Product Type="Type2">[...]</Product>
</ProductGroup>

the wanted result is produced:

<Product Type="Type1">[...]</Product>



=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL

"Dustin, Dave" <Dave(_dot_)Dustin(_at_)adis(_dot_)co(_dot_)nz> wrote in message
news:2124ED9D3EF87D40B223B489CC93A94D9CC550(_at_)aionex1(_dot_)adis(_dot_)co(_dot_)nz(_dot_)(_dot_)(_dot_)
Sorry for the vague title, but I don't know how I could word the problem
is
a couple of words.

Imagine a couple of dataset like these:

[doc #1]
<ProductGroup>
<Product Type="Type1">[...]</Product>
<Product Type="Type2">[...]</Product>
<Product Type="Type3">[...]</Product>
</ProductGroup>
[/doc #1]


[doc #2]
<ProductGroup>
<Product Type="Type2">[...]</Product>
</ProductGroup>
[/doc #2]


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.


Any help would be greatly appreciated.

Thanks


Dave

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list






 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>