Précédent   Forum des professionnels en informatique > Autres langages > XML/XSL et SOAP
XML/XSL et SOAP Forum d'entraide sur XML et SOAP. Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 16h15   #1
Invité de passage
 
Femme
Développeur informatique
Inscription : janvier 2012
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : janvier 2012
Messages : 1
Points : 0
Points : 0
Par défaut Analyse d'un programme XSL

Bonjour,
Ayant écrit beaucoup de code XSL, je cherche à pourvoir l'analyser par un autre programme XSL. C'est à dire je cherche à considérer un programme XSL seulement comme un fichier XML, avec des balises que je peux chercher, compter, analyser etc...

Je ne maîtrise pas du tout les namespaces, mais suppose que c'est par là que se trouve la solution.
Si quelqu'un s'est déjà penché sur ce genre de problème, merci de m'aider !
concerti77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 19h38   #2
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 092
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 092
Points : 7 020
Points : 7 020
Euh, oui, c'est pas très compliqué... Il suffit d'utiliser dans tes XPath, exactement le même préfixe que dans les balises du XSLT qui appelle ces XPath.

Exemple : une stylesheet qui compte le nombre de templates d'une autre stylesheet :

Code :
1
2
3
4
5
6
7
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="/">
    <xsl:value-of select="count(/xsl:stylesheet/xsl:template)"/>
  </xsl:template>
 
</xsl:stylesheet>
xsl: est le préfixe des éléments XSLT, donc on utilise le même dans les requêtes XPath qui cherchent des éléments XSLT.


Ce qui est compliqué, c'est pas de chercher, compter, analyser une autre stylesheet. Ce qui est compliqué c'est de modifier son contenu, ou d'en ajouter. Parce que quand une balise commence par <xsl: elle fait partie de la stylesheet en cours, ce n'est pas une balise à ajouter dans le document produit.
Dans ces cas-là, on utilise namespace-alias. Dans ce cas-là seulement.

Exemple : Une stylesheet qui lit une autre stylesheet, et en produit une version modifiée, avec un template supplémentaire qui remplace tous les 'é' dans un texte par des 'e'.

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
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:alias="http://thelvin.org/xslt-alias">
 
  <xsl:namespace-alias
    stylesheet-prefix="alias"
    result-prefix="xsl"/>
 
  <xsl:template match="xsl:stylesheet">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
 
      <alias:template match="text()">
        <alias:value-of select="replace('é', 'e')"/>
      </alias:template>
    </xsl:copy>
  </xsl:template>
 
 
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
 
</xsl:stylesheet>
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h56.


 
 
 
 
Partenaires

Hébergement Web