[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Sorting Problem with Xml and Xsl


Subject: RE: [xsl] Sorting Problem with Xml and Xsl
From: cknell@xxxxxxxxxx
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


Current Thread
Keywords