IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[xsl][Java] functions xpath non interpretees


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Pi2
    Pi2 est déconnecté
    Membre actif

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 134
    Points : 234
    Points
    234
    Par défaut [xsl][Java] functions xpath non interpretees
    Bonjour,
    ma question est surement triviale, desolee. Je viens de passer mon application de la JDK1.4 a la JDK1.5. Tout se passe plutot bien sauf:
    dans mes feuilles xsl, les fonctions xpath que j'appelle ne semblent pas interpretees ou disons plutot qu'elles ne sont pas prises en compte. mais je n'obtiens aucune erreur.
    exemple:
    ...
    <xsl:for-each select="@*">
    <xsl:choose>
    <xsl:when test="starts-with(.,'get:')">
    ...

    meme si mon attribut a pour valeur "get:" il ne rentre jamais dans le "when".
    que se passe-t-il?
    A noter que si j'appelle une fonction qui n'existe pas, il n' a pas d'erreur non plus.
    merci d'avance!
    Pi2.

  2. #2
    Pi2
    Pi2 est déconnecté
    Membre actif

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 134
    Points : 234
    Points
    234
    Par défaut
    Bon, il semblerait que tout cela soit du a des problemes de namespaces.
    Depuis JDK1.5, le Transformer utilise par defaut est beaucoup moins laxiste que celui de la JDK1.4.
    J'avais pour habitude d'ecrire:
    <xsl:attribute name="{name()}"></xsl:attribute>
    ce qui n'est plus accepte des lors (sans causer d'erreur dans les log toutefois!).
    Il faut maintenant preciser explicitement:
    <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}">

    Le probleme des fonctions non existantes ne provoquant aucune erreur persiste. C'est tres ennuyeux pour arriver a debugguer efficacement une feuille xsl!
    La source de tous mes problemes se resume a ce genre d'astuce.
    Pi2.

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    je suis assez étonné de cela...
    Tu peux poster le début de ta feuille de style XSLT, et un bout de ton XML ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Pi2
    Pi2 est déconnecté
    Membre actif

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 134
    Points : 234
    Points
    234
    Par défaut
    Voici le debut de ma feuille XSL (elle est assez longue alors je ne mats que le debut):

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0"
      xmlns:html="http://www.w3.org/TR/REC-html40"
      xmlns:jsp="http://java.sun.com/JSP/Page"
      xmlns:xalan="http://xml.apache.org/xalan"
      xmlns:proxy="xalan://helpers.XSLTProxy"
      extension-element-prefixes="proxy"
      exclude-result-prefixes="html">
     
     <xsl:output method="xml" encoding="ISO-8859-1" omit-xml-declaration="yes" indent='yes' />
     
     <xsl:param name='proxy' />
     
     <xsl:template match="/">
        <div>
    	 <jsp:directive.page import='MonRep.MaClasse' />
    	 <xsl:apply-templates />
    	</div>
     </xsl:template>
     
    <xsl:template match="html:annot">
    	 <xsl:for-each select="*">
    		<xsl:call-template name="inner_copy"/>
         </xsl:for-each>
    	 <xsl:call-template name="forward" />
      </xsl:template>
     
    <xsl:template name="inner_copy">
    	<xsl:copy>
     
        <xsl:for-each select="@*">
          <xsl:choose> 
           <xsl:when test="starts-with(.,'gen:')">
               <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}">
                 <xsl:call-template name="gen"/>
               </xsl:attribute>
           </xsl:when>
           <xsl:otherwise><xsl:copy /></xsl:otherwise>
          </xsl:choose>
        </xsl:for-each>
     
        <xsl:for-each select="child::node()">
          <xsl:choose>
            <xsl:when test="local-name(.) = 'iteration'"><xsl:call-template name="iterateOnParameters" /></xsl:when>
            <xsl:when test="text() and starts-with(.,'gen:')"><xsl:copy><xsl:call-template name="gen"/></xsl:copy></xsl:when>
            <xsl:otherwise><xsl:call-template name="inner_copy"/></xsl:otherwise>
          </xsl:choose>
        </xsl:for-each>
     
        </xsl:copy>
      </xsl:template>
    et un bout de mon xml source:


    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
    <div xmlns="http://www.w3.org/TR/REC-html40"
          xmlns:sew="http://blabla/sewese#" 
          xmlns:c="http://java.sun.com/jsp/jstl/core#"
          xmlns:fn="http://java.sun.com/jsp/jstl/functions#"
          xmlns:kmp="http://blabla/kmp#"  
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
     
    <annot> 
        <rdf:RDF>
    	<kmp:C rdf:about="${pageScope['comp_id']}">
    	    <kmp:creationDate>${sew:today()}</kmp:creationDate>
    	    <kmp:lastUpdatingDate>${sew:today()}</kmp:lastUpdatingDate>
    		<iteration paramprefix="checkbox_">
    		   <kmp:technology>
    		     <rdf:Description>
    			    <rdf:type rdf:resource="get:" />
    		     </rdf:Description>
    		   </kmp:technology>
    		</iteration>
    	</kmp:C>
    	</rdf:RDF>
    </annot>
     
    </div>

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Tu devrais essayer de déclarer dans ta feuille de style XSLT les espaces de noms qui vont se retrouver dans ton fichier de sortie, ça devrait t'éviter d'avoir à le faire pour chaque xsl:attribute.

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0"
      xmlns:html="http://www.w3.org/TR/REC-html40"
      xmlns:jsp="http://java.sun.com/JSP/Page"
      xmlns:xalan="http://xml.apache.org/xalan"
      xmlns:proxy="xalan://helpers.XSLTProxy"
      xmlns:sew="http://blabla/sewese#" 
      xmlns:c="http://java.sun.com/jsp/jstl/core#" 
      xmlns:fn="http://java.sun.com/jsp/jstl/functions#" 
      xmlns:kmp="http://blabla/kmp#"  
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
      extension-element-prefixes="proxy"
      exclude-result-prefixes="html">
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Pi2
    Pi2 est déconnecté
    Membre actif

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 134
    Points : 234
    Points
    234
    Par défaut
    Oui. Simplement, je ne l'avais pas fait car je voulais que ma feuille XSL reste indépendante du code source et puisse ainsi s'appliquer a des sources xml totalement differentes. En declarant les namespaces qui se retrouveront dans mon fichier de sortie, je me lie à mon code source. C'est dommage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/01/2007, 11h19
  2. [XSLT][Débutant]XPATH non reconnu par PHP5
    Par fredrik dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/09/2006, 12h13
  3. import java.util.LinkedHashMap non résolu
    Par david06600 dans le forum Langage
    Réponses: 3
    Dernier message: 24/08/2006, 13h35
  4. [XSL]Problème affiche noeuds non traités
    Par tomsawyer dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 27/06/2006, 16h22
  5. [xsl java]Appliquer une XSL à un String contenant doc XML
    Par aldo047 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/04/2003, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo