SlideShare una empresa de Scribd logo
Querying Microsoft SQL
Server 2012
Exam 70-461
Capítulo 6 – XML

Julián Castiblanco P.
http://julycastiblanco.blogspot.com/
Julian_castiblancop@hotmail.com
MCT-MCSA-MCITP-MCTS SQL Server 2008/2005

Líder ITPros-DC
•
•
•
•

Ingeniero de Diseño & Automatización Electrónica
Especialista en Gerencia y Tecnologías de Información
MCT-MCSA-MCITP-MCTS en SQL SERVER
Synergy TPC SAS como consultor especializado en
bases de datos SQL Server

Julián
Castiblanco
•
•
•
•

Ingeniero de Sistemas
Especialista en Teleinformática
MCP SQL SERVER 2012
Terpel como ingeniero de infraestructura IT - DBA

Andrés
Useche
Material de trabajo
Windows Server 2012 trial
http://www.microsoft.com/en-us/download/details.aspx?id=11093

SQL Server 2012 with SP1 trial
http://www.microsoft.com/en-us/download/details.aspx?id=29066
AdventureWorks for SQL Server 2012
http://msftdbprodsamples.codeplex.com/releases/view/55330

Training kit SQL Server
Querying Microsoft SQL Server 2012 – exam 70-461
http://www.amazon.com/Training-Kit-Exam-70-461Microsoft/dp/0735666059/ref=sr_1_1?ie=UTF8&qid=1359206206&sr=81&keywords=querying+microsoft+sql+server+2012+training+kit+exam+70-461
Agenda
• Recuperación de XML mediante FOR XML
• Fragmentación de XML mediante OPENXML
• Introducción a XQuery
Cláusula FOR XML
• Devuelve XML en lugar
de filas y columnas
• Se puede configurar
para que devuelva
atributos, elementos y
esquema
• Beneficia a las
aplicaciones cliente
que funcionan
con XML
FOR XML RAW
SELECT b.Name Territorio, C.City,
COUNT(*) AS numorders
FROM sales.SalesOrderHeader AS A
INNER JOIN SALES.SalesTerritory AS B
ON A.TerritoryID=b.TerritoryID
INNER JOIN [Person].[Address] AS C
ON A.ShipToAddressID=C.AddressID
INNER JOIN [Person].[StateProvince] AS D
ON C.StateProvinceID=D.StateProvinceID
WHERE b.Name='France'
GROUP BY b.Name, C.City
FOR XML RAW
FOR XML AUTO
SELECT b.Name Territorio, C.City,
COUNT(*) AS numorders
FROM sales.SalesOrderHeader AS A
INNER JOIN SALES.SalesTerritory AS B
ON A.TerritoryID=b.TerritoryID
INNER JOIN [Person].[Address] AS C
ON A.ShipToAddressID=C.AddressID
INNER JOIN [Person].[StateProvince] AS D
ON C.StateProvinceID=D.StateProvinceID
WHERE b.Name='France'
GROUP BY b.Name, C.City
FOR XML AUTO
FOR XML EXPLICIT

SELECT top 10 1 AS Tag,
NULL AS Parent,
SalesOrderID AS
[Invoice!1!InvoiceNo!Element],
OrderDate AS [Invoice!1!Date!Element]
FROMSales.SalesOrderheader
FOR XML EXPLICIT
FOR XML PATH
-----------------------------------FOR XML PATH
---------------------------------SELECT
vC.BusinessEntityID
"@customerID"
,sc.AccountNumber "@accountNumber"
,FirstName "Customer/FirstName"
,LastName "Customer/Lastname"
FROMSALES.vIndividualCustomer as
vC INNER JOIN Sales.Customer as sc
ON vC.BusinessEntityID=
sc.PersonID
FOR XML PATH
FUNCIONES ADICIONALES

ELEMENT

TYPE

Coloca un elemento Raiz

Decidir si se mostraran valores
en nulo

Cambia atributos por Elementos

Informa al motor que la
información generada es de tipo
XML

ROOT

ABSENT|XSINIL
Demostración
Agenda
• Recuperación de XML mediante FOR XML
• Fragmentación de XML mediante OPENXML
• Introducción a XQuery
Fragmentación de XML
mediante OPENXML
• OpenXML le permite
consultar
información de tipo
XML y guardarlo en
filas y columnas.
• Openxml es un
proveedor de filas así
que puede utilizarse
el select o el select
into en la sentencia
Fragmentación de XML
mediante OPENXML
Sp_xml
_preparedocument
Xml Document

OPENXML
flags byte

Document Object
Model (DOM)
MSXML parser
(Msxmlsql.dll)

Dinamic rowset
representation

Sp_xml_removedocument
Liberación de
memoria

Representación dinámica del grupo de
datos
Fragmentación de XML
mediante OPENXML
DECLARE @xmlDOC xml set @xmlDOC ='
<hojadevida>
ELEMENTOS
<datosbasicos
nombre="Julián Castiblanco P"
edad="31"
ATRIBUTOS
correo="juliancastiblancop@gmail.com"/>
<estudios>
<estudio>
<institucion>Colegio Mayor de San Bartolomé</institucion>
<titulo>Bachiller Académico</titulo>
<fechaterminacion>1999</fechaterminacion>
TEXTOS
</estudio>
<estudio>
<institucion>Universidad de la Salle</institucion>
<titulo>Ingeniero de Diseño Automatización electronica</titulo>
<fechaterminacion>2005</fechaterminacion>
</estudio>
<estudio>
<institucion>Universidad Externado de Colombia</institucion>
<titulo>Especialista en Gerencia y Tecnologías de Información</titulo>
<fechaterminacion>2011</fechaterminacion>
</estudio>
</estudios>
</hojadevida>'
Fragmentación de XML
mediante OPENXML
declare @doc_handle int
EXECUTE sp_xml_preparedocument
@doc_handle OUTPUT, @xmlDOC
SELECT @doc_handle

• El XML es cargado en
memoria, dado que
varios podrían estar
en memoria la
variable
@doc_handle
maneja el
identificado con que
este documento
puede ser consultado
Fragmentación de XML
mediante OPENXML
SELECT
institucion,titulo,fechaTerminacion
FROM OPENXML(@doc_handle
,'/hojadevida/estudios/estudio',2)
WITH(
Institucion varchar(90) 'institucion',
titulo varchar(90) 'titulo',
fechaTerminacion int 'fechaterminacion'
)

• Con la sentencia
OPENXML Recorro
el xml cargado en
memoria y a través
de la sentencia
WITH los elemento
hijos que quiero
mapear como
columnas

http://technet.microsoft.com/en-us/library/ms187897.aspx
Demostración
Agenda
• Recuperación de XML mediante FOR XML
• Fragmentación de XML mediante OPENXML
• Introducción a XQuery
Introducción a XQuery
Introducción a XQuery
Root
InventarioCarrefo
ur

ElementNode
Productosdeaseo

ElementNode
Producto

Element Nombre

Text Node

Atribute node

Element Tamaño

Text Node

Element
PrecioDetal

TextNode
Introducción a XQuery
Namespace
<InventarioCarrefour xmlns:p="http://www.inventario.com">
<ProductosDeAseo>
Parent Node
<Producto>
<nombre>Jabón FAB</nombre>
Child Nodes
<Tamano>Bolsa por 5 libras</Tamano>
<PrecioDetal>7890</PrecioDetal>
<UnidadesDisponibles>230</UnidadesDisponibles>
Text Node
</Producto>
<Producto>
<nombre>Shampoo Pantene</nombre>
<Tamano>1000ml</Tamano>
<PrecioDetal>13000</PrecioDetal>
<UnidadesDisponibles>34</UnidadesDisponibles>
</Producto>
<Producto>
<nombre>Cepillo de Piso</nombre>
<Tamano>No aplica</Tamano>
<PrecioDetal>980</PrecioDetal>
<UnidadesDisponibles>1200</UnidadesDisponibles>
</Producto>
</ProductosDeAseo>
<encargado nombre="William Barrera" depto="AdministracionRecursos" />
</InventarioCarrefour>
Root
Introducción a XQuery
declarativo

W3C
estándar

FLWOR

Case
Sensitive

Usa Xpath

http://www.w3schools.com/xpath/xpath_intro.asp
Introducción a XQuery
INPUT
• Doc() documento xml
• Collection() varios
xmls

OUTPUT
• Query: xml
• Exists : bit
• Value: valor especifico
• Nodes: salida tipo tabla
• Modify: manipular el xml

Esquema XML
• Basado en esquema ó no tipado.
Introducción a XQuery

Xpath Abreviaciones
• “default”
• @
• // , /
• *

Common Functions
• Position()
• Count()
• Round()
• Contains()
• Substring()
Introducción a XQuery
INPUT
• Doc() documento xml
• Collection() varios
xmls

OUTPUT
• Query: xml
• Exists : bit
• Value: valor especifico
• Nodes: salida tipo tabla
• Modify: manipular el xml

Esquema XML
• Basado en esquema o no tipado.
Modificación de XML con XQuery
insert
delete
Replace value of
Demostración
Introducción a Xquery-FLWOR
FLWOR
• For
• Let
• Where
• Order by
• Return

Permite especificar en
que nodo del xml
quiero iniciar mi
consulta
Introducción a Xquery-FLWOR
FLWOR
• For
• Let
• Where
• Order by
• Return

Se utiliza para asignar
valor a una variable,
combinado con
funciones, puedo
devolver una función
que entre el número
de nodos de un tipo
dentro del xml.
Introducción a Xquery-FLWOR
FLWOR
• For
• Let
• Where
• Order by
• Return

Al igual que en el
transact SQL
convencional, esta
función me permite
filtrar la información
que debo devolver.
Introducción a Xquery-FLWOR
FLWOR
• For
• Let
• Where
• Order by
• Return

Permite definir un
ordenamiento
diferente en el xml
consultado. Por
ejemplo que
reorganice los nodos
de salida, basado en el
valor de un atributo.
Introducción a Xquery-FLWOR
FLWOR
• For
• Let
• Where
• Order by
• Return

Es el equivalente al
SELECT en transact sql
y define la información
que va a ser retornada
por la consulta.
Demostración

Más contenido relacionado

PDF
JAVA ORIENTADO A OBJETOS - COLECCIONES
PDF
PDF
JAVA OO - TEMA 08 - COLECCIONES
PPTX
PDF
Base de datos
JAVA ORIENTADO A OBJETOS - COLECCIONES
JAVA OO - TEMA 08 - COLECCIONES
Base de datos

La actualidad más candente (18)

PDF
Evolucion de PostgreSQL hasta 9.4
PPTX
Espacio de nombres system.Data.Oledb
PPTX
ESPACIO DE NOMBRES SYSTEM.DATA.OLEDB
PDF
MySql
PPTX
Motor De Bases De Datos Oracle
PDF
MySQL de 1995 a 5.5
PDF
Symfony 2 CMF
PDF
Integración de aplicaciones Java
PDF
Taller programación web ajax con jquery
PDF
Abf leccion 18
PPTX
Curso php dia4
PPTX
PPTX
Diapositivas transact sql
PPTX
Java con base de datos
PPTX
PPTX
Ddl 00
Evolucion de PostgreSQL hasta 9.4
Espacio de nombres system.Data.Oledb
ESPACIO DE NOMBRES SYSTEM.DATA.OLEDB
MySql
Motor De Bases De Datos Oracle
MySQL de 1995 a 5.5
Symfony 2 CMF
Integración de aplicaciones Java
Taller programación web ajax con jquery
Abf leccion 18
Curso php dia4
Diapositivas transact sql
Java con base de datos
Ddl 00
Publicidad

Destacado (20)

PPS
Eddaflyteleport3
PPTX
Developing for Office 2007
DOCX
Conalep tlalnepantla 1
PDF
AnaVANET: an experiment and visualization tool for vehicular networks
PPS
To a nice person
PDF
Mba postgrado
PDF
Sickle cell disease” (SCD): a project of curative treatment and informatics...
PPTX
LA DIGITALIZACIÓN DE LOS RETAILERS EN EUROPA: COMO ATRAER CLIENTES A TIENDAS...
PPT
Building An Online Marketing Strategy
PPT
El pucherito
PPTX
Conectivismo - REDEI
PDF
Depot Square Unified Downtown Development Project Special Permit Application
ODP
Oportunidades de Negocios en la Web Social
PPS
Galicia de los mil rios
PPT
Proyecto Aulas Virtuales 2
DOC
Planpyme
PDF
Thankful for creative minds, Twitter, beer and...
DOCX
In Medias Res
PDF
Sida 1 de diciembre
Eddaflyteleport3
Developing for Office 2007
Conalep tlalnepantla 1
AnaVANET: an experiment and visualization tool for vehicular networks
To a nice person
Mba postgrado
Sickle cell disease” (SCD): a project of curative treatment and informatics...
LA DIGITALIZACIÓN DE LOS RETAILERS EN EUROPA: COMO ATRAER CLIENTES A TIENDAS...
Building An Online Marketing Strategy
El pucherito
Conectivismo - REDEI
Depot Square Unified Downtown Development Project Special Permit Application
Oportunidades de Negocios en la Web Social
Galicia de los mil rios
Proyecto Aulas Virtuales 2
Planpyme
Thankful for creative minds, Twitter, beer and...
In Medias Res
Sida 1 de diciembre
Publicidad

Similar a XQuery y XPath for SQL Server 2012 itpros dc_chapter6 (20)

PPT
Capacitacion xquery
PDF
LM-UT7: Almacenamiento XML
DOCX
Almdedat
PPT
Introducción a XML Schema
PPT
Introducción a XML
PPTX
Asegúr@IT 7: Serialized SQL Injection
PPT
10. Usando Datos Xml
PDF
Diseño de Ontologías: Protégé - OWL: SPARQL
PPTX
Bases de Datos XML
PPTX
Blind X Path Injection
PPTX
PDF
Datos En La Web - Clase 2
PDF
(In) seguridad web
PDF
Datos En La Web - Clase 1
PPT
Oracle xmldb
PPTX
PPTX
Videoconferencia
Capacitacion xquery
LM-UT7: Almacenamiento XML
Almdedat
Introducción a XML Schema
Introducción a XML
Asegúr@IT 7: Serialized SQL Injection
10. Usando Datos Xml
Diseño de Ontologías: Protégé - OWL: SPARQL
Bases de Datos XML
Blind X Path Injection
Datos En La Web - Clase 2
(In) seguridad web
Datos En La Web - Clase 1
Oracle xmldb
Videoconferencia

Más de Julián Castiblanco (20)

PPTX
70461 Sesion2 Uso del SELECT, DISTINCT, CASE
PPTX
Descubriendo los Datos - Bodegas de datos
PPTX
Tech Talk Live - ITPROSDC - Big data con july
PPTX
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4
PPTX
Global Azure Cloud Camp Bogota Introduccion Azure datalake
PPTX
Lecciones aprendidas SQL Server AlwaryOn
PDF
Sql saturday 448 migración de bases de datos sql server hacia azure sqldb
PPTX
Databaseadmonfundamentalitprosdcchapter6
DOCX
Taller de sql server no 3
PPTX
Optimización de motores sql server 24 horas SQL Pass
PDF
Database admonfundamental itprosdc_chapter2
PDF
Database Fundamentals - Sesión 1 - SQL Server
PDF
Carbura tusql sesion2_slideshare
PDF
Carbura tusql sesion1_slideshare
PDF
Tarea dqs en ssis nunca termina
PDF
Características Adminsitración SQL Server 2012 Parte 3
PDF
70 462 Instalación SQL Server 2012
PDF
Instalación de Sql server 2014 ctp2 sobre azure
PPTX
Agrupando datos en SQL Server
PDF
Taller básico de JOINS, SUBQUERYING, APPLY, CTE
70461 Sesion2 Uso del SELECT, DISTINCT, CASE
Descubriendo los Datos - Bodegas de datos
Tech Talk Live - ITPROSDC - Big data con july
Global Azure Bootcamp 2016 Bogota SQL2016 dba IaaS PaaS v4
Global Azure Cloud Camp Bogota Introduccion Azure datalake
Lecciones aprendidas SQL Server AlwaryOn
Sql saturday 448 migración de bases de datos sql server hacia azure sqldb
Databaseadmonfundamentalitprosdcchapter6
Taller de sql server no 3
Optimización de motores sql server 24 horas SQL Pass
Database admonfundamental itprosdc_chapter2
Database Fundamentals - Sesión 1 - SQL Server
Carbura tusql sesion2_slideshare
Carbura tusql sesion1_slideshare
Tarea dqs en ssis nunca termina
Características Adminsitración SQL Server 2012 Parte 3
70 462 Instalación SQL Server 2012
Instalación de Sql server 2014 ctp2 sobre azure
Agrupando datos en SQL Server
Taller básico de JOINS, SUBQUERYING, APPLY, CTE

Último (20)

PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
Presentación de Redes de Datos modelo osi
PDF
CyberOps Associate - Cisco Networking Academy
PDF
Calidad desde el Docente y la mejora continua .pdf
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
clase auditoria informatica 2025.........
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
taller de informática - LEY DE OHM
PPTX
Presentación PASANTIAS AuditorioOO..pptx
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
historia_web de la creacion de un navegador_presentacion.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Presentación de Redes de Datos modelo osi
CyberOps Associate - Cisco Networking Academy
Calidad desde el Docente y la mejora continua .pdf
introduccion a las_web en el 2025_mejoras.ppt
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Propuesta BKP servidores con Acronis1.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
clase auditoria informatica 2025.........
Influencia-del-uso-de-redes-sociales.pdf
Plantilla para Diseño de Narrativas Transmedia.pdf
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
El-Gobierno-Electrónico-En-El-Estado-Bolivia
taller de informática - LEY DE OHM
Presentación PASANTIAS AuditorioOO..pptx

XQuery y XPath for SQL Server 2012 itpros dc_chapter6

  • 1. Querying Microsoft SQL Server 2012 Exam 70-461 Capítulo 6 – XML Julián Castiblanco P. http://julycastiblanco.blogspot.com/ Julian_castiblancop@hotmail.com MCT-MCSA-MCITP-MCTS SQL Server 2008/2005 Líder ITPros-DC
  • 2. • • • • Ingeniero de Diseño & Automatización Electrónica Especialista en Gerencia y Tecnologías de Información MCT-MCSA-MCITP-MCTS en SQL SERVER Synergy TPC SAS como consultor especializado en bases de datos SQL Server Julián Castiblanco • • • • Ingeniero de Sistemas Especialista en Teleinformática MCP SQL SERVER 2012 Terpel como ingeniero de infraestructura IT - DBA Andrés Useche
  • 3. Material de trabajo Windows Server 2012 trial http://www.microsoft.com/en-us/download/details.aspx?id=11093 SQL Server 2012 with SP1 trial http://www.microsoft.com/en-us/download/details.aspx?id=29066 AdventureWorks for SQL Server 2012 http://msftdbprodsamples.codeplex.com/releases/view/55330 Training kit SQL Server Querying Microsoft SQL Server 2012 – exam 70-461 http://www.amazon.com/Training-Kit-Exam-70-461Microsoft/dp/0735666059/ref=sr_1_1?ie=UTF8&qid=1359206206&sr=81&keywords=querying+microsoft+sql+server+2012+training+kit+exam+70-461
  • 4. Agenda • Recuperación de XML mediante FOR XML • Fragmentación de XML mediante OPENXML • Introducción a XQuery
  • 5. Cláusula FOR XML • Devuelve XML en lugar de filas y columnas • Se puede configurar para que devuelva atributos, elementos y esquema • Beneficia a las aplicaciones cliente que funcionan con XML
  • 6. FOR XML RAW SELECT b.Name Territorio, C.City, COUNT(*) AS numorders FROM sales.SalesOrderHeader AS A INNER JOIN SALES.SalesTerritory AS B ON A.TerritoryID=b.TerritoryID INNER JOIN [Person].[Address] AS C ON A.ShipToAddressID=C.AddressID INNER JOIN [Person].[StateProvince] AS D ON C.StateProvinceID=D.StateProvinceID WHERE b.Name='France' GROUP BY b.Name, C.City FOR XML RAW
  • 7. FOR XML AUTO SELECT b.Name Territorio, C.City, COUNT(*) AS numorders FROM sales.SalesOrderHeader AS A INNER JOIN SALES.SalesTerritory AS B ON A.TerritoryID=b.TerritoryID INNER JOIN [Person].[Address] AS C ON A.ShipToAddressID=C.AddressID INNER JOIN [Person].[StateProvince] AS D ON C.StateProvinceID=D.StateProvinceID WHERE b.Name='France' GROUP BY b.Name, C.City FOR XML AUTO
  • 8. FOR XML EXPLICIT SELECT top 10 1 AS Tag, NULL AS Parent, SalesOrderID AS [Invoice!1!InvoiceNo!Element], OrderDate AS [Invoice!1!Date!Element] FROMSales.SalesOrderheader FOR XML EXPLICIT
  • 9. FOR XML PATH -----------------------------------FOR XML PATH ---------------------------------SELECT vC.BusinessEntityID "@customerID" ,sc.AccountNumber "@accountNumber" ,FirstName "Customer/FirstName" ,LastName "Customer/Lastname" FROMSALES.vIndividualCustomer as vC INNER JOIN Sales.Customer as sc ON vC.BusinessEntityID= sc.PersonID FOR XML PATH
  • 10. FUNCIONES ADICIONALES ELEMENT TYPE Coloca un elemento Raiz Decidir si se mostraran valores en nulo Cambia atributos por Elementos Informa al motor que la información generada es de tipo XML ROOT ABSENT|XSINIL
  • 12. Agenda • Recuperación de XML mediante FOR XML • Fragmentación de XML mediante OPENXML • Introducción a XQuery
  • 13. Fragmentación de XML mediante OPENXML • OpenXML le permite consultar información de tipo XML y guardarlo en filas y columnas. • Openxml es un proveedor de filas así que puede utilizarse el select o el select into en la sentencia
  • 14. Fragmentación de XML mediante OPENXML Sp_xml _preparedocument Xml Document OPENXML flags byte Document Object Model (DOM) MSXML parser (Msxmlsql.dll) Dinamic rowset representation Sp_xml_removedocument Liberación de memoria Representación dinámica del grupo de datos
  • 15. Fragmentación de XML mediante OPENXML DECLARE @xmlDOC xml set @xmlDOC =' <hojadevida> ELEMENTOS <datosbasicos nombre="Julián Castiblanco P" edad="31" ATRIBUTOS correo="juliancastiblancop@gmail.com"/> <estudios> <estudio> <institucion>Colegio Mayor de San Bartolomé</institucion> <titulo>Bachiller Académico</titulo> <fechaterminacion>1999</fechaterminacion> TEXTOS </estudio> <estudio> <institucion>Universidad de la Salle</institucion> <titulo>Ingeniero de Diseño Automatización electronica</titulo> <fechaterminacion>2005</fechaterminacion> </estudio> <estudio> <institucion>Universidad Externado de Colombia</institucion> <titulo>Especialista en Gerencia y Tecnologías de Información</titulo> <fechaterminacion>2011</fechaterminacion> </estudio> </estudios> </hojadevida>'
  • 16. Fragmentación de XML mediante OPENXML declare @doc_handle int EXECUTE sp_xml_preparedocument @doc_handle OUTPUT, @xmlDOC SELECT @doc_handle • El XML es cargado en memoria, dado que varios podrían estar en memoria la variable @doc_handle maneja el identificado con que este documento puede ser consultado
  • 17. Fragmentación de XML mediante OPENXML SELECT institucion,titulo,fechaTerminacion FROM OPENXML(@doc_handle ,'/hojadevida/estudios/estudio',2) WITH( Institucion varchar(90) 'institucion', titulo varchar(90) 'titulo', fechaTerminacion int 'fechaterminacion' ) • Con la sentencia OPENXML Recorro el xml cargado en memoria y a través de la sentencia WITH los elemento hijos que quiero mapear como columnas http://technet.microsoft.com/en-us/library/ms187897.aspx
  • 19. Agenda • Recuperación de XML mediante FOR XML • Fragmentación de XML mediante OPENXML • Introducción a XQuery
  • 21. Introducción a XQuery Root InventarioCarrefo ur ElementNode Productosdeaseo ElementNode Producto Element Nombre Text Node Atribute node Element Tamaño Text Node Element PrecioDetal TextNode
  • 22. Introducción a XQuery Namespace <InventarioCarrefour xmlns:p="http://www.inventario.com"> <ProductosDeAseo> Parent Node <Producto> <nombre>Jabón FAB</nombre> Child Nodes <Tamano>Bolsa por 5 libras</Tamano> <PrecioDetal>7890</PrecioDetal> <UnidadesDisponibles>230</UnidadesDisponibles> Text Node </Producto> <Producto> <nombre>Shampoo Pantene</nombre> <Tamano>1000ml</Tamano> <PrecioDetal>13000</PrecioDetal> <UnidadesDisponibles>34</UnidadesDisponibles> </Producto> <Producto> <nombre>Cepillo de Piso</nombre> <Tamano>No aplica</Tamano> <PrecioDetal>980</PrecioDetal> <UnidadesDisponibles>1200</UnidadesDisponibles> </Producto> </ProductosDeAseo> <encargado nombre="William Barrera" depto="AdministracionRecursos" /> </InventarioCarrefour> Root
  • 23. Introducción a XQuery declarativo W3C estándar FLWOR Case Sensitive Usa Xpath http://www.w3schools.com/xpath/xpath_intro.asp
  • 24. Introducción a XQuery INPUT • Doc() documento xml • Collection() varios xmls OUTPUT • Query: xml • Exists : bit • Value: valor especifico • Nodes: salida tipo tabla • Modify: manipular el xml Esquema XML • Basado en esquema ó no tipado.
  • 25. Introducción a XQuery Xpath Abreviaciones • “default” • @ • // , / • * Common Functions • Position() • Count() • Round() • Contains() • Substring()
  • 26. Introducción a XQuery INPUT • Doc() documento xml • Collection() varios xmls OUTPUT • Query: xml • Exists : bit • Value: valor especifico • Nodes: salida tipo tabla • Modify: manipular el xml Esquema XML • Basado en esquema o no tipado.
  • 27. Modificación de XML con XQuery insert delete Replace value of
  • 29. Introducción a Xquery-FLWOR FLWOR • For • Let • Where • Order by • Return Permite especificar en que nodo del xml quiero iniciar mi consulta
  • 30. Introducción a Xquery-FLWOR FLWOR • For • Let • Where • Order by • Return Se utiliza para asignar valor a una variable, combinado con funciones, puedo devolver una función que entre el número de nodos de un tipo dentro del xml.
  • 31. Introducción a Xquery-FLWOR FLWOR • For • Let • Where • Order by • Return Al igual que en el transact SQL convencional, esta función me permite filtrar la información que debo devolver.
  • 32. Introducción a Xquery-FLWOR FLWOR • For • Let • Where • Order by • Return Permite definir un ordenamiento diferente en el xml consultado. Por ejemplo que reorganice los nodos de salida, basado en el valor de un atributo.
  • 33. Introducción a Xquery-FLWOR FLWOR • For • Let • Where • Order by • Return Es el equivalente al SELECT en transact sql y define la información que va a ser retornada por la consulta.