2010-03-02 11 views
0

Im écrit un schéma XML pour un projet. Je ne peux pas résoudre le problème suivant:Ne permet pas à un élément d'être lui-même un enfant dans le schéma XML

Un élément ne peut pas être imbriquées par lui-même, ex:

<document> 
    <text> 
     <b> 
     <i> 
      <a link="http://wikipedia.org"> 
       <b /> 
      </a> 
     </i> 
     </b> 
    </text> 
</document> 

Cet exemple ne doit pas être permettre parce que le b est lui-même imbrication. Donc, ma question pour vous est la suivante: "Est-il possible d'interdire à un élément de se nicher soi-même, et si oui, quelle est la procédure pour faire l'affaire?"

Thx à l'avantage!

\ Morten Møller

Edit: Jusqu'à présent, je n'ont fait en sorte que un élément peut être un enfant de lui-même, mais pas un élément ne peut pas avoir un descendant qui est lui-même.

<?xml version="1.0"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
     xmlns:xs="http://cs.au.dk/dWebTek/WikiXML" 
     targetNamespace="http://cs.au.dk/dWebTek/WikiXML" 
     elementFormDefault="qualified"> 

<element name="wiki"> 
    <complexType> 
      <choice maxOccurs="unbounded"> 
       <!-- A lot of other element is listed here --> 
       <element name="bold" type="xs:boldnest"/> <!-- Missing nest function --> 
      </choice> 
    <complexType> 
</element> 

<complexType name="boldnest"> 
    <choice maxOccurs="unbounded"> 
     <element name="bold" minOccurs="0" maxOccurs="0" type="xs:boldnest"/> 
     <!-- All the other element is copy pasted in here --> 
    </choice> 
</complexType> 
+1

pouvez-vous coller l'extrait pertinent de votre xsd? –

Répondre

0

Ce que vous essayez de faire n'est pas possible. Dans XML Schema, si vous utilisez une approche basée sur le type, vous ne pouvez contrôler que les enfants d'un élément via le modèle de contenu, et non tous les descendants possibles. Le seul moyen de vous rapprocher de ce que vous essayez de faire est de définir complètement le contenu de document jusqu'au dernier niveau. Mais vous ne pouvez pas établir une structure récursive et ensuite mettre en place le genre de contrainte auquel vous songez.

Vous devrez valider ceci en utilisant un autre mécanisme, une fois la validation du schéma XML effectuée.