2010-11-24 23 views
0

J'ai un fichier XML au format suivant.Validation XML à l'aide de XSD

<RootNode> 
    <Parent> 
     <Child1>Some text about child 1</Child1> 
     <Child2>Some text about child 2</Child2> 
     .... 
     .... 
     <Child5>Some text about child 5</Child5> 
     .... 
     .... 
     <Childn>Some text about child n</Childn> 
    </Parent> 
</RootNode> 

Maintenant, je veux valider ce fichier XML contre xsd.

Mais le problème est que le nombre et le nom de noeud des enfants ne sont pas corrigés.

S'il vous plaît vérifier ci-dessous des échantillons de mon dossier

Exemple 1: Deux enfants avec le nom de noeud Enfant1 et Enfant2

<RootNode> 
    <Parent> 
     <Child1>Some text about child 1</Child1> 
     <Child2>Some text about child 2</Child2> 
    </Parent> 
</RootNode> 

Exemple 2: Trois enfants avec le nom de noeud enfant4 enfant5 et enfant8

<RootNode> 
    <Parent> 
     <Child4>Some text about child 4</Child4> 
     <Child5>Some text about child 5</Child4> 
     <Child8>Some text about child 8</Child8> 
    </Parent> 
</RootNode> 

Je veux un pour valider le texte à l'intérieur du nœud enfant (qui est affiché comme "Un texte sur l'enfant n") avec la règle suivante

Règle: Le xml est invalide si un nœud enfant - (Enfants de Parent) a plus de iner longueur du texte 256.

Cela signifie considérer le xml valide si un enfant du nœud « parent » a le texte intérieur plus puis 256 caractères

Est-ce possible en utilisant la validation de schéma XSD? Pourriez-vous s'il vous plaît m'aider à créer le fichier .XSD pour valider cela?

Merci à l'avance

Répondre

0

Vous pouvez » Je résous cela avec XSD comme dit précédemment simplement parce que vous ne savez pas ce que tous les noms d'éléments seront en avance. Si vous n'êtes pas totalement lié à la validation XSD, vous pouvez jeter un coup d'œil au Schematron qui peut faire exactement ce genre de validation.

1

Il est impossible de valider cette opération automatiquement parce que le nombre maximum de nœuds enfants est inconnu. Vous pouvez peut-être obtenir en écrivant une validation manuelle.

Si vous êtes en mesure de changer le format de ce XML, vous devriez le faire, car il est mal conçu (surtout parce qu'il n'est pas validable ...). Vous devez tirer quelque chose de plus comme:

<RootNode> 
    <Parent> 
     <Child num="1">...</Child> 
     <Child num="2">...</Child> 
    </Parent> 
</RootNode> 

ou, si le parent peut contenir d'autres choses aussi bien que les enfants, puis d'avoir un récipient pour les enfants est utile:

<RootNode> 
    <Parent> 
     <OtherStuff/> 
     <Children> 
      <Child num="1">...</Child> 
      <Child num="2">...</Child> 
     </Children> 
     <MoreStuff/> 
    </Parent> 
</RootNode> 
+0

Merci beaucoup pour votre réponse rapide. – HAA

+0

Est-il possible d'écrire une validation personnalisée pour ce type d'exigence en utilisant C# .Net? Pourriez-vous s'il vous plaît fournir un indice ou referene? – HAA

+0

Je connais une option pour parcourir chaque nœud et vérifier. Mais y a-t-il un meilleur moyen disponible? – HAA