Lecture non séquentielle d'un fichier XML
Bonjour,
Toujours avec mes drapeaux, pour l'instant je me contentais d'une lecture séquentielle d'un contenu, mais je butte sur le drapeau breton
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1350" height="900">
<rect width="1350" height="900" fill="#fff"/>
<rect x="600" width="1350" height="100" fill="#000"/>
<rect x="600" y="200" width="1350" height="100" fill="#000"/>
<rect y="400" width="1350" height="100" fill="#000"/>
<rect y="600" width="1350" height="100" fill="#000"/>
<rect y="800" width="1350" height="100" fill="#000"/>
<use xlink:href="#ermine" x="-225" y="-122.5"/>
<use xlink:href="#ermine" x="-75" y="-122.5"/>
<use xlink:href="#ermine" x="75" y="-122.5"/>
<use xlink:href="#ermine" x="225" y="-122.5"/>
<use xlink:href="#ermine" x="-150"/>
<g id="ermine" fill="#000">
<use xlink:href="#s" transform="rotate(-90 300,167.5)"/>
<path id="s" d="M 300,167.5 l -9,-13.5 l 9,-22.5 l 9,22.5 z"/>
<use xlink:href="#s" transform="rotate(90 300,167.5)"/>
<path d="M 300,167.5 l 40.5,99 l -31.5,-13.5 l -9,18 l -9,-18 l -31.5,13.5 z"/>
</g>
<use xlink:href="#ermine" x="150"/>
<use xlink:href="#ermine" x="-225" y="122.5"/>
<use xlink:href="#ermine" x="-75" y="122.5"/>
<use xlink:href="#ermine" x="75" y="122.5"/>
<use xlink:href="#ermine" x="225" y="122.5"/>
</svg> |
dans ce fichier, il y a appel à #ermine cette #ermine utilisant elle-même #s mais, comme vous le constatez, l'ordre des appels n'est pas vraiment au top, j'aurais plutôt vu ceci pour pouvoir en faire un traitement séquentiel
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1350" height="900">
<rect width="1350" height="900" fill="#fff"/>
<rect x="600" width="1350" height="100" fill="#000"/>
<rect x="600" y="200" width="1350" height="100" fill="#000"/>
<rect y="400" width="1350" height="100" fill="#000"/>
<rect y="600" width="1350" height="100" fill="#000"/>
<rect y="800" width="1350" height="100" fill="#000"/>
<g id="ermine" fill="#000">
<path id="s" d="M 300,167.5 l -9,-13.5 l 9,-22.5 l 9,22.5 z"/>
<use xlink:href="#s" transform="rotate(-90 300,167.5)"/>
<use xlink:href="#s" transform="rotate(90 300,167.5)"/>
<path d="M 300,167.5 l 40.5,99 l -31.5,-13.5 l -9,18 l -9,-18 l -31.5,13.5 z"/>
</g>
<use xlink:href="#ermine" x="-225" y="-122.5"/>
<use xlink:href="#ermine" x="-75" y="-122.5"/>
<use xlink:href="#ermine" x="75" y="-122.5"/>
<use xlink:href="#ermine" x="225" y="-122.5"/>
<use xlink:href="#ermine" x="-150"/>
<use xlink:href="#ermine" x="150"/>
<use xlink:href="#ermine" x="-225" y="122.5"/>
<use xlink:href="#ermine" x="-75" y="122.5"/>
<use xlink:href="#ermine" x="75" y="122.5"/>
<use xlink:href="#ermine" x="225" y="122.5"/>
</svg> |
Et, pourtant, le fichier SVG s'affiche correctement.
D'où ma question : Comment puis-je, dans une première phase de lecture ignorer tous les appels (les <use />) pour les traiter dans un deuxième temps ?
Ou, autrement posé, y a-t-il une instruction qui permettrai de dire "lire tous les éléments du XML sauf les nœuds <use /> ?
Le même principe pour le type de nœud g d'ailleurs mais en inverse c'est-à-dire : lire en premier tous les nœuds de type g avant de lire les autres.
Bien sûr, je pourrais faire 3 passes entières mais il devrait certainement y avoir mieux ?