2009-12-21 3 views
1

Lorsque j'essaie d'afficher le schéma XML dans un espion XML, j'obtiens l'erreur suivante. « schéma doit commencer par un élément dans l'espace de noms « http://www.w3.org/2001/XMLSchema » »"Le schéma doit commencer par un élément <schema> dans l'espace de noms 'http://www.w3.org/2001/XMLSchema'" Erreur?

Je l'ai essayé avec un xml simple exemple et obtenir la même erreur

<?xml version="1.0"?> 
<Book xmlns:lib="http://www.library.com"> 
    <lib:Title>Sherlock Holmes</lib:Title> 
    <lib:Author>Arthur Conan Doyle</lib:Author> 
</Book> 

Des idées?

+1

Où est le schéma défectueux? – Jerome

Répondre

8

L'exemple que vous avez inclus est un document d'instance; ce n'est pas un schéma. Un schéma commencerait par quelque chose comme:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:lib="http://www.library.com" 
    targetNamespace="http://www.library.com" 
    elementFormDefault="qualified"> 

Votre document exemple est pas nécessairement malformé, mais il est inhabituel en ce qu'il aurait besoin de deux schémas pour valider: l'un pour l'espace de noms http://www.library.com, et un dans aucun espace de noms pour le livre élément. Je suggère de lire le XMLSchema Primer.

-1

Votre valideur XML tente de valider un document. Le document indique qu'il est conforme à un schéma à un emplacement donné. Le validateur récupère ce schéma. Mais omg: le document qu'il récupère n'est pas du tout un schéma XML! C'est juste un peu aléatoire de xml.

Pour résoudre ce problème:

Un espace de nom xml est juste un nom. Dans ce cas, http://www.library.com. L'application de validation de schéma doit savoir comment obtenir le document de schéma xml + + pour ce nom. En l'absence de quoi que ce soit d'autre, il s'agit probablement d'une recherche http et d'une page html.

Vous devez dire à votre validateur que l'espace de noms http://www.library.com est défini par un document de schéma à http://www.library.com/static/theschema.xsd (ou autre). L'association d'espaces de noms xml avec des documents de schéma dépend de l'application. La plupart des applications qui fonctionnent avec XML ont un cache quelconque que vous devez configurer et configurer.

Si vous travaillez dans Java, alors vous devez implémenter un EntityResolver (je pense) qui, lorsque l'analyseur demande http://www.library.com, retourne un flux d'entrée contenant le XML. Vous le feriez généralement en tant que fichier de ressources Java.

+0

Cet article ajoute de la confusion. La réponse de Pabigot est juste sur le coup. –

Questions connexes