Este documento describe la transformación de documentos XML mediante XSLT. XSLT es un lenguaje de transformación de documentos XML que permite convertir un documento XML en otro formato mediante la aplicación de plantillas. El documento explica conceptos clave de XSLT como plantillas, aplicación de plantillas, obtención de valores, creación de elementos y atributos, y estructura básica de una hoja de estilos XSLT.
This tool is provided to assist you in making a poster for the poster session during the European Association of Urological Nurses (EAUN) Annual Meeting.
Today, most any application can be “Dockerized.” However, there are special challenges when deploying a distributed application such as Spark on containers. This session will describe how to overcome these challenges in deploying Spark on Docker containers, with many practical tips and techniques for running Spark in a container environment.
Containers are typically used to run stateless applications on a single host. There are significant real-world enterprise requirements that need to be addressed when running a stateful, distributed application in a secure multi-host container environment.
There are decisions that need to be made concerning which tools and infrastructure to use. There are many choices with respect to container managers, orchestration frameworks, and resource schedulers that are readily available today and some that may be available tomorrow including:]
• Mesos
• Kubernetes
• Docker Swarm
Each has its own strengths and weaknesses; each has unique characteristics that may make it suitable, or unsuitable, for Spark. Understanding these differences is critical to the successful deployment of Spark on Docker containers.
This session will describe the work done by the BlueData engineering team to run Spark inside containers, on a distributed platform, including the evaluation of various orchestration frameworks and lessons learned. You will learn how to apply practical networking and storage techniques to achieve high performance and agility in a distributed, container environment.
Speaker
Thomas Phelan, Chief Architect, Blue Data, Inc
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )SANG WON PARK
몇년 전부터 Data Architecture의 변화가 빠르게 진행되고 있고,
그 중 Cloud DW는 기존 Data Lake(Hadoop 기반)의 한계(성능, 비용, 운영 등)에 대한 대안으로 주목받으며,
많은 기업들이 이미 도입했거나, 도입을 검토하고 있다.
본 자료는 이러한 Cloud DW에 대해서 개념적으로 이해하고,
시장에 존재하는 다양한 Cloud DW 중에서 기업의 환경에 맞는 제품이 어떤 것인지 성능/비용 관점으로 비교했다.
- 왜기업들은 CloudDW에주목하는가?
- 시장에는어떤 제품들이 있는가?
- 우리Biz환경에서는 어떤 제품을 도입해야 하는가?
- CloudDW솔루션의 성능은?
- 기존DataLake(EMR)대비 성능은?
- 유사CloudDW(snowflake vs redshift) 대비성능은?
앞으로도 Data를 둘러싼 시장은 Cloud DW를 기반으로 ELT, Mata Mesh, Reverse ETL등 새로운 생테계가 급속하게 발전할 것이고,
이를 위한 데이터 엔지니어/데이터 아키텍트 관점의 기술적 검토와 고민이 필요할 것 같다.
https://blog.naver.com/freepsw/222654809552
Presentation / Workshop which will teach you the core patterns, concepts and visualisation options of D3.js (v4). Accompanying exercises can be found here: https://github.com/josdirksen/d3exercises
Everything you ever needed to know about Kafka on Kubernetes but were afraid ...HostedbyConfluent
Kubernetes became the de-facto standard for running cloud-native applications. And many users turn to it also to run stateful applications such as Apache Kafka. You can use different tools to deploy Kafka on Kubernetes - write your own YAML files, use Helm Charts, or go for one of the available operators. But there is one thing all of these have in common. You still need very good knowledge of Kubernetes to make sure your Kafka cluster works properly in all situations. This talk will cover different Kubernetes features such as resources, affinity, tolerations, pod disruption budgets, topology spread constraints and more. And it will explain why they are important for Apache Kafka and how to use them. If you are interested in running Kafka on Kubernetes and do not know all of these, this is a talk for you.
What is XML
• XML stands for EXtensible Markup Language
• XML was designed to carry data, not to display data
• XML developed by the World Wide Web
Consortium (www.W3C.org)
• XML like HTML is a mark up language, but
unlike HTML it doesn’t have predefined
elements
XML Versions
version XML 1.0 was initially defined in 1998
version XML 1.1 was initially published on 4th Feb 2004
Example language of xml structure
XHTML
WML AND WAP
SVG
Uses XML
WEB DEVELOPER
TRANSPORTING AND SHARING DATA
STORING DATA
DOCUMENTATION
ANDROID DEVELOPER
XML Doc Advantages
Easy data sharing, text documents are readable between any device.
Easy to learn.
Extendable.
Freedom to define tags.
Easy searching.
Disadvantages of XML
The redundancy may affect application efficiency through higher storage, transmission and processing costs.
XML Document Components
The various components of an XML document used for representing data in a hierarchical order are:
Processing Instruction (PI)
Tags
Elements
Content
Attributes
Entities
Comments
This tool is provided to assist you in making a poster for the poster session during the European Association of Urological Nurses (EAUN) Annual Meeting.
Today, most any application can be “Dockerized.” However, there are special challenges when deploying a distributed application such as Spark on containers. This session will describe how to overcome these challenges in deploying Spark on Docker containers, with many practical tips and techniques for running Spark in a container environment.
Containers are typically used to run stateless applications on a single host. There are significant real-world enterprise requirements that need to be addressed when running a stateful, distributed application in a secure multi-host container environment.
There are decisions that need to be made concerning which tools and infrastructure to use. There are many choices with respect to container managers, orchestration frameworks, and resource schedulers that are readily available today and some that may be available tomorrow including:]
• Mesos
• Kubernetes
• Docker Swarm
Each has its own strengths and weaknesses; each has unique characteristics that may make it suitable, or unsuitable, for Spark. Understanding these differences is critical to the successful deployment of Spark on Docker containers.
This session will describe the work done by the BlueData engineering team to run Spark inside containers, on a distributed platform, including the evaluation of various orchestration frameworks and lessons learned. You will learn how to apply practical networking and storage techniques to achieve high performance and agility in a distributed, container environment.
Speaker
Thomas Phelan, Chief Architect, Blue Data, Inc
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )SANG WON PARK
몇년 전부터 Data Architecture의 변화가 빠르게 진행되고 있고,
그 중 Cloud DW는 기존 Data Lake(Hadoop 기반)의 한계(성능, 비용, 운영 등)에 대한 대안으로 주목받으며,
많은 기업들이 이미 도입했거나, 도입을 검토하고 있다.
본 자료는 이러한 Cloud DW에 대해서 개념적으로 이해하고,
시장에 존재하는 다양한 Cloud DW 중에서 기업의 환경에 맞는 제품이 어떤 것인지 성능/비용 관점으로 비교했다.
- 왜기업들은 CloudDW에주목하는가?
- 시장에는어떤 제품들이 있는가?
- 우리Biz환경에서는 어떤 제품을 도입해야 하는가?
- CloudDW솔루션의 성능은?
- 기존DataLake(EMR)대비 성능은?
- 유사CloudDW(snowflake vs redshift) 대비성능은?
앞으로도 Data를 둘러싼 시장은 Cloud DW를 기반으로 ELT, Mata Mesh, Reverse ETL등 새로운 생테계가 급속하게 발전할 것이고,
이를 위한 데이터 엔지니어/데이터 아키텍트 관점의 기술적 검토와 고민이 필요할 것 같다.
https://blog.naver.com/freepsw/222654809552
Presentation / Workshop which will teach you the core patterns, concepts and visualisation options of D3.js (v4). Accompanying exercises can be found here: https://github.com/josdirksen/d3exercises
Everything you ever needed to know about Kafka on Kubernetes but were afraid ...HostedbyConfluent
Kubernetes became the de-facto standard for running cloud-native applications. And many users turn to it also to run stateful applications such as Apache Kafka. You can use different tools to deploy Kafka on Kubernetes - write your own YAML files, use Helm Charts, or go for one of the available operators. But there is one thing all of these have in common. You still need very good knowledge of Kubernetes to make sure your Kafka cluster works properly in all situations. This talk will cover different Kubernetes features such as resources, affinity, tolerations, pod disruption budgets, topology spread constraints and more. And it will explain why they are important for Apache Kafka and how to use them. If you are interested in running Kafka on Kubernetes and do not know all of these, this is a talk for you.
What is XML
• XML stands for EXtensible Markup Language
• XML was designed to carry data, not to display data
• XML developed by the World Wide Web
Consortium (www.W3C.org)
• XML like HTML is a mark up language, but
unlike HTML it doesn’t have predefined
elements
XML Versions
version XML 1.0 was initially defined in 1998
version XML 1.1 was initially published on 4th Feb 2004
Example language of xml structure
XHTML
WML AND WAP
SVG
Uses XML
WEB DEVELOPER
TRANSPORTING AND SHARING DATA
STORING DATA
DOCUMENTATION
ANDROID DEVELOPER
XML Doc Advantages
Easy data sharing, text documents are readable between any device.
Easy to learn.
Extendable.
Freedom to define tags.
Easy searching.
Disadvantages of XML
The redundancy may affect application efficiency through higher storage, transmission and processing costs.
XML Document Components
The various components of an XML document used for representing data in a hierarchical order are:
Processing Instruction (PI)
Tags
Elements
Content
Attributes
Entities
Comments
en esta presentación encontrará todo lo que necesita saber sobre XML en el motor de base de datos SQL Server 2012,2008,2005. Este material fue diseñado para adquirir los conocimientos y presentar el examen 70-461 Querying SQL Server 2012
Vídeo de la presentación: http://www.youtube.com/watch?v=-7HttBJnk9g
XML (eXtensible Markup Language, Lenguaje de marcas extensible)
- Aplicación XML = Lenguaje de marcado = Vocabulario
- Ejemplos: DocBook, Chemical Markup Language, Keyhole Markup Language, Mathematical Markup Language, Open Document, Open XML Format, Scalable Vector Graphics, Systems Byology Markup Language
Más información:
- http://accesibilidadweb.dlsi.ua.es
- http://desarrolloweb.dlsi.ua.es
Autor: Sergio Luján Mora, profesor de la Universidad de Alicante (http://www.ua.es)
Este manual tiene como fin resumir los principales elementos xhtml y la
metodología para manipular por medio de estilos y javascript las características
de los elementos xhtml definidos en un documento html.
Although RDF can be considered the corner stone of semantic web and knowledge graphs, it has not been embraced by everyday programmers and software architects who want to safely create and access well-structured data. There is a lack of common tools and methodologies that are available in more conventional settings to improve data quality by defining schemas that can later be validated. Two technologies have recently been proposed for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL). In the talk, we will briefly introduce both technologies using some examples and compare them. We will also present some challenges and applications related with RDF data shapes.
Talk given at: KTH Royal Institute of Technology, School of Industrial Engineering and Management, Mechatronics Division, 7th February, 2020
Although RDF is a corner stone of semantic web and knowledge graphs, it has not been embraced by everyday programmers and software architects who need to safely create and access well-structured data. There is a lack of common tools and methodologies that are available in more conventional settings to improve data quality by defining schemas that can later be validated. Two technologies have recently been proposed for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL). In the talk, we will review the history and motivation of both technologies. We will also and enumerate some challenges and future work with regards to RDF validation.
Como publicar los datos: datos abiertos y enlazados
Charla impartida en Jornadas Open Data y Transparencia: Ayuntamiento de Oviedo
11 de septiembre de 2017
Escaneo y eliminación de malware en el equiponicromante2000
El malware tiene muchas caras, y es que los programas maliciosos se reproducen en los ordenadores de diferentes formas. Ya se trate de virus, de programas espía o de troyanos, la presencia de software malicioso en los sistemas informáticos siempre debería evitarse. Aquí te muestro como trabaja un anti malware a la hora de analizar tu equipo
Los desafíos de calidad de software que nos trae la IA y los LLMsFederico Toledo
En esta charla, nos sumergiremos en los desafíos emergentes que la inteligencia artificial (IA) y los Large Language Models (LLMs) traen al mundo de la calidad del software y el testing. Exploraremos cómo la integración, uso o diseño de modelos de IA plantean nuevos retos, incluyendo la calidad de datos y detección de sesgos, sumando la complejidad de probar algo no determinístico. Revisaremos algunas propuestas que se están llevando adelante para ajustar nuestras tareas de testing al desarrollo de este tipo de sistemas, incluyendo enfoques de pruebas automatizadas y observabilidad.
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
2. Hojas de estilos para XML
Antecedentes
SGML tenía DSSSL (Document Style Semantics and
Specification Language)
Para XML se optó por crear XSL (XML Stylesheet
Language)
Posteriormente se dividió en 3 partes:
XSLT: Transformación de documentos XML
XPath: Especificar caminos y expresiones XML
XSL-FO: Objetos de formateo
3. XSLT
Lenguaje de plantillas
Recorre el árbol recursivamente encajando plantillas
Version 1.0 (1999)
Versión más popular
Incluido en navegadores
Versión 2.0 (2007)
Basada en Xpath 2.0
Facilidades para agrupación y tipos de datos
Creación de funciones
Múltiples documentos de salida
Problema: No soportada en navegadores ni en algunos sistemas
Versión 3.0 (en desarrollo)
4. vacia.xsl
Estructura básica de XSLT
Espacio de nombres
http://www.w3.org/1999/XSL/Transform
Elemento raíz: stylesheet
Aunque no se definan plantillas, se recorre el árbol,
mostrando elementos por defecto
Ejemplo: Hoja de estilos vacía:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--…plantillas… -->
</xsl:stylesheet>
xsltproc vacia.xsl documento.xml
6. Lenguaje XSLT
Lenguaje declarativo basado en plantillas: “templates”
Varias plantillas predefinidas: recorren el árbol
mostrando los elementos
Una transformación se basa en declarar nuevas plantillas
7. Encaje de plantillas
El atributo match de una plantilla es una expresión XPath
Funcionamiento:
El procesador recorre el árbol
Si encuentra una plantilla que encaja con el nodo actual
Mete los elementos que hay dentro de la plantilla en la salida
<xsl:template match="/">
<html>
<body>
<h1>Pedido</h1>
</body>
</html>
</xsl:template>
8. Aplicando plantillas
“apply-templates” indica al procesador que continúe
aplicando plantillas
Por defecto, continúa recursivamente a partir del nodo actual
Mediante el atributo select se pueden otras partes del árbol
El atributo select toma una expresión XPath
<xsl:template match="/">
<html>
<body>
<h1>Pedido</h1>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="/">
<html>
<body>
<h1>Pedido</h1>
<xsl:apply-templates select=“//producto[2]”/>
</body>
</html>
</xsl:template>
9. Obteniendo valores
“value-of” permite obtener un valor
El valor a obtener se indica mediante el atributo select
Admite cualquier una expresión XPath
<xsl:template match="producto">
<p>
<xsl:value-of select="nombre" />
</p>
</xsl:template>
<xsl:template match="producto">
<p>
<xsl:value-of select="nombre" />,
<xsl:value-of select="@codigo" />
</p>
</xsl:template>
10. Asociar XSLT a XML
En un documento XML se puede incluir:
<?xml-stylesheet
type="text/xsl"
href="documento.xsl" ?>
Transforma el documento "al vuelo" en el navegador
NOTA: Chrome no realiza la transformación en ficheros
locales por motivos de seguridad
11. Modos de recorrido
Mediante el atributo “mode” se pueden indicar diferentes
modos de recorrido
Útil para generar tablas de contenido
<xsl:template match="/">
<html>
<body>
<h1>Pedido</h1>
<p>Productos:
<xsl:apply-templates mode="nombres" />
</p>
<h2>Detalle</h2>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="producto"
mode="nombres">
<xsl:value-of select="nombre" /> |
</xsl:template>
<xsl:template match="producto">
<p><xsl:value-of select="nombre" />,
<xsl:value-of select="@codigo" />,
<xsl:value-of select="cantidad" />
</p>
</xsl:template>
12. Plantillas predefinidas
Las plantillas predefinidas recorren el árbol y muestran el
texto y ignorando el resto
<xsl:template match="text()|@*">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="*|/">
<xsl:value-of apply-templates />
</xsl:template>
<xsl:template match="processing-instruction()
|comment()"
/>
Nodos de texto y atributos:
los muestra
Elementos y nodo raíz:
Continúa recorrido recursivo
Comentarios e instrucciones
de procesamiento:
los ignora
13. Árbol de resultado
XSLT va generando un árbol de resultado
Se incluyen todos los elementos de un espacio de
nombres distinto al de XSLT
Se añaden las declaraciones de espacios de nombres
correspondientes
Se puede controlar el proceso mediante:
exclude-result-prefixes:
namespace-alias
extension-element-prefixes
xsl:output permite indicar el tipo de salida
method puede ser "xml", "html", "text"
encoding indica el tipo de codificación
22. Creación de Instrucciones de procesamiento
Mediante xsl:processing-instruction
<xsl:template match="producto">
<xsl:processing-instruction name="PROD">
<xsl:value-of select="@codigo" />
</xsl:processing-instruction>
<p>
<xsl:value-of select="nombre" />
</p>
</xsl:template>
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<?PROD G23>
<p>
Grapadora
</p>
23. Copiar contenido
2 formas
xsl:copy: copia un nodo
xsl:copy-of: copia un fragmento del árbol
<xsl:template match="producto">
<item>
<xsl:copy-of select="." />
</item>
</xsl:template>
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<item>
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
</item>
24. Condicional: if
Mediante xsl:if se pueden indicar condiciones
<xsl:template match="producto">
<p>
<xsl:value-of select="nombre" />.
<xsl:if test="cantidad > 15">
Superior a 15
</xsl:if>
</p>
</xsl:template>
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<p>
Grapadora. Superior a 15
</p>
25. Condicional: choose
xsl:choose permite definir varias condiciones
<xsl:template match="producto">
<p>
<xsl:value-of select="nombre" />.
<xsl:choose>
<xsl:when test="cantidad > 15">
Superior a 15
</xsl:when>
<xsl:when test="cantidad >= 1">
Entre 1 y 15
</xsl:when>
<xsl:otherwise>
Cantidad incorrecta
</xsl:otherwise>
</xsl:choose>
</p>
</xsl:template>
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<p>
Grapadora. Superior a 15
</p>
26. Repetición: for-each
xsl:for-each repite el procesamiento sobre un conjunto
<xsl:template match="/">
<codigos>
<xsl:for-each select="//producto">
<codigo>
<xsl:value-of select="@codigo" />
</codigo>
</xsl:for-each>
</codigos>
</xsl:template>
<pedido fecha="3/2/2011">
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<producto codigo="R15">
<nombre>Rotulador</nombre>
<cantidad>10</cantidad>
</producto>
</pedido>
<codigos>
<codigo>G23</codigo>
<codigo>R15</codigo>
</codigos>
27. Variables
Mediante xsl:variable pueden declararse variables
Se accede mediante $vble
Los valores de las variables no pueden modificarse
XSLT = Lenguaje declarativo
<xsl:template match="/">
<xsl:variable name="total"
select="sum(//cantidad)" />
<pedido>
<xsl:for-each select="//producto">
<producto>
<xsl:value-of select="@codigo" />.
<xsl:value-of select="cantidad" /> de
<xsl:value-of select="$total" />.
</producto>
</xsl:for-each>
</pedido>
</xsl:template>
</xsl:stylesheet>
<pedido fecha="3/2/2011">
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<producto codigo="R15">
<nombre>Rotulador</nombre>
<cantidad>10</cantidad>
</producto>
</pedido>
<pedido>
<producto>G23. 20 de 30</producto>
<producto>R15. 10 de 30</producto>
</pedido>
28. Parámetros
Se declaran con xsl:param
Toman valores por defecto que pueden alterarse en la invocación
Similares a las variables
<xsl:param name="ponerTotal">SI</xsl:param>
<xsl:template match="/">
<xsl:if test="$ponerTotal = 'SI'">
Total = <xsl:value-of select='sum(//cantidad)' />
</xsl:if>
…continuar procesando
</xsl:template>
<pedido fecha="3/2/2011">
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<producto codigo="R15">
<nombre>Rotulador</nombre>
<cantidad>10</cantidad>
</producto>
</pedido>
Total = 30
…continuar procesando
29. Plantillas con nombre
Similares a funciones que pueden ser invocadas
<xsl:template match="/">
<xsl:call-template name="suma">
<xsl:with-param name="a" select="2" />
<xsl:with-param name="b" select="3" />
</xsl:call-template>
</xsl:template>
<xsl:template name="suma">
<xsl:param name="a" />
<xsl:param name="b" />
<xsl:value-of select="$a + $b" />
</xsl:template>
…cualquier documento XML
5
30. Recursividad
Es posible realizar invocaciones recursivas
XSLT = lenguaje Turing completo
<xsl:template name="factorial">
<xsl:param name="n" />
<xsl:choose>
<xsl:when test="$n = 0">1</xsl:when>
<xsl:otherwise>
<xsl:variable name="f">
<xsl:call-template name="factorial">
<xsl:with-param name="n" select="$n - 1" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$n * $f" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
En otro lenguaje sería:
def factorial(n)
if n == 0
1
else
f = factorial (n-1)
n * f
end
end
32. Numeración automática
xsl:number permite insertar numeración automática
Es posible modificar el formato del número
<xsl:template match="/">
<codigos>
<xsl:for-each select="//producto">
<codigo>
<xsl:number />.-
<xsl:value-of select="nombre" />
</codigo>
</xsl:for-each>
</codigos>
</xsl:template>
<pedido fecha="3/2/2011">
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<producto codigo="R15">
<nombre>Rotulador</nombre>
<cantidad>10</cantidad>
</producto>
</pedido>
<codigos>
<codigo>1.-Grapadora</codigo>
<codigo>2.-Rotulador</codigo>
</codigos>
33. Acceso a otros documentos
La función document permite acceder a otros
documentos XML
<xsl:template match="/">
<xsl:for-each select="//producto">
<xsl:variable name="cod" select="@codigo" />
<xsl:value-of select="nombre" />,
<xsl:value-of select="document('precios.xml')//producto[@codigo = $cod]/@precio" />
</xsl:for-each>
</xsl:template> <pedido fecha="3/2/2011">
<producto codigo="G23">
<nombre>Grapadora</nombre>
<cantidad>20</cantidad>
</producto>
<producto codigo="R15">
<nombre>Rotulador</nombre>
<cantidad>10</cantidad>
</producto>
</pedido>
<codigos>
<codigo>G23, 15</codigo>
<codigo>R15, 6</codigo>
</codigos>
<precios>
<producto codigo="R15" precio="6" />
<producto codigo="G23" precio="15" />
<producto codigo="S56" precio="26" />
</precios>
precios.xml
34. Valoración de XSLT
Es un lenguaje de programación Turing-completo
Lenguaje declarativo (sin asignación destructiva)
4 tipos de datos (enteros, booleanos, strings y conjuntos de nodos
Sin chequeo estático de tipos
¿Seguridad? ¿Eficiencia? (no son objetivos de diseño)
XSLT 2.0 pretende incluir tipos de datos de XML Schema
Flexible: La sintaxis de XPath se adapta a posibles cambios en la estructura.
No se valida el documento
Bueno para hacer tareas sencillas rápidamente
Empotrado en navegadores
Los programas XSLT son documentos XML
La sintaxis es poco amigable para el programador
Necesidad de buenas herramientas de autor