Pourquoi puis-je obtenir non Valide “prédicat” erreur de getElementsByTagName?

J'ai le code XML suivant:

<config>
  <version general="1.2.3">
    <subtype type="a" version="1.2" />
    <subtype type="b" version="3.6" />
    ...
  </version>
  ...
</config>

J'ai un code en Perl pour obtenir le nœud config à partir d'une base de données.

Après je reçois, si je tente le suivant:

my $elem = $cfg->getElementsByTagName("version");
my $generalVer = $elem ? $elem->get_node(1)->getAttribute("general") : undef;

tous fonctionne bien, $generalVer contient 1.2.3, comme prévu.

Mais si j'essaye ceci:

my $elem = $cfg->getElementsByTagName("version/subtype[@type='a']");
my $aVersion = $elem ? $elem->get_node(1)->getAttribute("version") : undef;

Il échoue avec le message "Invalid prédicat".

Quelqu'un peut aider avec ce problème?

quelle bibliothèque XML utilisez-vous ?
Un petit programme complet montrant le problème serait très utile. Je soupçonne, simplement en regardant ce que vous avez, que 'l'utilisation avertissements vous dire exactement quel est le problème. 🙂
J'utilise XML::LibXML. Doit être mentionné. Désolé.

OriginalL'auteur Dikla | 2009-12-27