[XSL] XML vers XML sans elements vides

XML vers XML sans elements vides [XSL] - Divers - Programmation

Marsh Posté le 21-11-2002 à 21:48:54    

Je veux transformer (copier le contenu) un XML vers un autre XML en supprimant les elements vides.
 
Fichier d'entree
<?xml version="1.0" encoding="UTF-8"?>
<Data>
  <Row>
    <Rank>1</Rank>
    <ID>142</ID>
    <Name></Name>
  </Row>
  <Row>
    <Rank>2</Rank>
    <ID>200</ID>
    <Name>David</Name>
  </Row>
  <Row>
    <Rank>2</Rank>
    <ID>200</ID>
    <Name/>
  </Row>
<Data>  
 
Fichier de sortie:
<?xml version="1.0" encoding="UTF-8"?>
<Data>
  <Row>
    <Rank>1</Rank>
    <ID>142</ID>
  </Row>
  <Row>
    <Rank>2</Rank>
    <ID>200</ID>
    <Name>David</Name>
  </Row>
  <Row>
    <Rank>2</Rank>
    <ID>200</ID>
  </Row>
<Data>  
 
 
Que dois-je mettre dans mon fichier XSL ?
Merci

Reply

Marsh Posté le 21-11-2002 à 21:48:54   

Reply

Marsh Posté le 22-11-2002 à 14:57:33    

up!!!

Reply

Marsh Posté le 22-11-2002 à 17:42:01    

Voici une solution possible
 
Mais il reste un probleme a resoudre, les attributs
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:user="userhtml">
 <xsl:output method="xml"/>
 
 <xsl:variable name="CR" select="string('
';)"/>
 
  <xsl:template match="*">
  <xsl:value-of select="$CR"/>
    <xsl:choose>
      <xsl:when test="count(*|text()[string-length(normalize-space(.))>0])">
        <xsl:copy>
          <xsl:apply-templates/>
        </xsl:copy>
      <xsl:value-of select="$CR"/>
      </xsl:when>
      <xsl:otherwise/>
    </xsl:choose>
  </xsl:template>
   
</xsl:stylesheet>    

Reply

Sujets relatifs:

Leave a Replay

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