web-dev-qa-db-fra.com

erreur de validation du schéma xml "le préfixe n'est pas lié"

Je suis tout à fait nouveau dans XML Schema et j'essaie de comprendre les bases. Voici mon code de schéma xml (filename: example1.xsd):

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sample="http://www.example" 
targetNamespace="http://www.example.com" 
elementFormDefault="qualified">

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="element1" type="xs:string"/>
      <xs:element name="element2" type="xs:string"/>
      <xs:element name="element3" type="xs:string"/>
      <xs:element name="element4" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema> 

Voici le document XML.

<?xml version="1.0" encoding="UTF-8"?>

<sample:school xmlns="http://www.example.com"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="./example1.xsd">

      <element1>hello</element1>
      <element2>hello</element2>
      <element3>hello</element3>
      <element4>hello</element4>

</sample:school>

En essayant de valider le fichier XML, j'obtiens une erreur de netbeans disant: Le préfixe "sample" de l'élément "sample: school" n'est pas lié. [9] 

15
iggy2012

Dans votre XML, vous devez soit: 

UNE. Supprimer le préfixe sample: de sample:school 

ou 

B. Remplacez xmlns="http://www.example.com" par xmlns:sample="http://www.example.com" et ajoutez le préfixe sample: au reste des éléments (<sample:element1>, <sample:element2>, etc.).

17
Daniel Haley

Lorsque vous obtenez une erreur comme celle-ci, le moyen le plus simple consiste à ajouter la déclaration de préfixe; dans votre cas, conformément au schéma, ajoutez simplement à votre élément racine l'attribut suivant:

xmlns:sample="http://www.example.com"

En outre, ceci est plutôt lié à Espaces de noms XML .

12
Petru Gardea

Ce n'est pas une réponse directe à votre question, mais j'ai trébuché ici en essayant de résoudre mon propre problème, alors peut-être que ça va aider quelqu'un aussi.

Ma propre erreur 'Le préfixe ns2 n'est pas lié' a refait surface après la mise à niveau de Weblogic 10.3.6 à 12.2.1.2.

Dans la version supérieure, l'implémentation JAXB par défaut est Moxy. J'ai donc dû remplacer javax.xml.bind.JAXBContext par com.Sun.xml.bind.v2.ContextFactory.

Comment spécifier l'implémentation JAXBContext dans weblogic 12.1.3

0
Artemis