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 :

L'attribut "" n'est pas admis sur l'élément


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut L'attribut "" n'est pas admis sur l'élément
    Bonjour j'ai une xslt qui fonctionne bien
    Mais j'ai changé de JVM de version de LIB et depuis j'ai des erreurs dans les logs.
    Code log : Sélectionner tout - Visualiser dans une fenêtre à part
    2015-08-04 11:52:35,895 | ERROR | FelixStartLevel  | XsltErrorListener                | 116 - org.apache.camel.camel-core - 2.14.1 | L'attribut "BEGIN" n'est pas admis sur l'élément IDOC !; Line#: 16; Column#: 22

    Ma transformation continue de fonctionner c'est à la compilation de la xslt que j'ai ce message. à l'exécution je n'ai pas de problème.

    Ma transformation produit un xml sans namespace du coup je ne comprends pas pourquoi les attributs ne seraient pas admins.

    J'ai créé une xsd (sans namespace) et j'ai voulu l'associer à la xslt mais j'ai alors l'erreur suivante
    Code log : Sélectionner tout - Visualiser dans une fenêtre à part
    2015-08-04 11:52:35,888 | ERROR | FelixStartLevel  | XsltErrorListener                | 116 - org.apache.camel.camel-core - 2.14.1 | L'attribut "xsi:noNamespaceSchemaLocation" n'est pas admis sur l'élément xsl:stylesheet !; Line#: 9; Column#: 5

    Je ne sais pas comment me débarrasser de cette erreur. avec mon éditeur la xsl est validée. avec tous les outils en ma possession, avec l'ancienne version de mon appli tout comme avec la nouvelle (Changement de version JVM et lib XALAN) l'exécution de la xslt fonction correctement et produit le résultat attendu.
    Il n'y a qu'au moment ou la xslt est chargée avec la nouvelle version que j'ai cette erreur.

    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="UTF-8"?>
    <xsl:stylesheet
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xmlns:ns1="urn:my.app"
       version="1.0"
       exclude-result-prefixes="ns1 xsl xsi"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="zlogmres.xsd"
       >
      <xsl:template match="/">
        <xsl:apply-templates />
      </xsl:template>
     
      <xsl:template match="ns1:reservation">
        <ZLOGMRES>
        	<IDOC BEGIN="1">
    xalan 2.7.0
    xerces 2.11.0
    Code log : 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
    javax.xml.transform.TransformerException: L'attribut "xsi:noNamespaceSchemaLocation" n'est pas admis sur l'élément xsl:stylesheet !
    	at org.apache.xalan.processor.StylesheetHandler.error(StylesheetHandler.java:904)[:]
    	at org.apache.xalan.processor.StylesheetHandler.error(StylesheetHandler.java:947)[:]
    	at org.apache.xalan.processor.XSLTElementProcessor.setPropertiesFromAttributes(XSLTElementProcessor.java:347)[:]
    	at org.apache.xalan.processor.XSLTElementProcessor.setPropertiesFromAttributes(XSLTElementProcessor.java:267)[:]
    	at org.apache.xalan.processor.ProcessorStylesheetElement.startElement(ProcessorStylesheetElement.java:106)[:]
    	at org.apache.xalan.processor.StylesheetHandler.startElement(StylesheetHandler.java:623)[:]
    	at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)[:]
    	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    	at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
    	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)[:]
    	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)[:]
    	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)[:]
    	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)[:]
    	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)[:]
    	at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:917)[:]
    	at org.apache.camel.builder.xml.XsltBuilder.setTransformerSource(XsltBuilder.java:356)

    A+JYT

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    javax.xml.transform.TransformerException: L'attribut "xsi:noNamespaceSchemaLocation" n'est pas admis sur l'élément xsl:stylesheet
    J'ai une grande suspicion que le DOMBuilderFactory qui charge le xslt en dom ne soit pas instancié avec spécifiant .setNamespaceAware(true), parce que c'est un message d'erreur tout à fait typique quant cela arrive. Avec le dom du xslt chargé et qu'on fait un DOMSource(), xslt serait validé forcément et donc une erreur du sort.

    Ce fait peut être verifié tout simplement pour un xml arbitraire sans namespace mais avec le xsi:noNamespaceSchemaLocation etc. Si on fait une validation avec un parseur sax et donc chargeant à la méthode validate() avec SAXSource(), on peut avoir un nombre x d'erreurs, dit-on; tandis que si on fait une validation avec un parseur dom sans .setNamespaceAware(true), on arrive à un nombre x+1 d'erreurs. L'erreur de plus est précisément sur xsi:noNamespaceSchemaLocation.

    Si tout ça est noyé dans un code complexe avec camel intervenant etc etc, on peut de ne pas faire attention ... Au début, je pense les versions de xerces-j ou xalan-j ou même jdk 1.8/1.7 puissent être la source du problème, mais finalement je ne suis pas convaincu et je retombe sur une cause plus rudimentaire desus. Peut-être vous revoyez le code sous cet angle ?

    Cette issue à part, je ne pense pas que ce soit aidant du tout en mettant xsi:noNamespaceSchemaLocation etc sur la racine xsl:stylesheet. Ce n'est pas la façon de forcer le xslt 1.0 de garantir de produire le xml sortant valide. On peut commencer à le faire en xslt 2.0, mais de façon très différente, en utilisant de quelque chose comme <xsl:import-schema schema-location="xyz.xsd" /> ou inline, et puis fait contrôller le sortir avec l'attribut @validation="strict" etc ...

    En tout cas, je ne sais trop sur le détail du problème avancé ... c'est un tant soit peu d'éléments que je arrive à faire déduire.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/11/2010, 07h38
  2. Réponses: 3
    Dernier message: 03/08/2010, 23h15
  3. [XHTML 1.0] Insérer un élément permanent(qui n'est pas rafraîchi) sur mon site sans frames
    Par DarkSoul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 24/02/2009, 16h38
  4. Les images ne s'affichent pas et le css n'est pas appliqué sur mon site en ligne
    Par landar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/03/2007, 19h47

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