Vous êtes peut-être arrivé naïvement, mais la caractéristique principale de votre conception XML est qu'elle est optimisée pour la recherche par date. Si votre document XML est volumineux et que vous effectuez beaucoup de recherche par date (ce qui, je le soupçonne, est le cas d'utilisation le plus courant dans un organiseur personnel), c'est une bonne chose.
exécution de ce modèle XPath:
/calendar/year[@value='2008']/month[@value='10']/day[@value='7']/activity
examinera beaucoup moins de nœuds que la volonté en utilisant le modèle que vous aurez besoin d'utiliser plus simple organisation aplatie à Kev:
/calendar/activity[@year='2008' and @month='10' and @day='7']
qui a essentiellement regarder chaque noeud dans le document.Notez, en passant, que je suppose que les attributs month
et day
sont numériques. C'est important parce que vous voudrez certainement trier ces données à un moment donné, et à moins que vous n'ayez à maintenir l'ordre de tri dans le document (ce que je reconnais, un argument peut être fait pour), vous ' Nous voulons que ces attributs soient faciles à trier.
Il est également important que vous soyez cohérent dans la façon dont vous stockez des données numériques dans ces attributs. (Si vous voulez être intelligent dans les réunions, vous pouvez dire que vous êtes en train d'établir des représentations canoniques de vos types de données.) Si vous utilisez des zéros en tête, par exemple, aucun de ces modèles XPath ne fonctionnera de manière fiable, car @day='7'
ne correspond pas à l'attribut day
défini sur "07"
. (Vous pouvez contourner cela en convertissant les attributs en nombres dans votre XPath en utilisant la fonction number()
, mais mieux vaut d'abord éviter le problème.)
Attendez, XML n'est pas une base de données? (langue dans la joue, sarcasme, etc) ;-D –
Un des buts quand on m'a proposé le développement de cette application était d'apprendre la manipulation de XML. Je vais jouer avec MySQL plus tard. Merci d'avoir répondu! –
@bullettime: Pas de problème! J'ai pensé que ce projet était en partie un outil d'apprentissage XML, et que vous êtes sur la bonne voie dans la mesure du possible. Bonne chance pour tout! –