XML. Integración de Sistemas. Parte II. Diseño e implementación de aplicaciones Web con.net



Documentos relacionados
Tecnologías Web. Diseño e implementación con.net

XML. Bien formado ( well-formed ) si cumple reglas Válido si cumple las restricciones de un esquema

Transformación de documentos XML con

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

XSL: extensible Style Language. Anabel Fraga

Transformación documentos XML. Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo

Tema IV. XML. VI. XSL (XPath & XSLT) Desarrollo de Aplicaciones para Internet Curso 12 13

Práctica 5: Oracle XML DB

XSLT. Tecnólogo en Informática. Ing. Sebastián Vergara

Roberto Gómez Cárdenas Qué es DOM?

XSLT.NET XSLT en.net.

[CONVERSIÓN Y ADAPTACIÓN DE DOCUMENTOS XML]

Unidad 4: XSLT y XPATH. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012

Transformación de documentos : XSLT

XMLNode y XMLDocument en el aula

Práctica de introducción a

XPath en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

Fundamentos de las tecnologías de la información

Visualización y Transformaciones en XML

XML práctico Bases esenciales, conceptos y casos prácticos (2ª edición)

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

Componentes de una aplicación ASP.NET

1 Introducción a XML

XSLT. Apuntes de guerrilla

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 7

XSL. Introducción. Introducción. Introducción

Microsoft XML Core Services MSXML

XMLSpy. Manual de usuario.

Iniciar flujo a partir de un archivo XML

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Introducción a XML. Simon Pickin Ingeniería Telemática. Basado en una presentación de M. Carmen Fernández Panadero <mcfp@it.uc3m.

Bases de Datos XPath - XQuery 1. XML: XPath - XQuery. Jorge Pérez Rojas Universidad de Talca, II Semestre 2006

extensible Markup Language (XML)

Sistemas de Información 12/13 XML (extensible Mark-up Language)

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

MICROSITIOS. Perfiles

Almacenamiento de documentos XML

Capítulo 1 Documentos HTML5

Capítulo 3: XML Spy como editor de documentos XML. 2. La interfaz de usuario de XML Spy

M. Carmen Fernández Panadero

ESOFT 3 Nice Screen Scraper: A simple scraper

Introducción a PHP. * No es necesario declarar previamente las variables.

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Depto de Cs e Ing. de la Computación Universidad Nacional del Sur

Capí tulo IV. Lenguajes de estilo

DESARROLLO WEB EN ENTORNO CLIENTE

Leer XML con XMLReader en el aula

Unidad 5: Namespaces. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012

Introducción a aplicaciones Web. Laboratorio de Programación Lorena Castañeda Bueno

Tema 4. II - Cookies. Arquitecturas Distribuidas 11/12

Manual de Integrador.NET

ADMINISTRACIÓN DE BASE DE DATOS

Agenda XML XML XML XML XML. 1.1 Conceptos básicos de XML. 1.2 Ejemplos de lenguajes basados en XML. 1.3 Estructura de un documento XML

5.1 Introducción a XSL

Diseño Basado en Componentes Curso 2008 / 09

extensible Markup Language

(Rich Internet Applications) (Aplicaciones de internet enriquecidas).

Laboratorio de Aplicaciones Telemáticas

IES Pablo Serrano-ASIR1D/DAM1D-B.Soler XML

Programación páginas web con ASP.NET 3.5 (C#)

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

6.1 APIs para XML. APIs para XML (I) ! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos.

Tabla de Contenidos. xii

TEMA 5 LA FAMILIA XML EN LA NUEVA WEB

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

Especificación WebService para:

Internacionalización en

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Envío y recepción de SMS mediante GSM-CTRL en una Galaxia vía OPC

PREGUNTAS TIPO (EXAMEN DE OFIMÁTICA AVANZADA)

Leer y escribir datos XML

Análisis y Diseño de Sistemas de

EXTENSIÓN DE UML PARA APLICACIONES WEB

Introducción a la Programación en MATLAB

SiteAudit Knowledge Base Programación de Reportes en SiteAudit

Introducción al desarrollo web (idesweb)

Fundamentos de Sistemas Multimedia. Práctica Documentos estructurados y publicación electrónica. XML y XSLT

Clientes Donantonio. Especificación de requisitos software. Juan José Amor David Escorial Ismael Olea

Capitulo III. Diseño del Sistema.

Creación de controles de usuario

NOTAS TÉCNICAS SOBRE EL SIT: Comunicados (II)

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Scripting en el cliente: Javascript. Tecnologías Web

1

Configuración servidor Tomcat

Oracle 12c DISEÑO Y PROGRAMACIÓN

Microsoft SQL Server 2005

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript.

INDICE 1. Estructura, Sintaxis y Usos de XML 1. Fundamentos de XML 2. DTD: Características y Técnicas

PROGRAMACIÓN PÁGINAS WEB CON PHP

XML, DTD y hojas de estilo

Patrones para persistencia (I) Ingeniería del Software II

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

XML. María Consuelo Franky. Universidad Javeriana 2009

XSL EXtensible Stylesheet Language

Programación de Consultas SQL ADO.Net LDP / DUOC-AV

Transcripción:

XML Integración de Sistemas Parte II. Diseño e implementación de aplicaciones Web con.net

Recordatorio XML Documento XML Bien formado ( well-formed ) si cumple reglas Válido si cumple las restricciones de un esquema Tipos de esquemas más usados DTD (Document Type Definition) Esquema XML (XML Schema) Elementos y atributos Todo documento debe tener un elemento raíz Un elemento puede tener atributos Más información en: http://www.tic.udc.es/is-java/tema2-1.pdf

Recordatorio XML Campos de aplicación Configuración de aplicaciones Generación de vistas Intercambio de datos entre aplicaciones heterogéneas Etc. Más información en: http://www.tic.udc.es/is-java/tema2-2.pdf

Ejemplo de documento XML <?xml version="1.0"?> <bookstore> <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0"> <title>the Autobiography of Benjamin Franklin</title> <author> <first-name>benjamin</first-name> <last-name>franklin</last-name> </author> <price>8.99</price> </book> <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2"> <title>the Confidence Man</title> <author> <first-name>herman</first-name> <last-name>melville</last-name> </author> <price>11.99</price> </book> </bookstore>

Análisis de ficheros XML Los lenguajes más usuales disponen de parsers XML ya desarrollados En.NET XmlReader Analizador rápido, forward-only y sin almacenamiento en caché Proporciona propiedades y eventos específicos XmlDocument Representación de un documento XML Válido para aplicar transformaciones XSLT LINQ to XML Interfaz de programación XML en memoria Permite utilizar expresiones LINQ desde los lenguajes de programación de.net Framework

XmlReader Clase abstracta que proporciona acceso a datos XML forward-only read-only Sin caché Lectura datos XML en profundidad (top-down) Acceso en el mismo orden en el que los datos se definen en el fichero XML Análogo al trabajo con objetos DataReader en acceso a Base de Datos

XmlReader Métodos principales public static XmlReader Create(string inputuri); public static XmlReader Create(string inputuri, XmlReaderSettings settings); Instancia una clase concreta de XmlReader Configurable mediante objeto XmlReaderSettings public abstract bool Read(); Avanza posición cursor al siguiente nodo public abstract bool MoveToFirstAttribute(); public abstract bool MoveToNextAttribute();

XmlReader Propiedades principales public virtual bool HasAttributes { get; } public virtual string Name { get; } Nombre del nodo que se está procesando Por ejemplo, Name es bk:book para el elemento <bk:book> public abstract string Value { get; } Valor del nodo que se está procesando public abstract XmlNodeType NodeType { get; } Tipo de nodo que se está procesando XmlNodeType es una enumeración: XmlNodeType.Element, XmlNodeType.EndElement, XmlNodeType.Text, etc.

XmlReader // XmlReader Configuration XmlReaderSettings settings = new XmlReaderSettings(); settings.ignorewhitespace = true; settings.ignorecomments = false; // Retrieve XML document from URI XmlReader xmlreader = XmlReader.Create(uriString, settings); // Read nodes one at a time and process it while (xmlreader.read()) { switch (xmlreader.nodetype) { case XmlNodeType.Element: // Display beginning of element and attributes if exist Console.Write("<{0}", xmlreader.name);

XmlReader if (xmlreader.hasattributes) while (xmlreader.movetonextattribute()) Console.Write(" {0}='{1}'", xmlreader.name, xmlreader.value); Console.WriteLine(">"); break; case XmlNodeType.Text: // Display the text in each element. Console.WriteLine(xmlReader.Value); break; case XmlNodeType.EndElement: } // switch } // while // Display end of element Console.WriteLine("</{0}>", xmlreader.name); break;

XmlDocument Implementación de las especificaciones de nivel 1 y 2 del W3C XML Document Object Model (DOM) Representa documentos XML como objetos Todos los nodos son accesibles en cualquier momento Proporciona métodos para cambiar, insertar o eliminar nodos Válido para aplicar transformaciones XSLT Análogo al trabajo con objetos DataAdapter/DataSet en acceso a Base de Datos

XmlDocument Métodos principales public virtual void Load(Stream instream); public virtual void Load(string filename); public virtual void Load(TextReader txtreader); public virtual void Load(XmlReader reader); // Create a new XmlDocument XmlDocument xmldocument = new XmlDocument(); // Load data xmldocument.load(uristring);

XmlDocument Métodos principales public XmlElement CreateElement(string name); XmlElement xmlelement = xmldocument.createelement("newelementname"); XmlText textelement = xmldocument.createtextnode("newelementvalue"); //Adds the element within root node xmldocument.documentelement.appendchild(xmlelement); xmldocument.lastchild.appendchild(textelement);

XmlDocument Métodos principales public XmlAttribute CreateAttribute(string name); XmlAttribute xmlattribute = xmldocument.createattribute("newattribute"); xmlattribute.value = "newattributevalue"; //Add the new attibutte to the root document. //Add the new attibutte to the root document. xmldocument.documentelement.setattributenode(xmlattribute);

XmlDocument Navegación por los nodos: XPathNavigator Permite seleccionar un subconjunto a partir de una expresión XPath // Create a new XmlDocument XmlDocument xmldocument = new XmlDocument(); // Load data xmldocument.load(...); // Get data with XPath XPathNavigator navigator = xmldocument.createnavigator(); String xpathexpression =... XPathNodeIterator iterator = navigator.select(xpathexpression); // Show results while (iterator.movenext ()) { // process selection here with iterator.current.value }

XPath Lenguaje empleado para la selección de elementos Nodos por posición absoluta Nodos por posición relativa Contenido Sintaxis diferente a XML XSLT emplea expresiones XPath para la selección de elementos y mapeo de patrones en el documento de entrada Proporciona una ruta que especifica un conjunto de nodos de salida Soporta operaciones de comparación, lógicas, etc.

XPath Una ruta devuelve siempre una secuencia de nodos En el mismo orden en el que se encuentran en el documento original Una ruta consiste en una serie de pasos, separados por / Puede representar Rutas absolutas: /bookstore/movie/director Rutas relativas: movie/director Elementos que forman parte de una ruta / : selecciona el hijo inmediatamente inferior Al inicio del patrón indica la raíz del documento XML //element : selecciona elementos de tipo element en cualquier nivel. : representa el elemento actual.. : representa el padre del nodo actual @ : se emplea para el acceso a los atributos (@attributename) /element[n] : accede al n-ésimo atributo del elemento element

XPath./author Busca todos los elementos de tipo author dentro del contexto actual /bookstore Busca el elemento bookstore a partir de la raíz //author Busca todos los elementos author, independientemente de su posición en el documento /book[@type = "novel"] Busca los elementos book en los que el atributo type tome el valor novel /book[@style = /bookstore/@specialty] Busca todos los elementos book para los que el atributo style sea coincidente con el atributo specialty del elemento bookstore de la raíz del documento

Transformaciones XSLT en ASP.NET Pueden realizarse fácilmente con la ayuda del control de servidor <asp:xml> System.Web.UI.WebControls.Xml Propiedades de interés: public XmlDocument Document { get; set; } Permite establecer/recuperar el System.Xml.XmlDocument que se mostrará en el control Obsoleto: se recomienda utilizar la propiedad XPathNavigator public string DocumentSource { get; set; } Permite establecer/recuperar el path a un documento XML que se mostrará en el control public XPathNavigator XPathNavigator { get; set; } Permite establecer/recuperar un modelo de cursor para navegar y editar los datos XML asociados con el control

Transformaciones XSLT en ASP.NET Propiedades de interés (cont): public XslTransform Transform { get; set; } Permite establecer/recuperar el objeto System.Xml.Xsl.XslTransform que formatea el documento XML antes de que se muestre en el control XslTransform está obsoleto a favor de XslCompiledTransform public string TransformSource { get; set; } Permite establecer/recuperar el path a una hoja de estilos XSLT que formatee el documento XML antes de que se muestre en el control public XsltArgumentList TransformArgumentList { get; set; } Permite establecer/recuperar un objeto System.Xml.Xsl.XsltArgumentList que contiene una lista de argumentos opcionales pasados a la hoja de estilos y utilizados durante la transformación XSL

Transformaciones XSLT en ASP.NET En el fichero.aspx: <%@ Page Language="C#"... %> <<...>> <asp:xml ID="aspXml" runat="server"> </asp:xml> <<...>>

Transformaciones XSLT en ASP.NET En el CodeBehind: Acceso a documento XML Local: aspxml.documentsource = Server.MapPath("Movies.xml"); Remoto: XmlDocument xmldocument = new XmlDocument(); xmldocument.load("http://.../movies.xml"); aspxml.xpathnavigator = xmldocument.createnavigator(); Archivo de transformación XSL aspxml.transformsource = Server.MapPath("Movies.xslt");

The Extensible Stylesheet Language Family (XSL) Conjunto de recomendaciones para definir la transformación y presentación de documentos XML Componentes XSL Transformations (XSLT) Lenguaje para la transformación de documentos XML XML Path Language (XPath) Especificación empleada en XSLT para acceder a las partes de un documento XML XSL Formatting Objects (XSL-FO) Vocabulario XML para especificar la semántica del formateo Más información en: http://www.w3.org/style/xsl/

XSLT (extensible Stylesheet Language Transformations) Describe un lenguaje basado en XML para transformar documentos XML a cualquier otro formato Normalmente se empleará para transformar documentos entre esquemas XML que permitan su procesamiento por distintos sistemas También es ampliamente utilizado para transformar documentos También es ampliamente utilizado para transformar documentos XML en HTML, WML, o cualquier otro formato que facilite su presentación

Transformaciones XSL Una hoja de estilo XSLT es un documento XML bien formado Generalmente con extensión xsl (o xslt) Debe comenzar con una declaración XML: <?xml version="1.0"?> El elemento raíz de la hoja de estilo XSLT es <xsl:stylesheet> Este elemento contendrá a todos los demás, y debe ir precedido por el alias xsl correspondiente al espacio de nombres para hojas de estilo XSLT. Una plantilla xsl está formada por una lista de reglas. Contienen: Un patrón indicando la parte del árbol XML a la que se aplica Una plantilla que produce la salida cuando se cumple el patrón

Transformaciones XSL Plantillas Controlan la salida originada desde cada entrada Representadas por un elemento xsl:template Atributo match especifica un patrón (expresión Xpath) que identifica las entradas a las que se aplica la plantilla Patrón más sencillo es el nombre de un elemento (e.g. BOOK) Ejemplo (Books.xsl): <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="book">book Matched<br/></xsl:template> </xsl:stylesheet>

Transformaciones XSL Pasos seguidos por el procesador XSL para formatear un documento XML Escaneo del documento buscando cada subárbol Comparación de cada subárbol con los patrones especificados en las plantillas Ante una coincidencia, se aplica la regla indicada por la plantilla Generalmente incluye nuevos datos o modificación de los datos XML originales

Transformaciones XSL La regla <xsl:template match="/"> se ejecuta cuando se encuentra el elemento raíz del documento XML Dentro de esta regla, se incluyen llamadas a otras reglas definidas en la hoja de estilo <xsl:apply-templates select="..." /> El atributo select tomará como valor el nombre del elemento asociado a la regla que se quiere ejecutar Permite control sobre el orden de ejecución de las reglas Si el atributo select no se especifica, las reglas se aplicarán en el orden en que se encuentren elementos coincidentes durante el acceso al árbol XML

Transformaciones XSL Ejemplo <?xml version="1.0"?> <bookstore> <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0"> <title>the Autobiography of Benjamin Franklin</title> <author> <first-name>benjamin</first-name> <last-name>franklin</last-name> </author> <price>8.99</price> </book> </bookstore> <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> Fichero XML Hoja de estilos XSLT <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="book"> <p>book matched</p> </xsl:template> </xsl:stylesheet> <?xml version="1.0" encoding="utf-8"?> Resultado <p>book Matched</p>

Transformaciones XSL Elemento <xsl:value-of...> Obtiene el valor de un elemento Texto incluido en el elemento una vez las etiquetas han sido eliminadas Atributo select indica mediante una expresión XPath el elemento seleccionado <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="book"> <p> <xsl:value-of select="title"/> </p> </xsl:template> </xsl:stylesheet> <?xml version="1.0" encoding="utf-8"?> <p>the Autobiography of Benjamin Franklin</p>

Transformaciones XSL Aplicación de reglas <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="bookstore"> <html> <head> <title>bookstore</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="book"> <p> <xsl:value-of select="title"/> </p> <xsl:apply-templates select="author"/> </xsl:template> <xsl:template match="author"> <p> <xsl:value-of select="last-name"/>, <xsl:value-of select="first-name"/> </p> </xsl:template> <html> <head> <title>bookstore</title> </head> <body> <p>the Autobiography of Benjamin Franklin</p> <p>franklin, Benjamin</p> </body> </html> </xsl:stylesheet>

Transformaciones XSL Aplicación de reglas condicionada: <xsl:if...> <xsl:if> Aplicación de la regla depende de la evaluación del parámetro test No existe apartado else <xsl:template match="book"> <xsl:if test="price<10"> <p> <xsl:value-of select="title"/> </p> </xsl:if> </xsl:template>

Transformaciones XSL <xsl:choose>, <xsl:when>, <xsl:otherwise> Amplían las posibilidades del elemento <xsl:if> Permiten indicar qué transformación se debe realizar en el caso de que se cumpla una condición, y en el resto de casos Se utilizan de forma conjunta El elemento xsl:choose contendrá uno o más elementos xsl:when y un elemento xsl:otherwise El elemento xsl:when incluye un atributo test que tomará como valor la expresión que se evaluará Si se cumple, se ejecutará el código escrito entre las etiquetas de inicio y de fin del elemento xsl:when El elemento xsl:otherwise contendrá el código que se ejecutará si no se cumplen las expresiones indicadas en los atributos test de los elementos xsl:when

Transformaciones XSL <xsl:choose>, <xsl:when>, <xsl:otherwise> <xsl:choose> <xsl:when test="boolean-expression1"> <!-- template actions="" --> </xsl:when> <xsl:when test="boolean-expression2"> <!-- template actions="" --> </xsl:when> <xsl:otherwise> <!-- template actions="" --> </xsl:otherwise> </xsl:choose>

Transformaciones XSL <xsl:element>, <xsl:attribute> <xsl:element> Se utiliza para crear elementos en el documento resultado de la transformación Es especialmente útil cuando se utiliza XSLT para transformar un documento XML en otro con una estructura diferente (ej. HTML) Irá acompañado por un atributo name Tomará como valor el nombre del elemento que se va a crear <xsl:attribute> Permite crear un atributo en el documento de salida Irá acompañado por un atributo name <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="url"/> </xsl:attribute> <xsl:value-of select="title"/> </xsl:element> <a href="url_value">title value</a>

Acceso directo a recursos Web System.Net.HttpWebRequest Implementa la clase abstracta WebRequest Encapsula una petición HTTP Métodos principales GetResponse(): WebResponse Obtiene la respuesta proporcionada por el servidor GetRequestStream(): Stream Obtiene un Stream para escribir los datos de la petición Propiedades principales RequestURI Obtiene la URI original de la petición ProtocolVersion Versión del protocolo HTTP empleada en la petición Headers Colección de los encabezados HTTP de la petición

Acceso directo a recursos Web System.Net.HttpWebResponse Implementa la clase abstracta WebResponse Encapsula una respuesta HTTP Objetos HttpWebResponse no deberían crearse directamente Crearlos por medio de una llamada a WebRequest.GetResponse()

Acceso directo a recursos Web System.Net.HttpWebResponse Métodos principales GetResponseHeader(string headername): string Obtiene el valor de las cabeceras HTTP devueltas con la response GetResponseStream(): Stream Obtiene un Stream para la lectura del cuerpo de la respuesta Propiedades principales ProtocolVersion Versión del protocolo HTTP de la respuesta StatusCode Obtiene el estado de la respuesta Headers Colección de los encabezados HTTP de la respuesta

Acceso directo a recursos Web Ejemplo public void GetResourceAsString(string uristring) { } string result = ""; // Create the web request to a Uniform Resource Identifier (URI) Uri addressuri = new Uri(uriString); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(addressURI); // Get response from the specified resource in the request HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Get the response stream to read the body response from server StreamReader reader = new StreamReader(response.GetResponseStream()); // Read the whole contents and return it as a string result = reader.readtoend(); Console.WriteLine(result);