xsl-list
[Top] [All Lists]

RE: <xsl:sort>

2005-05-07 01:07:01
Thanks for the reply, George.

I gave your suggestion a try, but it still does not affect the sort order of
<product> elements. In the resultant document, they continue to appear in
the orginal XML document order.


Respectfully,

ASP

-----Original Message-----
From: George Cristian Bina [mailto:george(_at_)sync(_dot_)ro]
Sent: Saturday, May 07, 2005 4:13 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] <xsl:sort>


Hi,

You select only one node (the current node that is a product element)
and apply templates on it sorting this set (of one node) according with
your criteria.

Something like below may behave as you expect:

<xsl:template match="document">
     <xsl:for-each select="child::node()">
         <!-- whatever processing you want to do -->
     </xsl:for-each>
     <xsl:apply-templates select="product">
         <xsl:sort select="category" data-type="number" order="descending"/>
     </xsl:apply-templates>
</xsl:template>

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


aspsa wrote:
Hi, folks.

I have an XML document which structure is the following:

<document>
  <header>
  <paragraph>
  <subheader>
  <paragraph>
  .
  .
  .
  <product>
    <partname>
    <category>
    .
    .
    .
  </product>
  <product>
    <partname>
    <category>
    .
    .
    .
  </product>
  .
  .
  .
</document>

In a template that matches on "document", I have the following:

<xsl:template match="document">
  <xsl:for-each select="child::node()">
    // etc...
  </xsl:for-each>
</xsl:template>

The XSLT stylesheet works fine, but now I need to sort the "product"
elements based upon the "category" element and in descending order. The
category content is numeric.

How would I execute this from within the "document" template?

Here's what I've tried.

<xsl:template match="document">
  <xsl:for-each select="child::node()">
    <xsl:if test="product">
      <xsl:apply-templates select=".">
        <xsl:sort select="category" data-type="number" order="descending"
/>
      </xsl:apply-templates>
    </xsl:if>
  </xsl:for-each>
</xsl:template>

Where am I going wrong? Thanks for your feedback.


Respectfully,

ASP



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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