2009-04-03 7 views
0

Qu'est-ce qui ne va pas avec ce schéma XML? Il n'analyse pas correctement, et je ne peux pas réaliser une hiérarchie entre cluster (élément) -> host (élément) -> Load (élément).Problème avec la hiérarchie des éléments de schéma xml

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="cluster"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="host"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="host"> 
    <xs:complexType> 
     <xs:element ref="Load"/> 
     <xs:attribute name="name" type="xs:string" use="required"/> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="Load"> 
    <xs:complexType> 
     <xs:attribute name="usedPhisicalMemory" type="xs:integer"/> 
    </xs:complexType> 
    </xs:element> 

</xs:schema> 

Merci, Emilio

+0

Qu'est-ce qu'une «gerarchie»? (Avez-vous voulu dire "hiérarchie"?) – Tomalak

+0

Oui je l'ai fait, merci et désolé pour mon mauvais anglais =) – Emilio

+0

Peu importe. :) Je voulais absolument m'assurer que nous parlions de la même chose. – Tomalak

Répondre

1

Pour permettre quelque chose comme ça (je corrigé les fautes de frappe dans "usedPhysicalMemory"):

<cluster> 
    <host name="foo"> 
    <Load usedPhysicalMemory="500" /> 
    </host> 
    <host name="bar"> 
    <Load usedPhysicalMemory="500" /> 
    </host> 
</cluster> 

Ce schéma pourrait le faire:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="cluster"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="host" maxOccurs="unbounded" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="host">  
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="Load" /> 
     </xs:sequence> 
     <xs:attribute name="name" type="xs:string" use="required" /> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="Load"> 
    <xs:complexType> 
     <xs:attribute name="usedPhysicalMemory" type="xs:integer" /> 
    </xs:complexType> 
    </xs:element>  

</xs:schema> 

From the MSDN on <xs:complexType> (parce que the spec fait mon mal de cerveau):

Si group, sequence, choice ou all est spécifié, les éléments doivent apparaître dans l'ordre suivant:

  1. group | sequence | choice | all
  2. attribute | attributeGroup
  3. anyAttribute

Peut-être que quelqu'un d'autre peut indiquer la section pertinente dans les spécifications.

1

Dans l'élément hôte, l'élément de charge ne peut pas être un enfant de complexType, vous devez disposer d'une séquence, etc. entre les deux.

Questions connexes