Foros del Web » Programando para Internet » ASP Clásico »

Leer XML un poco especial

Estas en el tema de Leer XML un poco especial en el foro de ASP Clásico en Foros del Web. Hola a todos, estoy intentando leer un archivo xml desde asp, como veis en el xml la estructura varía un poco de los ejemplos que ...
  #1 (permalink)  
Antiguo 23/02/2009, 10:34
 
Fecha de Ingreso: julio-2007
Mensajes: 23
Antigüedad: 17 años, 9 meses
Puntos: 0
Leer XML un poco especial

Hola a todos,
estoy intentando leer un archivo xml desde asp, como veis en el xml la estructura varía un poco de los ejemplos que he visto por los foros, he probado multitud de combinaciones pero no logro que la página asp muestre los datos del xml.

Esteseria el xml:
Código:
<?xml version='1.0'?>
<DATOSFARMA NOMBRE='ABC' LUGAR='QWERTY' SRV='ALJ'>
<FARMACIA>
<FM MED='DOL'>
<DIST AB='A' CD='UNO' />
<DIST AB='B' CD='DOS' /></FM>
<FM MED='DAL'>
<DIST AB='C' CD='TRES' />
<DIST AB='D' CD='CUATRO' /></FM>
</FARMACIA>
<DATOSGEN>
<DTGEN CD='CINCO' />
<DTGEN CD='SEIS' />
</DATOSGEN>
</DATOSFARMA>

Este el xsl:
Código:
<?xml version="1.0" ?> 
  <xsl:stylesheet xmlns:xsl="ht tp://w ww.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
  <table border="1">
  <xsl:for-each select="DATOSFARMA">
  <tr>
  <td>
  <xsl:value-of select="NOMBRE" /> 
  </td>
  <td>
  <xsl:value-of select="LUGAR" /> 
  </td>
  <td>
  <xsl:value-of select="SRV" /> 
  </td>
  </tr>
  </xsl:for-each>
  </table>
  </xsl:template>
  </xsl:stylesheet>
Este el asp:
Código:
<%
Dim objXML
Dim objXSL
Dim strHTML

'Cargo el archivo XML
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
objXML.load(Server.MapPath("farma.xml"))

'Cargo el archivo XML
Set objXSL = Server.CreateObject("Microsoft.XMLDOM")
objXSL.async = False
objXSL.load(Server.MapPath("farma.xsl"))

' Transformo el archivo XML usando la hoja de estilos XSL
strHTML = objXML.transformNode(objXSL)

Set objXML = Nothing
Set objXSL = Nothing

'Saco el HTML resultante ... los datos provienen 
'de los archivos. xml, pero el formato de los 
'resultados depende completamente del archivo .xsl
Response.Write strHTML
%>
Este seria solo un ejemplo facil, que no logro hacer funcionar, de lo que estoy intentando hacer.

Gracias de antemano a todos.
  #2 (permalink)  
Antiguo 23/02/2009, 19:33
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: Leer XML un poco especial

Hola shasho

Tu problema es en realidad en el XSL, te sugiero estudiar un poco al respecto, por el momento, esto es lo que te hace falta:

Código:
<?xml version="1.0" ?> 
  <xsl:stylesheet xmlns:xsl="ht tp://w ww.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
  <table border="1">

  <tr>
  <td>
  <xsl:value-of select="DATOSFARMA/@NOMBRE" /> 
  </td>
  <td>
  <xsl:value-of select="DATOSFARMA/@LUGAR" /> 
  </td>
  <td>
  <xsl:value-of select="DATOSFARMA/@SRV" /> 
  </td>
  </tr>

  </table>
  </xsl:template>
  </xsl:stylesheet>
1. El for each no es necesario pues no estás iterando los nodos, solo estás accediendo al root y leyendo sus atributos.
2. Los atributos se leen nodo/@hijo

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 24/02/2009, 02:24
 
Fecha de Ingreso: julio-2007
Mensajes: 23
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Leer XML un poco especial

ok gracias por la respuesta, me imaginaba que el problema estaba en el xsl, leeré un poco mas sobre el tema.

Saludos.
  #4 (permalink)  
Antiguo 24/02/2009, 06:02
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Leer XML un poco especial

esa de los atributos no me la sabia !!! Muchas gracias :)


Otra cosa, no es por joder con los estandares, pero segun la w3, los TAGs de los XML DEBEN ir en LOWERCASE, y sus atributos con comilla doble "

esop :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:59.