Voila j'ai un petit problème et je tourne en rond depuis un bon moment pour essayer de le résoudre sans trop de succés:
En gros j'ai un fichier xml de départ:
index.xml
puis deux autres "sous" fichiers xml de la forme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="transform.xsl"?> <data> <par>n°1</par> <par>n°2</par> <get_doc href="sous_doc_01.xml" /> <get_doc href="sous_doc_02.xml" /> </data>
sous_doc_01.xml
sous_doc_02.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="transform.xsl"?> <data> <par>n°3</par> <par>n°4</par> </data>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="transform.xsl"?> <data> <par>n°5</par> <par>n°6</par> </data>
Avec un feuille xsl dans ce genre là:
Et le problème c'est que à chaque appel de "document()" le décompte de mon "xsl:number" reprend à A. Alors que je voudrais compter tous les "<par>" ensembles (de A à F).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29 <?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8" standalone="yes" /> <xsl:template match="/"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <xsl:apply-templates select="*"/> </body> </html> </xsl:template> <xsl:template match="data"> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="par"> <p><xsl:number count="par" level="any" format="A"/> :: <xsl:apply-templates /></p> </xsl:template> <xsl:template match="get_doc"> <xsl:apply-templates select="document(@href)/data/*"/> </xsl:template> </xsl:stylesheet>
Au final c'est pour faire une numérotation sections/sous-sections/etc... automatiques du côté client par un navigateur web, mais avec des fichiers xml éparpillés sur le serveur. Je veux eviter d'utiliser javascript, ou de faire une fusion couteuse du coté du serveur.
Bref j'ai tenté différents patterns exotiques sans grandes chance, exploré un système de variables pour substituer au xsl:number mais cela devient très vite confus. Et pour finir, ce qui m'a donné le meilleur résultat c'est d'inclure mes sous_fichiers avec une DTD de ce genre:
Mais je trouve pas çà très "joli" ni très pratique, puis chez moi çà ne fonctionne pas sous Firefox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <!DOCTYPE data [ <!ELEMENT data ANY> <!ELEMENT par (#PCDATA)> <!ENTITY include_doc_01 SYSTEM "http://adr.fai.fr/sous_doc_01.xml"> ]>
Donc si quelqu'un a une solution ou une nouvelle idée: merçi d'avance![]()
Partager