Transformacion a XSL

18/09/2003 - 19:24 por Joaquim Ferrer | Informe spam
Gente:
Estoy intentando un pequeño mantenimiento de datos en XML pero no funciona,
a ver quien me puede ayudar. El problema es al añadir un nuevo dato, que
creo se realiza correctamente en el XML-DOM, pero no consigo que la
transformacion XSL me lo muestre.
Adjunto codigo :

<HTML>
<head>

<SCRIPT Language="JavaScript">
function Add( cText, xmldoc, xsldoc ){
var newnode, newtext;
newnode=xmldoc.createElement("NOMBRE");
newtext=xmldoc.createTextNode( cText );
newnode.appendChild(newtext);
xmldoc.documentElement.appendChild(newnode);
xmldoc.transformNodeToObject(xsldoc, xmldoc);
}
</SCRIPT>
</head>

<BODY>

<!-- Datos -->
<XML id='xml'>
<?xml version="1.0" ?>
<DATABASE>
<REGISTRO>
<NOMBRE>Registro numero UNO</NOMBRE>
</REGISTRO>
</DATABASE>
</XML>

<!-- Transformacion -->
<XML id='xsl'>
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="1" bgcolor="#f1f1f1" width="100%">
<tr>
<th>NOMBRE</th>
</tr>
<xsl:for-each select="DATABASE/REGISTRO">
<tr>
<td><xsl:value-of select="NOMBRE"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
</XML>

<H2>Objeto HTML Table vinculado a datos XML (Isla de datos)</H2>
<p>Texto a añadir a la tabla:
<input type="text" name="get" size="50">
<input type="button" value="Aceptar" onclick="Add( get.value,
xml.XMLDocument, xsl.XMLDocument)">
</p>
<TABLE DATASRC='#xml' BORDER="1">
<TR><TD><div DATAFLD="NOMBRE"></div></TD></TR>
</TABLE>

</BODY>
</HTML>

Gracias por la atencion.
Saludos
Joaquim Ferrer
quim_ferrer@yahoo.es

Preguntas similare

Leer las respuestas

#1 Ignacio Nicolás Rodríguez
18/09/2003 - 21:20 | Informe spam
Estás poniendo el nuevo elemento "NOMBRE" dentro de "DATABASE", pero según
tu modelo deberías tener un elemento "REGISTRO" intermedio.

Saludos. Ignacio.--


"Joaquim Ferrer" escribió en el mensaje
news:bkcpm1$n38$
Gente:
Estoy intentando un pequeño mantenimiento de datos en XML pero no


funciona,
a ver quien me puede ayudar. El problema es al añadir un nuevo dato, que
creo se realiza correctamente en el XML-DOM, pero no consigo que la
transformacion XSL me lo muestre.
Adjunto codigo :

<HTML>
<head>

<SCRIPT Language="JavaScript">
function Add( cText, xmldoc, xsldoc ){
var newnode, newtext;
newnode=xmldoc.createElement("NOMBRE");
newtext=xmldoc.createTextNode( cText );
newnode.appendChild(newtext);
xmldoc.documentElement.appendChild(newnode);
xmldoc.transformNodeToObject(xsldoc, xmldoc);
}
</SCRIPT>
</head>

<BODY>

<!-- Datos -->
<XML id='xml'>
<?xml version="1.0" ?>
<DATABASE>
<REGISTRO>
<NOMBRE>Registro numero UNO</NOMBRE>
</REGISTRO>
</DATABASE>
</XML>

<!-- Transformacion -->
<XML id='xsl'>
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="1" bgcolor="#f1f1f1" width="100%">
<tr>
<th>NOMBRE</th>
</tr>
<xsl:for-each select="DATABASE/REGISTRO">
<tr>
<td><xsl:value-of select="NOMBRE"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
</XML>

<H2>Objeto HTML Table vinculado a datos XML (Isla de datos)</H2>
<p>Texto a añadir a la tabla:
<input type="text" name="get" size="50">
<input type="button" value="Aceptar" onclick="Add( get.value,
xml.XMLDocument, xsl.XMLDocument)">
</p>
<TABLE DATASRC='#xml' BORDER="1">
<TR><TD><div DATAFLD="NOMBRE"></div></TD></TR>
</TABLE>

</BODY>
</HTML>

Gracias por la atencion.
Saludos
Joaquim Ferrer



Respuesta Responder a este mensaje
#2 Joaquim Ferrer
19/09/2003 - 11:02 | Informe spam
Ignacio :
Gracias por responder, pero... no creo que sea este el problema. Mira el
test que adjunto y veras que funciona bien la insercion de nuevos items al
arbol.

<html>

<head>
<script type="text/javascript">
{
var sXML= "<DATABASE><REGISTRO><NOMBRE>Lata de
cerveza</NOMBRE></REGISTRO></DATABASE>";
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML( sXML );
}

function Add( cText){
if (cText == "")
alert( "No hay nada que añadir :-)" );
else
var newnode=xmlDoc.createElement("NOMBRE");
var newtext=xmlDoc.createTextNode( cText );
newnode.appendChild(newtext);
xmlDoc.documentElement.appendChild(newnode);
return ViewTree()
}

function ViewTree(){
var i;
list.value = "";
for( i = 0; i < xmlDoc.documentElement.childNodes.length ; i++ )
{
list.value += "<NOMBRE>" +
xmlDoc.documentElement.childNodes.item(i).text + "</NOMBRE>";
}
}
</script>
</head>

<body>
<H2>Test de ejemplo. Añadiendo items al arbol XML por DOM</H2>
<p><textarea name="list" cols="80" rows="10"></textarea></p>
<p>Item a añadir:<input type="text" name="get" size="50">
<input type="button" value="Aceptar" name="add"
onclick="Add( get.value )"></p>
<script type="text/Javascript">ViewTree()</script>
</body>

</html>

Saludos
Joaquim Ferrer

Respuesta Responder a este mensaje
#3 Joaquim Ferrer
19/09/2003 - 11:26 | Informe spam
Ejemm pequeña correccion en la funcion Add, que queda asi :
function Add( cText){
if (cText == "")
{
alert( "No hay nada que añadir :-)" );
}
else {
var newnode=xmlDoc.createElement("NOMBRE");
var newtext=xmlDoc.createTextNode( cText );
newnode.appendChild(newtext);
xmlDoc.documentElement.appendChild(newnode);
return ViewTree()
}
}

Faltaban las llaves de control de flujo en el if ya que daba error :-()
Saludos
Joaquim Ferrer




Respuesta Responder a este mensaje
#4 Ignacio Nicolás Rodríguez
22/09/2003 - 14:49 | Informe spam
Jajajajajaja.

Inisisto. Muestra por pantalla xmlDoc.InnerXml a ver si comprendes el
problema que estás teniendo.
Con el código que pones estás tratando de engañarme (o autoengañarte).
Saludos!

Ignacio.//

"Joaquim Ferrer" escribió en el mensaje
news:bkei2m$4te$
Ejemm pequeña correccion en la funcion Add, que queda asi :
function Add( cText){
if (cText == "")
{
alert( "No hay nada que añadir :-)" );
}
else {
var newnode=xmlDoc.createElement("NOMBRE");
var newtext=xmlDoc.createTextNode( cText );
newnode.appendChild(newtext);
xmlDoc.documentElement.appendChild(newnode);
return ViewTree()
}
}

Faltaban las llaves de control de flujo en el if ya que daba error :-()
Saludos
Joaquim Ferrer


>
>


Respuesta Responder a este mensaje
#5 Joaquim Ferrer
23/09/2003 - 11:44 | Informe spam
Ignacio :

Jajajajajaja.


No te burles, por favor, de los ignorantes ... piensa que sobretodo en
informática, puedes ser maestro de algo y un perfecto ignorante en otras
muchas cosas ...
Piensa que provengo de la programacion "tradicional" de aplicaciones en
varios lenguajes ( C/C++, Harbour) y esto es nuevo para mi pero... le pongo
ganas e ilusión y creo que voy a aprender deprisa.
Dime si lo sabes, donde esta mi error, yo no pretendo engañar a nadie,
simplemente intento aprender.
Por cierto, xmlDoc.InnerXml es una propiedad no definida, almenos en el DOM
de mi M$ Explorer 5.
Saludos
Joaquim Ferrer


Inisisto. Muestra por pantalla xmlDoc.InnerXml a ver si comprendes el
problema que estás teniendo.
Con el código que pones estás tratando de engañarme (o autoengañarte).
Saludos!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida