j'ai chargé un document XML, et maintenant je souhaite exécuter une requête XPath pour sélectionner un sous-ensemble de XML. Le XML estDelphi/MSXML: requêtes XPath ne
<?xml version="1.0"?>
<catalog xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications with
XML.</description>
</book>
</catalog>
et la procédure est quelque chose comme
procedure RunXPathQuery(XML: IXMLDOMDocument2; Query: string);
begin
XML.setProperty('SelectionLanguage', 'XPath');
NodeListResult := XML.documentElement.selectNodes(Query));
ShowMessage('Found (' + IntToStr(NodeListResult.length) + ') nodes.');
end;
problème est: quand je lance la requête XPath «/catalogue » pour le XML ci-dessus, il retourne (comme prévu) Nodelist de 1 élément Toutefois, si je supprime :xsi
de <catalog xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
et relancez la requête, la nodelist renvoyée est vide. Si je supprime l'attribut entier 'xmlns', la nodelist résultante a, encore une fois, 1 élément. Donc ma question est la suivante: que puis-je faire pour y remédier, c'est-à-dire comment faire en sorte que MSXML renvoie le nombre correct d'instances (lors de l'exécution d'une requête XPath), indépendamment de l'espace de noms (ou autres attributs)?
Merci!
Soit je lis ceci (http://support.microsoft.com/kb/288147) tout à fait tort, ou il est impossible d'utiliser un espace de noms par défaut avec XPath pour certaines versions de MSXML. Malheureusement, j'utilise MSXML v6.0, cela ne devrait donc pas m'affecter. Quelqu'un a eu des expériences similaires? – conciliator