2012-10-23 4 views
3

Je suis en train de résoudre un problème où j'ai un ensemble de documents dans MarkLogic et je voudrais rechercher un nœud particulier à un moment donné dans la hiérarchie. Je voudrais utiliser quelque chose comme un cts: element-value-query, mais il semble qu'il n'a pas l'option de spécifier un niveau hiérarchique ou similaire.MarkLogic EVC: noeud recherche hiérarchie

La raison pour laquelle je voudrais faire ceci est qu'il y a des nœuds namespaced/named identiques ailleurs dans la hiérarchie que je voudrais ignorer dans le but de cette requête particulière.

Un exemple serait quelque chose comme ceci:

<rootNode xmlns="myNamespace"> 
    <someBooleanValue>true</someBooleanValue> 
    <someSubNode> 
     <someBooleanValue>false</someBooleanValue> 
    </someSubNode> 
</rootNode> 

où je voudrais, par exemple, rootNodes où someBooleanValue était vrai comme un enfant directement à la racine. Je sais comment interroger spécifiquement l'enfant someBooleanValue de someSubNode, mais j'essaie de comprendre comment le faire spécifiquement pour l'enfant de rootNode.

Aux fins de cette question, s'il vous plaît supposer que la modification de la structure XML/namespaces est pas facile. Ceci est spécifiquement pour MarkLogic 5.x.

Merci!

Répondre

1

Vous pouvez envelopper votre requête dans EVC: élément de requête de, mais qui est comme un ancêtre ou l'enregistrement automatique, pas nécessairement un parent seul chèque. Si vous utilisez de tels noms généraux, cela risque d'être insuffisant.

Une meilleure option est de considérer la mise à niveau vers ML 6 après tout, où ils ont introduit des index de chemin, où vous êtes autorisé à spécifier des chemins spécifiques aux éléments. Peut-être juste la peine ..

HTH!

+0

Merci! Le ML 6 est sur la voie de l'avenir, nous allons donc planifier cela. –

Questions connexes