XSL - duda con documentos XHTML

   
Vista:

duda con documentos XHTML

Publicado por OscaRo (4 intervenciones) el 08/10/2008 17:32:55
Saludos
Mi duda o dudas son las siguientes:

he estado leyendo documentacion de XHTML, pero hay algo que muchos no dicen. y no encuentro como debe ser.......

1.- como debe llamarse el archivo XHTML, el archivo debe llamarse por ejemplo "pagina.xhtml" o "pagina.html"

Si es html, ¿ basta con indicar en el doctype que el documento es un xhtml, del tipo strict o transitional (por ejemplo ) para que se interprete como tal e incluir la cabecera <?xml version="1.0"...... ?> ?

2.- El documento XHTML, ¿ quien lo interpreta ?, ¿ el servidor o el navegador web. ?

3.- Como debo declarar que mi documento xhtml sufrira una transformacion usando XSLT ?
porque no me ha funcionado lo que he hecho..... pues mi documento no se transforma....

Si tienen un ejemplo sencillo de una transformacion xhtml les estoy muy agradecido.......

les pongo un ejemplo. de lo que estoy haciendo (una practica).

esta es la cabecera que estoy usando en mi documento xhtml.....
Gracias de antemano......

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<?xml-stylesheet type="text/xsl" href="transforma.xsl" ?>

<html xmlns="http://www.w3.org/1999/xhtml">

.........resto del xhtml........


y a continuacion el xslt....

?xml version="1.0" encoding="utf-8" ?>

<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method="html" version="4.0" />

<xsl:template match="/html">
<html>
<xsl:call-template name="encabezado" />
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>

<xsl:template match="head" name="encabezado">
<xsl:copy />
<meta http-equiv="keywords" content="palabras clave" />
</xsl:template>

<xsl:template match="p">
<xsl:copy >
<xsl:text> parrafo </xsl:text>
</xsl:copy>
<xsl:if test="position()>2">
</xsl:if>
</xsl:template>

</xsl:stylesheet>
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

RE:duda con documentos XHTML

Publicado por Mukuykak (8 intervenciones) el 12/10/2008 09:45:38
Saludos, Oscaro.

Resulta que lo que tú realizas en realidad es un documento HTML estricto, diseñado de tal modo que cumpla con algunas características de XML, como por ejemplo el cierre correcto y ordenado de tags, valores de atributos entre comillas, cierre de etiquetas abiertas como <img />, <br />, <hr />, <embed />, entre otras reglas. Esto no quiere decir que en realidad trabajes con XML, si no que haces compatible y bien formado un archivo HTML. Además, para este archivo XHTML, es preciso usar hojas de estilo en cascada (.CSS) en lugar del .XSL.
Para diseñar páginas web con XML y XSL, deberás usar correctamente el xml como lo que debe ser: un archivo con información del contenido (semejante a una base de datos); siendo que la estructura de la página se encontrará única y exclusivamente en el archivo .XSL.
En el foro de XML dejé unos ejemplos de cómo usar xml/xsl para diseño web.
Los encontrarás bajo el post "se puede utilizar xml para diseñar paginas? ", el cuál fue iniciado por "black_flowers". Actualmente se encuentra en la página 5, pero puedes hallarla en este link:

http://www.lawebdelprogramador.com/news/mostrar_new.php?id=124&texto=XML&n1=429789&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

No dejé muchos comentarios porque soy malo explicando, pero si estudias cada archivo le hallarás fácilmente el modo.
Espero te sea útil, al igual que a todos aquellos que lean este post.
Buen día.
=0)
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

RE:duda con documentos XHTML

Publicado por OsCarO (4 intervenciones) el 16/10/2008 01:24:12
Muchas gracias por tus aportaciones me sirvieron bastante.

pero ahora tengo estas dudas..

tengo mi xml


<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="simple.xsl" type="text/xsl" ?>
<?xml-stylesheet href="simple.css" type="text/css" ?>

<details>
<title> titulo X </title>
<table>
<row>
<al_telef> 445566774333 </al_telef>
<poblacion>CANCUN Q RO</poblacion>
<llamada>2008-08-11</llamada>
<inicio>13:26:18</inicio>
<duracion>2.0</duracion>
<importe>0.0</importe>
</row>

<row>
<al_telef> 778899551122 </al_telef>
<poblacion>CANCUN Q RO</poblacion>
<llamada>2008-08-28</llamada>
<inicio>13:05:04</inicio>
<duracion>1.0</duracion>
<importe>0.0</importe>
</row>

</details>


Como seria el xls para saber si estoy en el nodo "al_telef" agregarle un estilo
pero si es un telefono con un valor determinado tenga otro estilo. por ejemplo otro color de letra..

ya se hacer los xls pero no encuentro hacer lo que te comento
cualquier ayuda

gracias de antemano.
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

RE:duda con documentos XHTML

Publicado por Mukuykak (1 intervención) el 17/10/2008 06:33:36
Saludos, Oscaro.

Mira, para poder realizar lo que deseas debes saber que tu archivo xml está incompleto, así que habrá qué hacerle algunas modificaciones. Me tomé el atrevimiento de hacerlas por mi cuenta. Primero te pego el archivo XML. Lo dejé con el mismo nombre que tú le habías dado.

---------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="simple.xsl"?>
<details>
<titulo>Título X</titulo>
<tabla>
<row>
<al_telef valor="Número" id="1">445566774333</al_telef>
<poblacion valor="Población">CANCUN Q. RO.</poblacion>
<llamada valor="Fec. Llamada">2008-08-11</llamada>
<inicio valor="Inicio Llamada">13:26:18</inicio>
<duracion valor="Duración">2.0</duracion>
<importe valor="Importe">0.0</importe>
</row>
<row>
<al_telef valor="Número" id="2">778899551122</al_telef>
<poblacion valor="Población">CANCUN Q. RO.</poblacion>
<llamada valor="Fec. Llamada">2008-08-28</llamada>
<inicio valor="Inicio Llamada">13:05:04</inicio>
<duracion valor="Duración">1.0</duracion>
<importe valor="Importe">0.0</importe>
</row>
</tabla>
</details>

----------------------------------------------------------------------------------------------------------------

Como verás, le agregué atributos a los nodos, esto con el fin de poder darle una interpretación más clara dentro de las tablas, así como para poder realizar unas operaciones para asignar los cambios de estilos a las fuentes. Los estilos se los puse únicamente en éste ejemplo al nodo "al_telef". Cuando copies y pegues el código del XSL podrás estudiarlo y verás cómo se agregan dinámicamente los estilos..
Te pego el XSL. Lo llamé igual que como lo habías llamado "simple.xsl".

----------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- Aquí iniciamos los estilos -->
<xsl:variable name="azurro">color : blue; font-weight : bold;</xsl:variable>
<xsl:variable name="rosso">color : #ff0000; font-weight : bold;</xsl:variable>
<xsl:variable name="punk">color : green;</xsl:variable>
<!-- Aquí terminamos los estilos -->

<xsl:template match="details">

<html>
<head><title><xsl:value-of select="titulo"/></title></head>

<body style="{$punk}">
<table border="2" cellspacing="5" cellpadding="5">
<xsl:apply-templates select="tabla"/>
</table>
</body>
</html>

</xsl:template>

<xsl:template match="tabla">

<xsl:for-each select="row">

<tr><th><xsl:value-of select="al_telef/@valor" /></th><th><xsl:value-of select="poblacion/@valor" /></th>
<th><xsl:value-of select="llamada/@valor" /></th><th><xsl:value-of select="inicio/@valor" /></th>
<th><xsl:value-of select="duracion/@valor" /></th><th><xsl:value-of select="importe/@valor" /></th></tr>
<tr><td>

<xsl:for-each select="al_telef">
<xsl:if test="@id = 1">
<font style="{$rosso}"><xsl:value-of select="text()" /></font>
</xsl:if>

<xsl:if test="@id = 2">
<font style="{$azurro}"><xsl:value-of select="text()" /></font>
</xsl:if>
</xsl:for-each>
</td>
<td>
<xsl:value-of select="poblacion"/>
</td>
<td>
<xsl:value-of select="llamada" />
</td>
<td>
<xsl:value-of select="inicio" />
</td>
<td>
<xsl:value-of select="duracion" />
</td>
<td>
<xsl:value-of select="importe" />
</td></tr>

</xsl:for-each>

</xsl:template>
</xsl:stylesheet>

----------------------------------------------------------------------------------------------------------------

En el XML tenías un nodo llamado "table" y de ese modo no se podía visualizar la transformación, así que lo llamé "tabla" ("table" es palabra restringida, ya que forma parte del lenguaje HTML). No pongo más comentarios, para que no haya problemas de visualización. Si tienes dudas las trataremos en otro post.
Buen día.
=0)
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

RE: Gracias y otra duda.

Publicado por OscarO (4 intervenciones) el 21/10/2008 18:39:35
Gracias mukuykac...

Una ultima pregunta. existe algo para convertir un xml en un archivo de excel ?
Me parece haber visto que se puede hacer con ASP.net , per yo utilizo java, y nose si talves con los JSF o con algo de la tecnologia java, se pueda hacer algo.

Gracias, de antemano por tus tips.
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

RE: Olvide decir algo.

Publicado por OscaRo (1 intervención) el 21/10/2008 18:46:16
Actualmente estoy haciendo un reporte, impreso en el navegador, ese documento pretendo que se genere como un xml, y con un xsl, darle la presentacion que necesito. convertilo en tabla.

pero despues de eso, debo aplicarle una libreria de OpenRico para mostrarlo como un LiveGrid. se puede hacer eso ?

Mi duda, es, al hacer la transformacion, con XSL, y convertir el reporte en tabla, esa transformacion segun entiendo no forma parte del documento, es decir los nuevos nodos resultantes de la transformacion ........ estan en el DOM ? o se crean virtualmente, esto es.

porque si realmente no existen supongo que no podre aplicar el javascript que necesito.
nolose, me puedes decir algo al respecto ?

Gracias de antemano.
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