Je suis en train de supprimer le « Cacher ces données » de ce code XML qui est procédé avec le type de qualification = « de NOVIEW »texte Remplacement après noeud
<element version="Local">
<qualifier name="Public" type="View" />
Good to go
</element>
<element version="Local">
<qualifier name="Public" type="noView" />
Hide this data
</element>
J'utilise cette XSL
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="qualifier">
<xsl:call-template name="replace-noview" />
</xsl:template>
<xsl:template name="replace-noview">
<xsl:param name="text" select="@type"/>
<xsl:choose>
<xsl:when test="contains($text, 'noView')">
<xsl:copy-of select="."/>
<xsl:text>DELETED</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
La sortie je reçois est
<element identifier="ContactName" version="Local">
<qualifier name="Public" type="View" />
Good to go
</element>
<element identifier="ContactName" version="Local">
<qualifier name="Public" type="noView" />DELETED
Hide this data
</element>
Je suis l'attribut "noView" et je peux ajouter le texte "DELETED". Cependant, je dois supprimer le texte "Cacher ces données".
La sortie Je voudrais est
<element identifier="ContactName" version="Local">
<qualifier name="Public" type="View" />
Good to go
</element>
<element identifier="ContactName" version="Local">
<qualifier name="Public" type="noView" />
DELETED
</element>
Bonne question! (+1). Voir ma réponse pour une solution compacte. Notez l'utilisation de la règle d'identité et sa substitution uniquement pour les nœuds de texte nécessitant un traitement spécial. L'utilisation et la substitution de la règle d'identité est l'un des modèles de conception XSLT les plus fondamentaux. –