Acceso a subnodos en XSL
Publicado por Maria Rosa (3 intervenciones) el 04/05/2006 09:36:37
Hola a todos tengo un XML que tiene la siguiente estrucutra(generado por el portal Liferay):
<root>
<dynamic-element name=\'MiSeleccion\' type=\'list\'>
<dynamic-element name=\'o1\' type=\'Mi primera opcion\'> </dynamic-element>
<dynamic-element name=\'o2\' type=\'Mi segunda opción\'></dynamic-element>
</dynamic-element>
<dynamic-element name=\'MiTexto\' type=\'text\'>
<dynamic-element name=\'MiSegundoTexto\' type=\'text\'></dynamic-element>
</dynamic-element>
<dynamic-element name=\'MiHtml\' type=\'text_area\'></dynamic-element>
<dynamic-element name=\'MiImagen\' type=\'image\'></dynamic-element>
</root>
quiero en a través del XSL también me aparezca en el navegardor MiSegundoTexo que está dentro de MiTexo, he hecho lo siguiente pero no me aparece:
<?xml version=\"1.0\"?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">
<xsl:output method=\"html\" omit-xml-declaration=\"yes\"/>
<xsl:variable name=\"imagen\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"root/dynamic-element[@name=\'MiImagen\']/dynamic-content\"/>
</xsl:variable>
<xsl:variable name=\"texto\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"root/dynamic-element[@name=\'MiHtml\']/dynamic-content\"/>
</xsl:variable>
<xsl:variable name=\"segundotexto\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"root/dynamic-element[@name=\'MiTexto\']/dynamic-element[@name=\'MiSegundoTexto\']/dynamic-content\"/>
</xsl:variable>
<xsl:template match=\"/\">
<xsl:call-template name=\"common-content\"/>
</xsl:template>
<xsl:template name=\"common-content\">
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td>
<xsl:value-of select=\"root/dynamic-element[@name=\'MiTexto\']/dynamic-content\"/>
</td>
<td>
<xsl:value-of disable-output-escaping=\"yes\" select=\"$segundotexto\"/>
</td>
</tr>
<tr>
<td>
<xsl:value-of disable-output-escaping=\"yes\" select=\"$texto\"/>
</td>
</tr>
<tr>
<td>
<xsl:if test=\"$imagen != \'\'\">
<img>
<xsl:attribute name=\"src\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"$imagen\"/>
</xsl:attribute>
</img>
</xsl:if>
</td>
</tr>
<tr>
<td>
<xsl:value-of select=\"root/dynamic-element[@name=\'MiSeleccion\']/dynamic-content\"/>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
Alguien puede ayudarme?.
Muchas gracias.
<root>
<dynamic-element name=\'MiSeleccion\' type=\'list\'>
<dynamic-element name=\'o1\' type=\'Mi primera opcion\'> </dynamic-element>
<dynamic-element name=\'o2\' type=\'Mi segunda opción\'></dynamic-element>
</dynamic-element>
<dynamic-element name=\'MiTexto\' type=\'text\'>
<dynamic-element name=\'MiSegundoTexto\' type=\'text\'></dynamic-element>
</dynamic-element>
<dynamic-element name=\'MiHtml\' type=\'text_area\'></dynamic-element>
<dynamic-element name=\'MiImagen\' type=\'image\'></dynamic-element>
</root>
quiero en a través del XSL también me aparezca en el navegardor MiSegundoTexo que está dentro de MiTexo, he hecho lo siguiente pero no me aparece:
<?xml version=\"1.0\"?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">
<xsl:output method=\"html\" omit-xml-declaration=\"yes\"/>
<xsl:variable name=\"imagen\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"root/dynamic-element[@name=\'MiImagen\']/dynamic-content\"/>
</xsl:variable>
<xsl:variable name=\"texto\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"root/dynamic-element[@name=\'MiHtml\']/dynamic-content\"/>
</xsl:variable>
<xsl:variable name=\"segundotexto\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"root/dynamic-element[@name=\'MiTexto\']/dynamic-element[@name=\'MiSegundoTexto\']/dynamic-content\"/>
</xsl:variable>
<xsl:template match=\"/\">
<xsl:call-template name=\"common-content\"/>
</xsl:template>
<xsl:template name=\"common-content\">
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td>
<xsl:value-of select=\"root/dynamic-element[@name=\'MiTexto\']/dynamic-content\"/>
</td>
<td>
<xsl:value-of disable-output-escaping=\"yes\" select=\"$segundotexto\"/>
</td>
</tr>
<tr>
<td>
<xsl:value-of disable-output-escaping=\"yes\" select=\"$texto\"/>
</td>
</tr>
<tr>
<td>
<xsl:if test=\"$imagen != \'\'\">
<img>
<xsl:attribute name=\"src\">
<xsl:value-of disable-output-escaping=\"yes\" select=\"$imagen\"/>
</xsl:attribute>
</img>
</xsl:if>
</td>
</tr>
<tr>
<td>
<xsl:value-of select=\"root/dynamic-element[@name=\'MiSeleccion\']/dynamic-content\"/>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
Alguien puede ayudarme?.
Muchas gracias.
Valora esta pregunta


0