Tri de valeur [resolu. solution inside]

Tri de valeur [resolu. solution inside] - XML/XSL - Programmation

Marsh Posté le 01-07-2003 à 17:51:55    

Salut a tous.
 
Comment fait on un count, un max ou un order by en xpath a partir d'un selectSingleNode() ou d'un selectNodes() en XMLDOM?
 
Merci d'avance
 
PS: si vous avez un bon site la dessus je suis preneur


Message édité par da_s_monk le 09-07-2003 à 18:53:41
Reply

Marsh Posté le 01-07-2003 à 17:51:55   

Reply

Marsh Posté le 01-07-2003 à 19:41:54    

Tu pourrais détailler ton problème plus précisément STP? (Bout de XML + but exact)

Reply

Marsh Posté le 01-07-2003 à 19:51:56    

Voilà un exemple de xml :
 

Code :
  1. <TREE>
  2.   <M ID="1"/>
  3.   <T ID="2">
  4.     <A ID="3"/>
  5.     <A ID="5"/>
  6.   </T>
  7.   <M ID="4"/>
  8. </TREE>


 
ici, "ID" est un attribut à la con.
 
J'ai besoin de faire un select max(ID) quelque soit le niveau du node. Le résultat sera ici 5.
 
Et si au passage, je pouvais faire un petit order by des familles, ça serait pas mal non plus. ;)

Reply

Marsh Posté le 03-07-2003 à 15:45:44    

Les données XML:  


<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
  <tree>
    <m id="1"/>
    <t id="2">
      <a id="3"/>
      <a id="5"/>
    </t>
    <m id="4"/>
  </tree>
<!-- eof -->


 
Le stylesheet XSLT :


<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
<!-- general settings -->
  <xsl:output method="text" omit-xml-declaration="no" encoding="ISO-8859-1"/>
 
<!-- parameters -->
 
<!-- global variables -->
 
<!-- transformations -->
 
  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>
 
  <xsl:template match="tree">
    <xsl:for-each select="//*[@id]">
      <xsl:sort select="@id" data-type="number"/>
 
      <xsl:value-of select="@id"/>
      <xsl:choose>
        <xsl:when test="position() = 1">
          <xsl:text> = Minimum()</xsl:text>
        </xsl:when>
        <xsl:when test="position() = last()">
          <xsl:text> = Maximum()</xsl:text>
        </xsl:when>
      </xsl:choose>
      <xsl:text>
</xsl:text>
    </xsl:for-each>
  </xsl:template>
 
</xsl:stylesheet>
<!-- eof -->


 
et le résultat ( MSXML 3.0) :


1 = Minimum()
2
3
4
5 = Maximum()


 
Tu trouveras un article à ce sujet à l'adresse  
http://www.xml.com/pub/a/2002/08/07/ducharme.html
 
A+


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed