RE: [xsl] Sorting Problem with Xml and Xsl

Subject: RE: [xsl] Sorting Problem with Xml and Xsl
From: "Ram Shan" <hellodck@xxxxxxxxxxx>
Date: Mon, 12 Mar 2007 15:06:51 -0600
Thanks for the quick response. Please note that I am a newbie to xsl and just trying to get a feel of it. But, with the solution you posted, it sorts with in the worksheet nodes only. I want to sort all the <s:Data s:Type="String"></s:Data> elements text with in all the worksheets, so for example
my input file
-------------------
<?xml version='1.0'?>
<?mso-application progid='Excel.Sheet'?>
<s:Workbook xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:s="urn:schemas-microsoft-com:office:spreadsheet">
<s:Worksheet s:Name="Sample1">
<s:Table>
<s:Row>
<s:Cell>
<s:Data s:Type="String">RJTGOVBVHX</s:Data>
</s:Cell>
</s:Row>
<s:Row>
<s:Cell>
<s:Data s:Type="String">IEXGTQYSBQ</s:Data>
</s:Cell>
</s:Row>
</s:Table>
</s:Worksheet>
<s:Worksheet s:Name="Sample2">
<s:Table>
<s:Row>
<s:Cell>
<s:Data s:Type="String">WUGRDFHDTV</s:Data>
</s:Cell>
</s:Row>
<s:Row>
<s:Cell>
<s:Data s:Type="String">PQFWLWQYQW</s:Data>
</s:Cell>
</s:Row>
</s:Table>
</s:Worksheet>
</s:Workbook>


the output that I want to show is
--------------------------------------------
<?xml version='1.0'?>
<?mso-application progid='Excel.Sheet'?>
<s:Workbook xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:s="urn:schemas-microsoft-com:office:spreadsheet">
<s:Worksheet s:Name="Sample1">
<s:Table>
<s:Row>
<s:Cell>
<s:Data s:Type="String">IEXGTQYSBQ</s:Data>
</s:Cell>
</s:Row>
<s:Row>
<s:Cell>
<s:Data s:Type="String">PQFWLWQYQW</s:Data>
</s:Cell>
</s:Row>
</s:Table>
</s:Worksheet>
<s:Worksheet s:Name="Sample2">
<s:Table>
<s:Row>
<s:Cell>
<s:Data s:Type="String">RJTGOVBVHX</s:Data>
</s:Cell>
</s:Row>
<s:Row>
<s:Cell>
<s:Data s:Type="String">WUGRDFHDTV</s:Data>
</s:Cell>
</s:Row>
</s:Table>
</s:Worksheet>
</s:Workbook>



Thanks Ram


From: cknell@xxxxxxxxxx
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Sorting Problem with Xml and Xsl
Date: Mon, 12 Mar 2007 16:25:12 -0400

Your stylesheet doesn't match your input document. You left out several layers of nested elements.

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:s="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:strip-space elements="*" />
  <xsl:output method="xml" indent="yes" encoding="UTF-16" />

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

    <xsl:template match="s:Workbook">
      <s:Workbook xmlns:x="urn:schemas-microsoft-com:office:excel"
          xmlns:o="urn:schemas-microsoft-com:office:office"
          xmlns:s="urn:schemas-microsoft-com:office:spreadsheet">
        <xsl:apply-templates />
      </s:Workbook>
    </xsl:template>

    <xsl:template match="s:Worksheet">
      <s:Worksheet>
        <xsl:apply-templates />
      </s:Worksheet>
    </xsl:template>

    <xsl:template match="s:Table">
      <s:Table>
        <xsl:for-each select="s:Row">
          <xsl:sort select="s:Cell/s:Data" />
          <xsl:copy-of select="." />
        </xsl:for-each>
      </s:Table>
    </xsl:template>

</xsl:stylesheet>
--
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Ram Shan <hellodck@xxxxxxxxxxx>
Sent:     Mon, 12 Mar 2007 13:27:04 -0600
To:       xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  [xsl] Sorting Problem with Xml and Xsl

I can not get this sorting to work. any help is greatly appreciated. I am
using MSXml parser and c# to transform. Thanks
Here is Sample XML
-------------
<?xml-stylesheet  type="text/xsl" href="rowextrated2.xsl" ?>
<?mso-application progid='Excel.Sheet'?>
<s:Workbook xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:s="urn:schemas-microsoft-com:office:spreadsheet">
  <s:Worksheet s:Name="Sample1">
    <s:Table>
      <s:Row>
        <s:Cell>
          <s:Data s:Type="String">Maa</s:Data>
        </s:Cell>
      </s:Row>
      <s:Row>
        <s:Cell>
          <s:Data s:Type="String">Baa</s:Data>
        </s:Cell>
      </s:Row>
      <s:Row>
        <s:Cell>
          <s:Data s:Type="String">Aaa</s:Data>
        </s:Cell>
      </s:Row>
    </s:Table>
  </s:Worksheet>
  <s:Worksheet s:Name="Sample2">
    <s:Table>
      <s:Row>
        <s:Cell>
          <s:Data s:Type="String">Caa</s:Data>
        </s:Cell>
      </s:Row>
      <s:Row>
        <s:Cell>
          <s:Data s:Type="String">Qaa</s:Data>
        </s:Cell>
      </s:Row>
      <s:Row>
        <s:Cell>
          <s:Data s:Type="String">Zaa</s:Data>
        </s:Cell>
      </s:Row>
    </s:Table>
  </s:Worksheet>
</s:Workbook>


--------------My Xsl looks like this. But the problem is it does not take get me the sorted out . please check below <?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns:s="urn:schemas-microsoft-com:office:spreadsheet" version="1.0"> <xsl:output method="xml" indent="yes" encoding="utf-16"/> <xsl:template match="s:Workbook"> <xsl:copy> <xsl:apply-templates> <xsl:sort data-type="text" select="s:Cell/s:Data" case-order="lower-first" /> </xsl:apply-templates> </xsl:copy> </xsl:template>

  <xsl:template match="*">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>


---Desired output



<?xml-stylesheet type="text/xsl" href="rowextrated2.xsl" ?> <?mso-application progid='Excel.Sheet'?> <s:Workbook xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:s="urn:schemas-microsoft-com:office:spreadsheet"> <s:Worksheet s:Name="Sample1"> <s:Table> <s:Row> <s:Cell> <s:Data s:Type="String">Aaa</s:Data> </s:Cell> </s:Row> <s:Row> <s:Cell> <s:Data s:Type="String">Baa</s:Data> </s:Cell> </s:Row> <s:Row> <s:Cell> <s:Data s:Type="String">Caa</s:Data> </s:Cell> </s:Row> </s:Table> </s:Worksheet> <s:Worksheet s:Name="Sample2"> <s:Table> <s:Row> <s:Cell> <s:Data s:Type="String">Maa</s:Data> </s:Cell> </s:Row> <s:Row> <s:Cell> <s:Data s:Type="String">Qaa</s:Data> </s:Cell> </s:Row> <s:Row> <s:Cell> <s:Data s:Type="String">Zaa</s:Data> </s:Cell> </s:Row> </s:Table> </s:Worksheet> </s:Workbook>

_________________________________________________________________
Play Flexicon: the crossword game that feeds your brain. PLAY now for FREE. http://zone.msn.com/en/flexicon/default.htm?icid=flexicon_hmtagline



_________________________________________________________________
Find a local pizza place, movie theater, and more.then map the best route! http://maps.live.com/?icid=hmtag1&FORM=MGAC01


Current Thread