¿?        Alojamiento Web
Ejemplos XPath

Ejemplos XPath

De TW

Ejemplos de rutas XPath

Fichero de datos

Primero descarga este fichero Media:Nutrition.xml y guardalo en tu ordenador.

Intérprete XPath

Luego necesitarás un intérprete XPath.

Para probar los ejemplos en Linux puede usarse XML-Lint de xmlsoft.org que tiene un modo interactivo (shell).

Si tienes perl puedes usar este script y grabarlo como xp.pl:

#!/usr/bin/perl

use XML::XPath;
use XML::XPath::XMLParser;

my $xp = XML::XPath->new(filename => $ARGV[0] );

if( $xp->exists( $ARGV[0] ) ) {
        print "Exists.\n";
}

my $nodeset = $xp->find( $ARGV[1] );

if( ref($nodeset) eq 'XML::XPath::Number' ) {
        print "NUMBER: ", $nodeset, "\n";
        exit 0;
}

foreach my $node ($nodeset->get_nodelist) {
        print "NODE: ", XML::XPath::XMLParser::as_string($node),"\n";
}

Bajo Windows puede usarse Cooktop.

Ejemplos

./xp.pl Nutrition.xml '//food'
./xp.pl Nutrition.xml 'nutrition/food/name'
./xp.pl Nutrition.xml 'nutrition/food/vitamins/a'
./xp.pl Nutrition.xml 'nutrition/food[1]/name'
./xp.pl Nutrition.xml 'nutrition/food[2]/name'
./xp.pl Nutrition.xml 'nutrition/food[last()]/name'
./xp.pl Nutrition.xml 'nutrition/food/serving/@units'
./xp.pl Nutrition.xml 'nutrition/food/serving[@units="g"]'
./xp.pl Nutrition.xml 'nutrition/food[serving[@units="g"]]/name'
./xp.pl Nutrition.xml 'nutrition/food[serving[@units="cup"]]/name'
./xp.pl Nutrition.xml 'count(nutrition/food)'
./xp.pl Nutrition.xml 'nutrition/food/*[name()="calories"]'
./xp.pl Nutrition.xml 'nutrition/food/*[starts-with(name(),"ca")]'
./xp.pl Nutrition.xml 'nutrition/food[contains(name,"Dark")]'
./xp.pl Nutrition.xml 'nutrition/food[string-length(name) > 20]/name'
./xp.pl Nutrition.xml 'nutrition/food[string-length(name) < 10]/name'
./xp.pl Nutrition.xml 'nutrition/food[calories/@total > 300]/name'
./xp.pl Nutrition.xml 'nutrition/food[contains(name,"Chips")]/following-sibling::food/name'
./xp.pl Nutrition.xml 'nutrition/food/name'
./xp.pl Nutrition.xml 'nutrition/food[position() = floor( last() div 2 + 0.5 )]/name'
./xp.pl Nutrition.xml 'nutrition/food[position() = ceiling( last() div 2 + 0.5 )]/name'
./xp.pl Nutrition.xml 'nutrition/food[position() mod 2 = 0]/name'
./xp.pl Nutrition.xml 'nutrition/food[cholesterol > /nutrition/max-values/cholesterol]'