Se débarrasser des lignes vides après la suppression de nœuds à l'aide de XSLT
Je suis à l'aide de XSLT pour faire très simple transformation d'un document XML. Je veux juste supprimer tous les nœuds d'élément avec un nom particulier.
Il arrive que dans mon document source de tous ces nœuds sont situés à la fin du document, mais après la transformation, bien que les nœuds ont disparu comme je l'ai prévu, il y a beaucoup de lignes vides à leur place.
C'est strictement une question d'esthétique depuis que j'ai accompli ce que je voulais avec la transformation, mais par curiosité: comment puis-je me débarrasser de ces lignes vides ?
C'est le fichier XSL j'ai utilisé pour la transformation (l'élément que j'ai voulu l'enlever est nommé "relations"):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="relation"/>
</xsl:stylesheet>
Vous devez vous connecter pour publier un commentaire.
La raison en est dans la white-space-seulement les nœuds de texte qui sont immédiats des frères et sœurs à l'supprimé les éléments.
Solution: il suffit d'ajouter cette instruction XSLT pour enlever tout le blanc de l'espace-seulement les nœuds de texte-avant même que la transformation commence:
Le résultat peut perdre de l'indentation -- si oui, ajouter ce:
La transformation complète devient:
lorsqu'il est appliqué sur ce document XML (aucune condition!):
Le voulait, résultat correct (pas de fuite d'espace blanc) est produit:
<xsl:template match="text()[preceding-sibling::*[1][self::relation or following-sibling::*[1][self::relation]]"/>