[xsl] Hi ... brand new to list ... and of course .. I need help ... RE xsl:sort

Subject: [xsl] Hi ... brand new to list ... and of course .. I need help ... RE xsl:sort
From: David TROGDON <David.TROGDON@xxxxxxxxxxxxxxxxx>
Date: Tue, 22 Jul 2003 13:48:42 -0400
My XML file looks like this ... except with a few hundred more entry's



<?xml version="1.0" encoding="UTF-8"?>
<tagdiff startTag="DEV-030703-00E" endTag="DEV-030707-00E">
<entry>
            <file>

<name>na/biomerieux/brns/notification/EmailNotification.java</name>
                  <revision>1.28</revision>
                  <prevrevision>1.27</prevrevision>
            </file>
      </entry>
<entry>
            <file>

<name>na/biomerieux/brns/notification/Finisher.java</name>
                  <revision>1.26</revision>
                  <prevrevision>1.25</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>na/biomerieux/brns/notification/Sender.java</name>
                  <revision>1.25</revision>
                  <prevrevision>1.24</prevrevision>
            </file>
      </entry>
<entry>
            <file>

<name>na/biomerieux/brns/notification/TC_EmailErrorNotification.java</name>
                  <revision>1.5</revision>
                  <prevrevision>1.4</prevrevision>
            </file>
      </entry>
<entry>
            <file>

<name>na/biomerieux/brns/notification/TC_EmailSender.java</name>
                  <revision>1.4</revision>
                  <prevrevision>1.3</prevrevision>
            </file>
      </entry>
<entry>
            <file>

<name>na/biomerieux/brns/notification/TC_FaxErrorNotification.java</name>
                  <revision>1.6</revision>
                  <prevrevision>1.5</prevrevision>
            </file>
      </entry>
<entry>
            <file>

<name>na/biomerieux/brns/notification/TC_Finisher.java</name>
                  <revision>1.29</revision>
                  <prevrevision>1.28</prevrevision>
            </file>
      </entry>
<entry>
            <file>

<name>na/biomerieux/brns/notification/TC_NotificationEventLogger.java</name>
                  <revision>1.4</revision>
                  <prevrevision>1.3</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>inetsoft/report/Common.java</name>
                  <revision>1.2</revision>
                  <prevrevision>1.1</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>inetsoft/report/CompositeLens.java</name>
                  <revision>1.2</revision>
                  <prevrevision>1.1</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>inetsoft/report/CompositeSheet.java</name>
                  <revision>1.2</revision>
                  <prevrevision>1.1</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>inetsoft/report/Context.java</name>
                  <revision>1.2</revision>
                  <prevrevision>1.1</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>inetsoft/report/EmptyPaintable.java</name>
                  <revision>1.2</revision>
                  <prevrevision>1.1</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>inetsoft/report/FixedContainer.java</name>
                  <revision>1.2</revision>
                  <prevrevision>1.1</prevrevision>
            </file>
      </entry>
<entry>
            <file>
                  <name>inetsoft/report/HttpPrinter.java</name>
                  <revision>1.2</revision>
                  <prevrevision>1.1</prevrevision>
            </file>
      </entry>

</tagdiff>



My XSLT style sheet is as follows ..........



<!-- a stylesheet to display changelogs ala netbeans -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version
="1.0">
      <xsl:param name="title"/>
      <xsl:output method="text"/>
      <xsl:template match="*">
            <xsl:copy>
                  <xsl:copy-of select="attribute::*[. != '']"/>
                  <xsl:apply-templates/>
            </xsl:copy>
      </xsl:template>
      <xsl:variable name="newline">
            <xsl:text>
</xsl:text>
      </xsl:variable>


      <xsl:template match="tagdiff">
            <xsl:value-of select="$title"/>
            Differences between <xsl:value-of select="@startTag"/>
            <xsl:value-of select="@startDate"/> and <xsl:value-of select="
@endTag"/>
            <xsl:value-of select="@endDate"/>
            <xsl:value-of select="$newline"/>

            <xsl:call-template name="show-entries">
                  <xsl:with-param name="title">New Files</xsl:with-param>
                  <xsl:with-param name="entries" select
=".//entry[file/revision][not(file/prevrevision)]"/>
            </xsl:call-template>

            <xsl:call-template name="show-entries">
                  <xsl:with-param name="title">Modified
Files</xsl:with-param>
                  <xsl:with-param name="entries" select
=".//entry[file/revision][file/prevrevision]"/>
            </xsl:call-template>

            <xsl:call-template name="show-entries">
                  <xsl:with-param name="title">Removed
Files</xsl:with-param>
                  <xsl:with-param name="entries" select
=".//entry[not(file/revision)][not(file/prevrevision)]"/>
            </xsl:call-template>
      </xsl:template>

      <xsl:template name="show-entries">
            <xsl:param name="title"/>
            <xsl:param name="entries"/>
            <xsl:value-of select="$newline"/>
            <xsl:value-of select="$title"/>  -  <xsl:value-of select="count
($entries)"/> Entries
                  <xsl:value-of select="$newline"/>

                  <xsl:apply-templates select="$entries"/>
                  <xsl:value-of select="$newline"/>

      </xsl:template>

      <xsl:template match="entry">
            <xsl:apply-templates select="file"/>
      </xsl:template>

      <xsl:template match="file">
            <xsl:value-of select="name"/>
            <xsl:if test="string-length(prevrevision) > 0 or
string-length(revision) > 0">
                  <xsl:text/>
            </xsl:if>
            <xsl:if test="string-length(prevrevision) = 0 and
string-length(revision) = 0"/>
            <xsl:value-of select="$newline"/>
      </xsl:template>



</xsl:stylesheet>



and produces a reasonable output similar to:


            Differences between DEV-030703-00E and DEV-030707-00E

New Files  -  2 Entries

.cvsignore
genericWindows.txt


Modified Files  -  435 Entries

na/biomerieux/brns/notification/EmailNotification.java
na/biomerieux/brns/notification/Finisher.java
na/biomerieux/brns/notification/Sender.java
na/biomerieux/brns/notification/TC_EmailErrorNotification.java
na/biomerieux/brns/notification/TC_EmailSender.java
na/biomerieux/brns/notification/TC_FaxErrorNotification.java
na/biomerieux/brns/notification/TC_Finisher.java
na/biomerieux/brns/notification/TC_NotificationEventLogger.java
inetsoft/report/Common.java
inetsoft/report/CompositeLens.java
inetsoft/report/CompositeSheet.java
inetsoft/report/Context.java
inetsoft/report/EmptyPaintable.java
inetsoft/report/FixedContainer.java
inetsoft/report/HttpPrinter.java
inetsoft/report/PDFPrinter.java
inetsoft/report/PSPrinter.java
inetsoft/report/PageArea.java
inetsoft/report/Painter.java
inetsoft/report/Presenter.java
inetsoft/report/PreviewGraphics.java
inetsoft/report/PreviewPage.java
inetsoft/report/PreviewPane.java
inetsoft/report/PreviewView.java


Removed Files  -  4 Entries

GenericPropertiesInsideVA.txt
GenericPropertiesOutsideVA.txt
README.txt
generic.txt



The problem I have is trying to implement the xsl:sort command so that each
section, New Files, Modified Files and Removed Files are sorted by Alpha
.....

I tried almost every concievable structure I can think of ... I eaither
baffle the parser, fail to sort, or suceed at sorting but destroy the
format.


If someone has a solution ... I would apprecaite it very much.

Thanks

David T.









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


Current Thread