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

API standards et tierces Java Discussion :

[Xerces] Problème avec les Name Spaces


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 157
    Par défaut [Xerces] Problème avec les Name Spaces
    Bonjour,

    est-ce que quelqu'un a déjà eu à utiliser Xerces sur des fichiers avec des nameSpaces ??

    En fait j'essaye de valider des fichiers XML avec des schémas XSD qui sont stockés sur des fichiers en local.

    Normalement, pour spécifier le fichier XSD je doit écraser la propriété du SAXParser.

    j'ai essayé les deux cas:

    Si je concidère qu'il n'y a aps de nameSpaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    InputSource xml = new InputSource(new FileInputStream("C:/test.xml"));
    			URL xsd = new File("C:/test.xsd").toURL();
     
    			SAXParser parser = new SAXParser();
     
    			parser.setFeature("http://xml.org/sax/features/validation", true);
     
    			parser.setFeature("http://apache.org/xml/features/validation/schema", true);
     
    			parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", xsd.toString());
    erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cvc-elt.1.a: Cannot find the declaration of element 'Document'
     
    TargetNamespace.2: Expecting no namespace, but the schema document has a target namespace of 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.02'

    Si je considère qu'il ya les nameSpaces:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    InputSource xml = new InputSource(new FileInputStream("C:/test.xml"));
    			URL xsd = new File("C:/test.xsd").toURL();
     
    			SAXParser parser = new SAXParser();
     
    			parser.setFeature("http://xml.org/sax/features/validation", true);
     
    			parser.setFeature("http://apache.org/xml/features/validation/schema", true);
     
    			parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation", xsd.toString());
    erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    http://www.w3.org/TR/xml-schema-1#SchemaLocation?file:/C:/test.xsd
     
    cvc-elt.1.a: Cannot find the declaration of element 'Document'

    voici un aperçu des fichiers:
    XSD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <!--Generated by SWIFTStandards Workstation (build:R5.1.0.4) on 2006 Sep 08 11:58:39-->
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02">
    <xs:element name="Document" type="Document"/>
    <xs:complexType name="AccountIdentification3Choice">
    <xs:sequence>
    <xs:choice>
    <xs:element name="IBAN" type="IBANIdentifier"/>
    <xs:element name="BBAN" type="BBANIdentifier"/>
    ...

    XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version = "1.0" encoding = "UTF-8"?>
    <Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.02" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
    	<pain.001.001.02>
    		<GrpHdr>
    			<MsgId>ABC/060928/CCT001</MsgId>
    			<CreDtTm>2006-09-28T14:07:00</CreDtTm>
    			<BtchBookg>false</BtchBookg>
    			<NbOfTxs>3</NbOfTxs>
    			<CtrlSum>11500000</CtrlSum>
    ...
    Merci pour l'aide, ça commence à me gonfler ce Xerces :p

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Comme le dit la doc de Xerces :

    The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final String namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.02"
    parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation", namespace + " " + xsd.toString());
    , donc.

    Si je concidère qu'il n'y a aps de nameSpaces
    Ça ne risque pas de marcher puisqu'il y en a.

    ça commence à me gonfler ce Xerces :p
    +1 mais bon, honnêtement valider avec XML Schema en dehors de l'auto détection, c'est toujours soit super pas clair, soit avec des tonnes de limitations, quel que soit le parseur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 157
    Par défaut
    Merci , ça marche super bien.

    Si t'as le temps explique moi qu'est-ce que j'ai fais exactement.

    merci encore

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Tu as indiqué l'URL vers un fichier XML Schema qui valide les éléments du namespace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    urn:iso:std:iso:20022:tech:xsd:pain.001.001.02
    Ce namespace est le namespace par défaut déclaré dans le fichier XML que tu nous as montré en exemple. Donc, tous les éléments de ce fichier s'y trouvent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 157
    Par défaut
    Merci

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

Discussions similaires

  1. Problème avec les friendly name
    Par samus535 dans le forum SSAS
    Réponses: 1
    Dernier message: 11/11/2008, 16h33
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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