XML y Servicios Web - PowerPoint PPT Presentation

1 / 39
About This Presentation
Title:

XML y Servicios Web

Description:

Aviones o aeronaves que cambian constantemente, torres de control, ... XML Data Marshalling. Administraci n flujo procesos. Servicios Web. Generaci n .NET ... – PowerPoint PPT presentation

Number of Views:33
Avg rating:3.0/5.0
Slides: 40
Provided by: Marb
Category:

less

Transcript and Presenter's Notes

Title: XML y Servicios Web


1
XML y Servicios Web
  • Miguel Ángel Ramos Barroso

2
  • Jiuston güi haf a problem

3
Pensemos en
  • Sistema de control aéreo internacional
  • Aviones o aeronaves que cambian constantemente,
    torres de control, tripulación y pasajeros hablan
    y hacen cosas distintas en distintos idiomas,
    etc.,
  • La comunicación entre la tripulación, los aviones
    y torres de control debe ser la misma.
  • Hay un gran tamaño (muchos aviones y sitios) y
    mucha heterogeneidad (pobres/ricos, idiomas,
    tamaños, )
  • Solucionan el problema de la transmisión usando
    la radio con VHF en un frecuencia. (HTTP)
  • Todos usan el idioma ingles. (XML)

4
Que es XML?
  • XML EXtensible Markup Language
  • XML es un lenguaje de etiquetas como HTML
  • XML fue diseñado para describir y contener datos
  • Las etiquetas XML no son predefinidas.
  • !Te las puedes inventar! Como las respuestas de
    los exámenes!
  • XML utiliza Document Type Definition (DTD) o un
    esquema XML para describir los datos.
  • XML junto a DTD o a un esquema XML es totalmente
    descriptivo por si mismo.

5
Vivan las siglas!
  • SGML (Standard Generalized Markup Language)
  • HTML es una aplicación de SGML
  • XML es subconjunto más fácil de usar de SGML
  • XHTML es el HTML de XML

6
XML se puede usar para intercambiar y guardar
Datos
  • Los sistemas y las bases de datos contienen datos
    en formatos incompatibles.
  • Una de las tareas que mas consumen tiempo a los
    desarrolladores ha sido intercambiar datos entre
    tales sistemas sobre el Internet.
  • Convertir los datos a XML puede reducir esta
    complejidad y crear datos que pueden leerse por
    diversos tipos de aplicaciones.

7
Estructura
Directiva
Comentario
lt?xml version1.0 encodingutf-8?gt lt!-
Ejemplo de comentario --gt ltLibrosgt ltPedido
descuentonogt ltidarticulogt12345lt/idarticulogt
ltTitulogtEl Quijotelt/nombregt
lt/Pedidogt lt/Librosgt
Etiqueta
Atributo
Etiqueta
Texto contenido
8
Ejemplo XML
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • ltcataloggt
  • ltcdgt
  • lttitlegtEmpire Burlesquelt/titlegt
  • ltartistgtBob Dylanlt/artistgt
  • ltcountrygtUSAlt/countrygt
  • ltcompanygtColumbialt/companygt
  • ltpricegt10.90lt/pricegt
  • ltyeargt1985lt/yeargt
  • lt/cdgt . . .
  • lt/cataloggt

Vinculo
9
Pero cómo lo puedorepresentar?
Usando XSL (Extensible Stylesheet Language,
"lenguaje extensible de hojas de estilo"). Es
una familia de lenguajes basados en el estándar
XML que permite describir cómo la información
contenida en un documento XML cualquiera debe ser
transformada o formateada para su presentación en
un medio específico.
10
La familia? Bien gracias
  • XSLT (siglas de Extensible Stylesheet Language
    Transformations, lenguaje de hojas extensibles de
    transformación), que permite convertir documentos
    XML de una sintaxis a otra (por ejemplo, de un
    XML a otro o a un documento HTML).
  • XSL-FO (lenguaje de hojas extensibles de formateo
    de objetos), que permite especificar el formato
    visual con el cual se quiere presentar un
    documento XML, es usado principalmente para
    generar documentos PDF.
  • XPath, o XML Path Language, es una sintaxis (no
    basada en XML) para acceder o referirse a
    porciones de un documento XML.
  • Estas tres especificaciones son recomendaciones
    oficiales del W3C.

11
Transformaciones XSLT
  • XSLT también puede agregar nuevas etiquetas o
    remover algunas en el archivo resultante. Es
    posible reposicionar y ordenar los elementos, así
    como tomar decisiones acerca de los elementos a
    desplegar y mas.
  • Una manera común de describir el proceso de la
    transformación es decir que XSLT transforma un
    árbol de la fuente de XML en un árbol del
    resultado de XML.

12
Creando una hoja de estilo XSLT
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • ltxslstylesheet version"1.0
  • xmlnsxsl"http//www.w3.org/1999/XSL/Transform"gt
  • ltxsltemplate match"/"gt
  • lthtmlgt
  • ltbodygt
  • lth2gtMy CD Collectionlt/h2gt
  • lttable border"1"gt
  • lttr bgcolor"9acd32"gt
  • ltth align"left"gtTitlelt/thgt
  • ltth align"left"gtArtistlt/thgt
  • lt/trgt
  • ltxslfor-each select"catalog/cd"gt
  • lttrgt
  • lttdgtltxslvalue-of select"title"/gtlt/tdgt
  • lttdgtltxslvalue-of select"artist"/gtlt/tdgt
  • lt/trgt
  • lt/xslfor-eachgt
  • lt/tablegt

13
Cómo funciona?
  • Durante el proceso de transformación, XSLT
    utiliza XPath para definir partes del documento
    fuente que encajan dentro de una o mas plantillas
    predefinidas.
  • Por cada coincidencia, XSLT transformará esta
    parte del documento fuente para generar el
    documento resultante.
  • La porción del documento fuente que no encaja con
    la plantilla permanecerá sin modificación alguna
    en el documento resultante.

14
Combinando La Hoja de estilo XSLT con el
Documento XML
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • lt?xml-stylesheet type"text/xsl"
    href"cdcatalog.xsl"?gt
  • ltcataloggt
  • ltcdgt
  • lttitlegtEmpire Burlesquelt/titlegt
  • ltartistgtBob Dylanlt/artistgt
  • ltcountrygtUSAlt/countrygt
  • ltcompanygtColumbialt/companygt
  • ltpricegt10.90lt/pricegt
  • ltyeargt1985lt/yeargt
  • lt/cdgt
  • .
  • .
  • .
  • lt/cataloggt

15
ltxsltemplategt
  • Cada etiqueta ltxsltemplategt contiene reglas por
    aplicar a ciertos elementos de un nodo.
  • El atributo match es utilizado para asociar la
    plantilla con un elemento XML.
  • El atributo match también puede utilizarse para
    aplicarse a una rama completa del documento XML
    (Por ejemplo match"/" define a todo el
    documento).
  • ltxsltemplate match"/"gt

16
ltxslvalue-ofgt
  • La etiqueta ltxslvalue-ofgt se utiliza para
    seleccionar el valor de una etiqueta XML y
    agregarlo al archivo de salida de la
    transformacion.
  • El valor del atributo select contiene una
    expresión XPath. Esta trabaja como la navegación
    de un sistema de ficheros donde una diagonal
    vertical delantera (/) selecciona subdirectorios.
  • ltxslvalue-of select"catalog/cd/title"/ gt

17
ltxslfor-eachgt
  • La etiqueta XSL ltxslfor-eachgt se utiliza para
    seleccionar todos los elementos XML del nodo
    especificado.
  • El valor del atributo select contiene una
    expresión XPath. Esta trabaja como la navegación
    de un sistema de ficheros donde una diagonal
    vertical delantera (/) selecciona subdirectorios.
  • ltxslfor-each select"catalog/cd"gt

18
ltxslsortgt
  • Para mostrar el archivo XML como un archivo XHTML
    y ordenarlo al mismo tiempo, simplemente agrege
    el elemento sort dentro de la estructura for-each
    element en el archivo XSL
  • No es posible ver esto en IE 5, porque el
    namespace http//www.w3.org/TR/WD-xsl no
    comprende el elemento ltxslsortgt.
  • ltxslfor-each select"catalog/cd"gt
  • ltxslsort select"artist"/gt

19
ltxslifgt
  • ltxslfor-each select"catalog/cd"gt
  • ltxslif test"price gt 10"gt
  • lttrgt
  • lttdgtltxslvalue-of select"title"/gtlt/tdgt
  • lttdgtltxslvalue-of select"artist"/gtlt/tdgt
  • lt/trgt
  • lt/xslifgt
  • lt/xslfor-eachgt

20
ltxslchoosegt
  • ltxslfor-each select"catalog/cd"gt
  • lttrgt
  • lttdgtltxslvalue-of select"title"/gtlt/tdgt
  • ltxslchoosegt
  • ltxslwhen test"price gt 10"gt
  • lttd bgcolor"ff00ff"gt
  • ltxslvalue-of select"artist"/gtlt/tdgt
  • lt/xslwhengt
  • ltxslotherwisegt
  • lttdgtltxslvalue-of
    select"artist"/gtlt/tdgt
  • lt/xslotherwisegt
  • lt/xslchoosegt
  • lt/trgt
  • lt/xslfor-eachgt

21
NET Framework
22
Biblioteca XML en .NET
  • El espacio de nombres System.Xml ofrece una
    variedad de clases para leer y escribir
    documentos XML
  • La clase XmlDocument implementa DOM
  • Para un procesamiento orientado al stream se
    puede usar XmlTextReader o XmlValidatingReader
  • XmlTextWriter simplifica el proceso de creación
    de documentos XML.

23
XMLDocument
  • La clase XMLDocument es compatible con la
    especificación DOM Level 2 Core
  • ?? Representa a un documento como un árbol de
    nodos que tiene por raíz el
  • elemento raíz del documento XML.
  • ?? Cada nodo es una instancia de XmlNode, que
    expone métodos y propiedades
  • para navegar árboles DOM, leer y escribir
    contenido de nodos, añadir y borrar
  • nodos, etc.
  • ?? Un ejemplo sencillo de su uso sería
  • XmlDocument doc new XmlDocument ()
  • doc.Load ("Guitars.xml")
  • ?? El atributo DocumentElement devuelve un
    XmlNode que hace referencia a la
  • raíz del documento, que es el punto de comienzo
    al navegar de arriba a abajo el
  • árbol DOM
  • ?? La combinación de los atributos HasChildNodes
    y ChildNodes hace posible
  • un enfoque recursivo para iterar sobre los nodos
    de un árbol
  • ?? La invocación a ChildNodes no devuelve
    atributos XML, sin embargo, su
  • propiedad Attributes lo hace.
  • ?? Las propiedades NodeType, Name, y Value de un
    XmlNode exponen su tipo,
  • nombre, y valor del correspondiente nodo
  • ?? En atributos usa la propiedad LocalName para
    devolver nombres sin prefijos.

24
XMLDocument
  • Para acceder a nodos particulares puedes hacer
    uso de las
  • propiedades de un XmlDocument GetElementsByTagName
    ,
  • SelectNodes, y SelectSingleNode
  • ?? XmlDocument puede también utilizarse para
    escribir
  • documentos Xml
  • ?? La clase XmlDataDocument ofrece un mecanismo
    para tratar
  • datos relacionales como datos XML. Puedes crear
    un
  • XmlDataDocument alrededor de un DataSet del
    siguiente modo
  • DataSet ds new DataSet ()
  • // TODO Initialize the DataSet with a database
  • query
  • XmlDataDocument doc new XmlDataDocument (ds)

25
  • using System
  • using System.Xml
  • class MyApp
  • static void Main ()
  • XmlDocument doc new XmlDocument ()
  • doc.Load ("Guitars.xml")
  • XmlNodeList nodes doc.GetElementsByTagName
    ("Guitar")
  • foreach (XmlNode node in nodes)
  • Console.WriteLine ("0 1", node"Make".InnerTe
    xt,
  • node"Model".InnerText)
  • // Visualiza el contenido de todo el árbol
  • OutputNode (doc.DocumentElement)

26
  • public static void OutputNode (XmlNode node)
  • Console.WriteLine ("Type0\tName1\tValue2"
    ,
  • node.NodeType, node.Name, node.Value)
  • if (node.Attributes ! null)
  • foreach (XmlAttribute attr in node.Attributes)
  • Console.WriteLine("Type0\tName1\tValue2",
  • attr.NodeType, attr.Name, attr.Value)
  • if (node.HasChildNodes)
  • XmlNodeList children node.ChildNodes
  • foreach (XmlNode child in children)
  • OutputNode (child)

27
XmlTextReader
XmlTextReader read new XmlTextReader(new
StringReader(requestXml)) while(read.Read())
if(read.LocalName idarticulo)
Console.WriteLine(read.ReadString())
28
XMLTextReader
  • La clase System.Xml.XmlTextReader ofrece una
    interfaz rápida, hacia adelante, de sólo
  • lectura de documentos XML.
  • ?? XmlValidatingReader permite efectuar una
    validación de un documento Xml
  • ?? Es orientada al stream como SAX
  • ?? Es más eficiente en consumo de memoria que
    XmlDocument,
  • XmlTextReader reader null
  • ...
  • reader new XmlTextReader ("Guitars.xml")
  • reader.WhitespaceHandling WhitespaceHandling.Non
    e
  • while (reader.Read ())
  • Console.WriteLine ("Type0\tName1\tValue2"
    , reader.NodeType,
  • reader.Name, reader.Value)
  • if (reader.AttributeCount gt 0)
  • while (reader.MoveToNextAttribute())
  • Console.WriteLine ("Type0\tName1\tValue2"
    ,
  • reader.NodeType, reader.Name, reader.Value)

29
XMLTextReader
  • La clase XmlTextWriter se puede utilizar para
    generar documentos
  • Xml desde cero.
  • XmlTextWriter writer null
  • ...
  • writer new XmlTextWriter ("Guitars.xml",
  • System.Text.Encoding.Unicode)
  • writer.Formatting Formatting.Indented
  • writer.WriteStartDocument ()
  • writer.WriteStartElement ("Guitars")
  • writer.WriteStartElement ("Guitar")
  • writer.WriteAttributeString ("Image",
    "MySG.jpeg")
  • writer.WriteElementString ("Make", "Gibson")
  • writer.WriteElementString ("Model", "SG")
  • writer.WriteElementString ("Year", "1977")
  • writer.WriteElementString ("Color", "Tobacco
    Sunburst")
  • writer.WriteElementString ("Neck", "Rosewood")
  • writer.WriteEndElement ()
  • writer.WriteEndElement ()

30
XML. Introducción
Procesar XML Secuencialmente
  • XPath
  • Permite aplicar filtros

Operador
Ejemplo
Existencia de hijos
Empleado Salario / Nombre
Valor de los hijos
Empleado Salario gt 25000
Presencia de atributos
Empleado _at_ID
Valor de atributos
Empleado _at_ID 1234
31
XML. Introducción
Procesar XML Secuencialmente
  • Xpath
  • Permite realizar queries sobre un documento XML,
    aplicando filtros.
  • Ej. /Pedido/idarticulo
  • Ej. Pedido idarticulo gt "100"

32
System.Xml.XPath
  • Las clases principales de este espacio de nombres
    son
  • ?? XPathDocument, representa documentos XML que
    quieren ser consultados
  • mediante XPath
  • ?? XPathNavigator, provee un mecanismo para
    ejecutar consultas XPath
  • ?? XPathNodeIterator, que representa conjuntos de
    nodos generados por
  • consultas XPath y permite iterar sobre ellos
  • ?? XPathNavigator provee 5 métodos para ejecutar
    consultas XPath.
  • ?? Los más importantes son
  • ?? Evaluate executa cualquier expresión XPath,
    devolviendo un Object que puede
  • ser un string, un float, un boolean o un
    XPathNodeIterator
  • ?? Select trabaja exclusivamente con expresiones
    que devuelven conjuntos de
  • nodos y es un vehículo ideal para evaluar
    location paths. Siempre devuelve un
  • XPathNodeIterator
  • ?? XPathNodeIterator es una clase simple que
    puedes utilizar para
  • iterar por los elementos devueltos en un node
    set. La propiedad Count
  • devuelve cuántos nodos han sido devueltos
  • ?? Console.WriteLine ("Select returned 0
    nodes",
  • iterator.Count)
  • ?? El método MoveNext te permite iterar por el
    conjunto de nodos. Mientras

33
XPath
  • Ejemplo XPath
  • using System
  • using System.Xml.XPath
  • class MyApp
  • static void Main ()
  • XPathDocument doc new XPathDocument
    ("Guitars.xml")
  • XPathNavigator nav doc.CreateNavigator ()
  • XPathNodeIterator iterator nav.Select
    ("/Guitars/Guitar")
  • while (iterator.MoveNext ())
  • XPathNodeIterator it iterator.Current.Select
    ("Make")
  • it.MoveNext ()
  • string make it.Current.Value
  • it iterator.Current.Select ("Model")
  • it.MoveNext ()
  • string model it.Current.Value
  • Console.WriteLine ("0 1", make, model)

34
XslTransForm
  • using System
  • using System.Xml.XPath
  • using System.Xml.Xsl
  • class MyApp
  • static void Main (string args)
  • if (args.Length lt 2)
  • Console.WriteLine ("Syntax TRANSFORM xmldoc
    xsldoc")
  • return
  • try
  • XPathDocument doc new XPathDocument (args0)
  • XslTransform xsl new XslTransform ()
  • xsl.Load (args1)
  • xsl.Transform (doc, null, Console.Out)
  • catch (Exception ex)
  • Console.WriteLine (ex.Message)

35
(No Transcript)
36
Servicios Web
37
Servicios Web XMLLa pila básica de protocolos
Publicar, buscar servicios UDDI
Descripción de servicios WSDL
Interacción de servicios SOAP
Formato de datos universal XML
Comunicaciones ubicuas Internet
38
Servicios Web Generación .NET
  • XML Web Service Incluye
  • Seguridad Basada Mensaje
  • Lógica Aplicación (Lógica Servicio)
  • XML Data Marshalling
  • Administración flujo procesos
  • Descubrir Servicios
  • UDDI
  • DISCO
  • WSDL
  • WS-Inspection
  • Acceso a Datos
  • ADO.NET

Contrato
  • Interfaces Publicos
  • SOAP
  • XML

Internet
Message
Desarrolla Solución (Diseño)
Consumir Servicio (Ejecuta)
39
SOAPEjemplo
POST /webservice3/service1.asmx HTTP/1.1 Host
localhost Content-Type text/xml
charsetutf-8 Content-Length length SOAPAction
"http//mycompany.com/webservices/Multiplicar" lt?
xml version"1.0" encoding"utf-8"?gt ltsoapEnvelop
e xmlnsxsihttp//www.w3.org/2001/XMLSchema-insta
nce xmlnsxsd"http//www.w3.org/2001/XMLSchema"
xmlnssoap"http//schemas.xmlsoap.org/soap/envel
ope/"gt ltsoapHeadergt lt/soapHeadergt
ltsoapBodygt ltMultiplicar xmlns"http//mycompa
ny.com/webservices/"gt ltn1gt2lt/n1gt
ltn2gt3lt/n2gt lt/Multiplicargt
lt/soapBodygt lt/soapEnvelopegt
HTTP/1.1 200 OK Content-Type text/xml
charsetutf-8 Content-Length length lt?xml
version"1.0" encoding"utf-8"?gt ltsoapEnvelope
xmlnsxsihttp//www.w3.org/2001/XMLSchema-instanc
e xmlnsxsdhttp//www.w3.org/2001/XMLSchema xmlns
soap"http//schemas.xmlsoap.org/soap/envelope/"gt
ltsoapBodygt ltMultiplicarResponse
xmlns"http//mycompany.com/webservices/"gt
ltMultiplicarResultgtintlt/MultiplicarResultgt
lt/MultiplicarResponsegt lt/soapBodygt lt/soapEnvel
opegt
40
WSDLEjemplo
lttypesgt ltsschema elementFormDefault"qualifi
ed" targetNamespace"http//mycompany.com/w
ebservices/"gt ltselement name"Multiplicar"gt
ltscomplexTypegt ltssequencegt
ltselement minOccurs"1" maxOccurs"1"
name"n1" type"sint" /gt ltselement
minOccurs"1" maxOccurs"1" name"n2"
type"sint" /gt lt/ssequencegt
lt/scomplexTypegt lt/selementgt
ltselement name"MultiplicarResponse"gt
ltscomplexTypegt ltssequencegt
ltselement minOccurs"1" maxOccurs"1"
name"MultiplicarResult"
type"sint" /gt lt/ssequencegt
lt/scomplexTypegt lt/selementgt
ltselement name"int" type"sint" /gt
lt/sschemagt lt/typesgt
lt?xml version"1.0" encoding"utf-8"?gt ltdefinition
sgt lttypesgt lt/typesgt ltmessagegt
lt/messagegt ltportTypegt lt/portType
ltbindinggt lt/bindinggt ltservicegt
lt/servicegt lt/definitionsgt
ltmessage name"MultiplicarSoapIn"gt ltpart
name"parameters" element"s0Multiplicar" /gt
lt/messagegt ltmessage name"MultiplicarSoapOut"gt
ltpart name"parameters" element"s0Multiplicar
Response" /gt lt/messagegt
ltbinding name"Service1Soap"
type"s0Service1Soap"gt ltsoapbinding
transport"http//schemas.xmlsoap.org/soap/http
style"document" /gt ltoperation
name"Multiplicar"gt ltsoapoperation
soapAction"http//mycompany.com/webservices/Mult
iplicar style"document" /gt
ltinputgt ltsoapbody use"literal" /gt
lt/inputgt ltoutputgt ltsoapbody
use"literal" /gt lt/outputgt
lt/operationgt lt/bindinggt
ltportType name"Service1Soap"gt ltoperation
name"Multiplicar"gt ltinput
message"s0MultiplicarSoapIn" /gt ltoutput
message"s0MultiplicarSoapOut" /gt
lt/operationgt lt/portTypegt
ltservice name"Service1"gt ltport
name"Service1Soap" binding"s0Service1Soap"gt
ltsoapaddress location"http//localhost/webser
vice3/service1.asmx" /gt lt/portgt lt/servicegt
41
XML y los servicios web
  • Mensajes de invocación/respuesta del servicio
  • SOAP - Simple Object Access Protocol
  • Descripción del servicio (interfaz)
  • WSDL - Web Services Description Language
  • Directorio de servicios
  • UDDI - Universal Description, Discovery and
    Integration

42
Por qué los servicios web se basan en
documentos XML?
lt?xml version"1.0" encoding"iso-8859-1"
?gtltSOAP-ENVEnvelope gt ltSOAP-ENVBody
gt ltVerPrecioProducto gt ltcodigogtGRP0112lt/codi
gogt lt/VerPrecioProductogt lt/SOAP-ENVBodygtlt/SOA
P-ENVEnvelopegt
Llamada a un servicio web(SOAP)
lt?xml version"1.0" encoding"iso-8859-1"
?gtltSOAP-ENVEnvelope gt ltSOAP-ENVBody
gt ltVerPrecioProductoRespuesta gt ltprecio
divisaeurogt62800lt/preciogt lt/VerPrecioProducto
Respuestagt lt/SOAP-ENVBodygtlt/SOAP-ENVEnvelopegt
Respuesta del servicio(SOAP)
Write a Comment
User Comments (0)
About PowerShow.com