2014-05-12 3 views
1

J'utilise:Eclipse Kepler XML validation

  • Eclispe service Kepler Release 2 sur Windows 7
  • Rinzo Xml Editor 1.4
  • de base
  • Rinzo Xml Java intégration 1,4

Je Vous avez créé un nouveau projet (Fichier-> Nouveau projet ...) et ajouté deux fichiers (Nouveau-> Fichier):

cd.xsd et cd-istance.xml. Ces fichiers sont dans le même projet (dossier).

Je n'ai pas de menu comme New-> XML ... Je ne suis pas capable de valider l'istance xml du xsd ni pendant l'écriture du xml ni quand le xml est terminé (il n'y a pas de préférence- > Validez l'option ou quelque chose de similaire).

En fait, je ne sais pas si la référence à mon xsd est correcte ou si Eclipse ne fonctionne pas correctement.

Ci-après le fichier cd.xsd.

<?xml version="1.0" encoding ="UTF-8"?> 
<xs:schema 
xmlns:xs = "http://www.w3.org/2001/XMLSchema" 
elementFormDefault = "qualified" 
> 

<xs:simpleType name = "artist" > 
    <xs:restriction base="xs:string"> 
     <xs:length value= "5"> 
     </xs:length> 
    </xs:restriction> 
</xs:simpleType>  
<xs:element name = "title" type = "xs:string"></xs:element> 
<xs:element name = "year" type = "xs:gYear"></xs:element> 

<xs:element name = "song" > 
    <xs:complexType name = "songType"> 
     <xs:sequence> 
      <xs:element ref="artist" minOccur="0"></xs:element> 
      <xs:element ref="title" minOccur="0" maxOccur="1"></xs:element> 
      <xs:element ref="year" maxOccur="1"></xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Au-delà du cd-istance.xml:

<?xml version="1.0" encoding ="UTF-8"?> 
<CD 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamSpaceSchemaLocation="cd.xsd" 
> 
    <artist> </artist> 
    <title> la prova</title> 
    <title> la prova2 </title> 
</CD> 

Je me attends au moins deux erreurs, l'un pour l'artiste (qui est vide) et un autre pour le titre (ce qui constitue une violation les contraintes sur l'occurrence).

Je l'ai fait un certain nombre de tentatives, pour ne citer que quelques-uns:

  • Ajouté xsi:noNamSpaceSchemaLocation="./cd.xsd"
  • Ajouté xsi:targetLocation="./cd.xsd" ("cd.xsd") et a ajouté targetNameSpace="www.mynamespace.com" (il est une fausse adresse)

Merci d'avance.

Répondre

0

Vous avez mal orthographié l'attribut xsi:noNameSpaceSchemaLocation qui lie le schéma au fichier. Votre tête de fichier doit être:

<CD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNameSpaceSchemaLocation="cd.xsd"> ... 

Si vous rencontrez toujours des problèmes dans la validation de votre environnement, vous pouvez utiliser un service en ligne tels que this one.

J'ai collé votre instance et XSD et fait quelques modifications pour la valider. J'ai enregistré le lien dans un fiddle.

Les problèmes dans votre XSD sont:

  1. Votre schéma XML n'est pas bien formé. Ajoutez une étiquette </xs:schema> à la fin.
  2. Il n'y a pas d'élément CD déclaré. Remplacez <xs:element name="song"> par <xs:element name="CD">.
  3. maxOccurs et minOccurs Les attributs sont mal orthographiés à plusieurs endroits.
  4. Vous avez un complexType imbriqué dans la définition de l'élément song. Si vous avez un complexType imbriqué, il ne doit pas avoir un name. Vous pouvez le rendre de niveau supérieur ou supprimer l'attribut name.
  5. Il n'y a pas élément nommé artist. Il existe cependant un de type portant ce nom. Vous pouvez soit imbriquer le simpleType dans une déclaration <xs:element name="artist"> (et supprimer l'attribut name du type), soit conserver le type au niveau supérieur et déclarer un <xs:element name="artist" type="artist"> qui s'y réfère (vous pouvez utiliser des noms différents pour les types et les éléments) pour éviter toute confusion):
<xs:element name="artist" type="ArtistType" /> 
    <xs:simpleType name="ArtistType" > 
    <xs:restriction base="xs:string"> 
     <xs:length value="5"/> 
    </xs:restriction> 
</xs:simpleType> 

Une fois que ces problèmes sont résolus, vous aurez des erreurs de validation:

  1. Il n'y a pas exactement 5 caractères dans votre élément <artist>
  2. Il y a plus d'un élément <title> (au plus un est autorisé par le schéma)
  3. Il n'y a pas un élément nécessaire <year> contenant un type xs:gYear valide après la <title>

code Vous est validé here. Vous pouvez apporter des modifications et voir les résultats de la validation.

+0

Un downvote aléatoire? Ce serait bien de savoir la raison. Des liens morts? – helderdarocha

Questions connexes