Tag Archives: xml

Consultas XPath desde la línea de comandos

Existe una aplicación llamada

xmlstarlet

que permite hacer consultas XPath a archivos XML.

Supongamos el siguiente archivo XML, al cual llamaremos libro.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<xml version="1.0" encoding="UTF-8">

<libro>

<titulo>Patas arriba<titulo>
<autor>Eduardo Galeano</autor>

<capitulo num="1" titulo="La escuela del mundo al revés">
    <seccion num="1" titulo="Educando con el ejemplo">
        <parrafo destacado="si">La escuela del mundo al revés es la más democrática de las instituciones educativas.</parrafo>

        <parrafo>El mundo al revés premia al revés.</parrafo>
    </seccion>

    <seccion num="2" titulo="Los alumnos">
        <parrafo destacado="si">Día tras día, se niega a los niños el derecho de ser niños.</parrafo>
      <parrafo>En el océano del desamparo, se alzan las islas del privilegio.</parrafo>
    </seccion>
</capitulo>

<capitulo num="2" titulo="Cátedras del miedo">
    <seccion num="1" titulo="La enseñanza del miedo">
        <parrafo destacado="si">En un mundo que prefiere la seguridad a la justicia, hay cada vez más gente que aplaude el sacrificio de la justicia en los altares de la seguridad.</parrafo>
        <parrafo>A mediados de 1982, ocurrió en Río de Janeiro un hecho de rutina: la policía mató a un sospechoso de hurto.</parrafo>
    </seccion>

    <seccion num="2" titulo="La industria del miedo">
        <parrafo destacado="si">El miedo es la materia prima de las prósperas industrias de la seguridad privada y del control social.</parrafo>
        <parrafo>"Nuestra mejor publicidad son los noticieros de la televisión", dice, y bien sabe lo que dice, uno de los especialistas en la venta de seguridad.</parrafo>
    </seccion>

</capitulo>

</libro>

Consultas

Obtener el título del libro:

xmlstarlet select -t -v //titulo libro.xml

Obtener el capítulo 1:

xmlstarlet select -t -v "//capitulo[@num='1']" libro.xml

Obtener el capítulo 2:

xmlstarlet select -t -v "//capitulo[2]" libro.xml

Obtener el capítulo 2 usando last():

xmlstarlet select -t -v "//capitulo[last()]" libro.xml

Obtener la sección 1 del capítulo 2:

xmlstarlet select -t -v "/libro/capitulo[@num='2']/seccion[@num='1']" libro.xml

Obtener los párrafos que contienen algún atributo:

xmlstarlet select -t -c '//parrafo[@*]' libro.xml

Obtener los párrafos no destacados del capítulo 1:

xmlstarlet select -t -c "/libro/capitulo[@num='1']//parrafo[not(@destacado)]" libro.xml

Parámetros

Syntax for templates: -t|--template <options>
where <options>
  -c or --copy-of <xpath>         - print copy of XPATH expression
  -v or --value-of <xpath>        - print value of XPATH expression
  -o or --output <string>          - output string literal
  -n or --nl               - print new line
  -f or --inp-name         - print input file name (or URL)
  -m or --match <xpath>           - match XPATH expression
  -i or --if <test-xpath>              - check condition <xsl:if test="test-xpath">
  -e or --elem <name>            - print out element <xsl:element name="name">
  -a or --attr <name>            - add attribute <xsl:attribute name="name">
  -b or --break            - break nesting</xsl:attribute></name></xsl:element></name></xsl:if></test-xpath></xpath></string></xpath></xpath></options></options>

Sitio oficial: XMLStarlet Command Line XML Toolkit

Tags: , ,

37 pasos para un perfecto etiquetado HTML

El siguiente artículo continene un total de 37 puntos con respuestas frecuentes sobre HTML. En inglés. Estos son algunos de los puntos que trata el artículo:

  1. Why do I need to write&amp;instead of just&?
  2. Why are external CSS and JavaScript files a good idea?
  3. What does “semantic” mean?
  4. Should I replacebandiwithstrongandem?
  5. Are tables deprecated?
  6. What is the correct use of thedfnelement type?
  7. Must I have analtattribute for every image?

“HTML es la base de la Web y tanto desarrolladores como diseñadores necesitan comprenderlo”

37 Steps to Perfect Markup

Tags: , ,