Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

499
Vistas
Obtener valor (XPath) usando la variable XSL - xslt

Al intentar analizar el siguiente xml ,

 <root> <SelectValue>One</SelectValue> <!-- Tends to Vary --> <SubRoot> <!-- Iterate elements inside it using [ SelectValue] --> <One>One</One> <Two>Two</Two> <Three>Three</Three> </SubRoot> </root>

con debajo de xsl ,

 <xsl:template match="/root"> <xsl:variable name="columns" select="SelectValue"/> <xsl:for-each select="SubRoot"> --> <tr> <td> <xsl:value-of select="SubRoot/@*[local-name()=$columns]"/> </td> </tr> </xsl:for-each>

Recupera html-tags vacías mientras espero algo como a continuación,

 <table> <thead> <th>One</th> </thead> <tbody> <tr> <td>one</td> </tr> <tbody> </table>

Estoy tratando de pasar el valor dentro <SelectValue> para obtener los nodos dentro <SubRoot>

¿Alguna idea aquí?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No reconozco el mensaje de error que cita (ni siquiera parece estar en inglés), pero recibo un error cuando intento ejecutar su código. La razón es que su nombre de variable no es válido; necesitas cambiar:

 <xsl:variable name="$columns" select="..."/>

para:

 <xsl:variable name="columns" select="..."/>

Use el prefijo $ cuando se refiera a la variable, no cuando la defina.


Tenga en cuenta también que una expresión XPath que comienza con / es una ruta absoluta , que comienza en el nodo raíz. Por lo tanto, ninguna de sus expresiones de select , con la excepción de /root , seleccionará nada. Supongo que estás tratando de hacer algo como:

 <xsl:template match="/root"> <xsl:variable name="columns" select="SelectValue"/> <tr> <td> <xsl:value-of select="SubRoot/*[local-name()=$columns]"/> </td> </tr> </xsl:template>

que dado su ejemplo de entrada devolverá:

 <tr> <td>One</td> </tr>
over 4 years ago · Santiago Trujillo Denunciar

0

Dentro de xsl:for-each select="SubRoot", la SubRaíz es el nodo de contexto, por lo que no debe seleccionar una SubRaíz adicional. Entonces quieres

 <xsl:for-each select="SubRoot"> <tr> <td> <xsl:value-of select="@*[local-name()=$columns]"/> </td> </tr>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda