XML - Campos vacios en XML, no mostrar con XLST

 
Vista:

Campos vacios en XML, no mostrar con XLST

Publicado por Angel (1 intervención) el 14/11/2006 20:19:29
Mi problema es el siguiente, tengo una DTD con el siguiente elemento
<!ELEMENT Informatica (Programacion?)>

En el XML, puesto que es un elemento opcional no le introduzco ningun valor.
En el XLST tengo la siguiente linea que hace que se muestre el elemento:
<h3>Programacion: <xsl:value-of select='Capacidades/Informatica/Programacion' /> </h3>

El problema es que no se como hacer para que si el elemento no se encuentra en el XML, no escriba la palabra "Programacion:" ya que no contiene nada. Es decir, que omita esa linea del XSLT.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Omitir línea en XSLT si el elemento está vacío

Publicado por Alejandro (258 intervenciones) el 13/07/2023 22:41:43
Para omitir la línea en el XSLT si el elemento Programacion está vacío en el XML, puedes utilizar una condición en tu XSLT para verificar si el elemento tiene contenido antes de mostrarlo. A continuación, te muestro cómo puedes hacerlo:

1
2
3
4
5
<xsl:template match="/">
  <xsl:if test="Capacidades/Informatica/Programacion/text()">
    <h3>Programacion: <xsl:value-of select="Capacidades/Informatica/Programacion" /></h3>
  </xsl:if>
</xsl:template>

En el código anterior, utilizamos la función `text()` en la condición del `xsl:if` para verificar si el elemento Programacion tiene contenido. Si el elemento tiene contenido, se mostrará la línea `<h3>Programacion: ...</h3>`. Si el elemento está vacío, se omitirá esa línea en la salida del XSLT.

Es importante tener en cuenta que la condición `Capacidades/Informatica/Programacion/text()` verifica si el elemento tiene contenido de texto. Si el elemento Programacion tiene subelementos o atributos, deberás ajustar la condición en consecuencia para verificar esos nodos.

Con esta solución, la línea en el XSLT que muestra el elemento Programacion solo se incluirá si el elemento tiene contenido en el XML. Si el elemento está vacío, se omitirá la línea en la salida del XSLT.

Espero que esta solución te ayude a lograr el resultado deseado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar