Cambiar valores de nodos XSLT

15/03/2005 - 09:55 por Ibar | Informe spam
Hola...

Tengo un fichero XML donde tengo unos valores el los nodos que son 1s y
0s.Ejemplo:

<Raiz>
<Hijo>
<nodo1>1</nodo1>
<nodo2>0</nodo2>
</Hijo>
<Raiz>

Me gustaria aplicarle una trasformada para cambiar los valores de los nodos,
si encuentra un 1, que ponga "encontrado" y si encuentra un 0 que ponga "no
encontrado".

<Raiz>
<Hijo>
<nodo1>encontrado</nodo1>
<nodo2>no encontrado</nodo2>
</Hijo>
<Raiz>

El problema esta en que no consigo cambiar los valores de los nodos. La
etiqueta de los nodos es variable por lo que no puedo crear nodos nuevos,
necesito utilizar los nodos del xml original pero cambiandoles el valor.

Espero que me ayudeis.

Muchas gracias de antemano.
 

Leer las respuestas

#1 sio2
20/03/2005 - 12:44 | Informe spam
Siento si es un poco tarde: acabo de leerlo.

Yo lo haría así:

<xsl:template match="*|@*|text()">
<xsl:copy>
<xsl:apply-templates match="*|@*|text()" />
</xsl:copy>
</xsl:template>

<xsl:template match="hijo/*/text()">
<xsl:choose>
<xsl:when test=" . = '0'">
<xsl:text>No encontrado</xsl:text>
</xsl:when>
<xsl:when test=" . = '1'">
<xsl:text>Encontrado</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:message>
<xsl:text>Valor inexperado en </xsl:text>
<xsl:value-of select="local-name(..)" />
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

Espero que aún te sirva de ayuda.

Preguntas similares