Articulo de referencia

XMLStarlet

XMLStarlet es un conjunto de utilidades de línea de comandos (kit de herramientas) para consultar, transformar, validar y editar documentos y archivos XML utilizando un conjunto...

XMLStarlet es un conjunto de utilidades de línea de comandos (kit de herramientas) para consultar, transformar, validar y editar documentos y archivos XML utilizando un conjunto simple de comandos de shell de una manera similar a como se hace con los comandos UNIX grep , sed, awk, diff, patch, join, etc.

Este conjunto de utilidades de línea de comandos puede ser utilizado por aquellos que deseen probar consultas XPath o ejecutar comandos sobre la marcha, así como trabajar con numerosos documentos XML o para el procesamiento automatizado de XML con scripts de shell.

Características

El conjunto de funciones del kit de herramientas incluye las siguientes opciones:

  • Comprobar o validar archivos XML (comprobación simple de la correcta formación, DTD, XSD, RelaxNG)
  • Calcular valores de expresiones XPath en archivos XML (como sumas acumuladas, etc.)
  • Buscar coincidencias con expresiones XPath dadas en archivos XML
  • Aplicar hojas de estilo XSLT a documentos XML (incluyendo compatibilidad con EXSLT y paso de parámetros a las hojas de estilo).
  • Consultar documentos XML (por ejemplo, consultar el valor de algunos elementos de atributos, ordenar, etc.)
  • Modificar o editar documentos XML (por ejemplo, eliminar algunos elementos).
  • Formatear o "embellecer" documentos XML (como cambiar la sangría, etc.)
  • Obtenga documentos XML utilizando URL http:// o ftp://
  • Explorar la estructura de árbol de los documentos XML (de forma similar al comando 'ls' para directorios).
  • Incluir un documento XML en otro usando XInclude
  • Canonización XML c14n
  • Escapar/desescapar caracteres XML especiales en el texto de entrada
  • Imprimir directorio como documento XML
  • Convertir XML a formato PYX (según ESIS - ISO 8879 ) y viceversa.

La utilidad de línea de comandos XMLStarlet está escrita en C y utiliza las bibliotecas libxml2 y libxslt . La amplia gama de opciones que ofrece XMLStarlet solo fue posible gracias a las numerosas funcionalidades de ambas bibliotecas: libxml2 y libxslt. XMLStarlet se enlaza estáticamente con libxml2 y libxslt, por lo que, en general, basta con un único archivo ejecutable para procesar documentos XML.

XMLStarlet es un software libre de código abierto publicado bajo una licencia MIT que permite su uso y distribución gratuitos tanto para proyectos comerciales como no comerciales.

Ejemplos

Considere el siguiente ejemplo de documento XML 'xmlfile1.xml':

<?xml version="1.0" encoding="utf-8"?> <wikimedia> <projects> <project name= "Wikipedia" launch= "2001-01-05" > <editions> <edition language= "English" > en.wikipedia.org </edition> <edition language= "German" > de.wikipedia.org </edition> <edition language= "French" > fr.wikipedia.org </edition> <edition language= "Polish" > pl.wikipedia.org </edition> <edition language= "Spanish" > es.wikipedia.org </edition> </editions> </project> <project name= "Wiktionary" launch= "2002-12-12" > <editions> <edition language= "English" > en.wiktionary.org </edition> <edition language= "French" > fr.wiktionary.org </edition> <edition language= < edición: vietnamita > vi.wiktionary.org < /edición> < edición : idioma turco > tr.wiktionary.org </edición> <edición: idioma español > es.wiktionary.org </edición> </ediciones> </proyecto> <proyecto nombre= "Wikiversidad" lanzamiento= "2006-10-04" > <ediciones> <edición idioma= "inglés" > en.wikiversity.org </edición > </ediciones> </proyecto> </proyectos> </wikimedia>

En la línea de comandos se ejecutan las siguientes cinco consultas XPath sobre el archivo XML 'xmlfile1.xml' mencionado anteriormente.

  • Ejemplo 1: La expresión XPath para seleccionar todos los atributos de nombre para todos los proyectos.
$ xmlstarlet sel -t -v "//wikimedia/projects/project/@name" xmlfile1.xml Wikipedia Wikcionario Wikiversidad
  • Ejemplo 2: La expresión XPath para seleccionar todos los atributos del último proyecto de Wikimedia.
$ xmlstarlet sel -t -v "/wikimedia/projects/project[last()]/@*" xmlfile1.xml Wikiversidad 2006-10-04
  • Ejemplo 3: La expresión XPath para seleccionar las direcciones de todas las ediciones de Wikcionario (texto de todos los elementos de edición que existen bajo el elemento de proyecto con un atributo de nombre de Wikcionario).
$ xmlstarlet sel -t -v "/wikimedia/projects/project[@name='Wiktionary']/editions/edition" xmlfile1.xml en.wiktionary.org fr.wiktionary.org vi.wiktionary.org tr.wiktionary.org es.wiktionary.org
  • Ejemplo 4: La expresión XPath para seleccionar las direcciones de todas las ediciones de Wikimedia Wikcionario que tienen idiomas distintos del turco y el español (todas aquellas que NO son turcas ni españolas).
$ xmlstarlet sel -t -v "/wikimedia/projects/project[@name='Wiktionary']/editions/edition[@language!='Turkish' and @language!='Spanish']" xmlfile1.xml en.wiktionary.org fr.wiktionary.org vi.wiktionary.org
  • Ejemplo 5: La expresión XPath para seleccionar todos los atributos de las ediciones cuya posición sea mayor o igual a 3 en la lista de ediciones.
$ xmlstarlet sel -t -v "/wikimedia/projects/project/editions/edition[position() >= 3]/@*" xmlfile1.xml Francés Polaco Español Vietnamita Turco Español

Un documento XML se puede validar con respecto a un esquema XSD guardado en el archivo 'xsdfile.xsd' de la siguiente manera:

$ xmlstarlet val -e -s xsdfile.xsd xmlfile1.xml xmlfile1.xml - válido

Véase también

  • XML (Lenguaje de Marcado Extensible) es un lenguaje de marcado que define un conjunto de reglas para codificar documentos en un formato legible tanto para humanos como para máquinas.
  • XPath (XML Path Language) es un lenguaje de consulta para seleccionar nodos de un documento XML.
  • XSLT (Extensible Stylesheet Language Transformations) es un lenguaje para transformar documentos XML en otros documentos XML u otros formatos como HTML para páginas web, texto plano, etc.
  • La definición del tipo de documento (DTD) define los componentes legales básicos de un documento XML.

Notas

  • Sitio web oficial
  • Definición de esquema XML (XSD)
  • XML Matters, Introducción a PYX
  1. "Kit de herramientas XML de línea de comandos XMLStarlet - Consulte /xmlstarlet/1.6.1 en SourceForge.net" .