3 votes

XSLT supprime les éléments inutiles

J'essaie d'écrire un code xslt qui vérifiera si l'élément de description existe ou non ; s'il existe, alors il montrera l'élément de description ; mais s'il n'existe pas, alors il ne devrait pas montrer l'élément de description ; mais mon code ci-dessous montre toujours l'élément bien qu'il n'y ait aucune valeur dedans ; comment pouvons-nous le coder de sorte qu'il ne montre pas l'élément de description s'il n'y a aucune description pour un service ?

  <?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:template match="Service">
     <xsl:element name="equipment">
      <xsl:if test="description !='' ">
          <xsl:value-of select="description" />
      </xsl:if>
      <xsl:if test="not(description)">
      </xsl:if>
     </xsl:element>
    </xsl:template>
   </xsl:stylesheet>

comme il y a un élément d'équipement vide qui est retourné, je veux qu'il retourne seulement les 2 premiers éléments d'équipement qui ne sont pas vides.

1voto

Madurika Welivita Points 870

La solution mise à jour est la suivante ; veuillez vérifier

  <xsl:template match="Services">
    <xsl:for-each select="Service">
      <xsl:if test="count(description) &gt; 0 and description!=''">
        <equipment>
          <xsl:value-of select="description"/>
        </equipment>
      </xsl:if>
    </xsl:for-each>

  </xsl:template>

</xsl:stylesheet>

0voto

hielsnoppe Points 1922

Est-ce que ça marche pour vous ?

<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- place <result /> as root to produce wellformed XML -->
<xsl:template match="/">
  <result><xsl:apply-templates /></result>
</xsl:template>

<!-- rewrite those <Service /> that have a <description /> -->
<xsl:template match="Service[./description]">
  <equipment><xsl:value-of select="description" /></equipment>
</xsl:template>

<!-- remove those who do not -->
<xsl:template match="Service[not(./description)]" />
</xsl:transform>

0voto

Shil Points 150
     <xsl:template match="/">
  <xsl:apply-templates select="//Service"/>
  </xsl:template>
<xsl:template match="Service">
      <xsl:if test="description !='' ">
           <xsl:element name="equipment">
          <xsl:value-of select="description" />
     </xsl:element>
      </xsl:if>
    </xsl:template>

o

 <xsl:template match="/">
  <xsl:apply-templates select="//Service"/>
  </xsl:template>
   <xsl:template match="Service">
      <xsl:if test="child::description[text()]">
       <xsl:element name="equipment">
          <xsl:value-of select="description" />
            </xsl:element>
      </xsl:if>
    </xsl:template>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X