2009-11-12 8 views
5

Je Hava un doc xml (et élément complexe) qui ressemble à cet exemple:Est-il possible d'avoir complexType et éléments à l'intérieur, mais sans la partie de la séquence

<xs:element name="employee"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element name="firstname" type="xs:string"/> 
    <xs:element name="lastname" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

Mais dans mon xml il ne devrait pas d'importance si j'ajoute le prénom ou le nom de famille en premier. Donc, je voudrais supprimer la partie "xs: sequence" mais je ne suis pas sûr de ce que je devrais remplacer avec.

Si ce n'est pas possible - alors pourquoi n'est-ce pas possible?

Mise à jour: Si je change avec < cx: tous> Je reçois cette erreur: "La {max} se produit de tous les {} les parties d'un tout groupe doit être 0 ou 1".

+2

oui, c'est une limitation connue du système de - maxOccurs peut être seulement 0 ou 1. Vous n'avez rien mentionné d'autre dans votre exemple, soit ..... –

+0

Y at-il une autre option que où je ne ' t obtenir cette limitation? – Imageree

+0

Un employé peut avoir plus d'un prénom ou plus d'un nom de famille? – jason

Répondre

8

Utilisation <xs:all> au lieu de <xs:sequence>:

<xs:element name="employee"> 
<xs:complexType> 
    <xs:all> 
    <xs:element name="firstname" type="xs:string"/> 
    <xs:element name="lastname" type="xs:string"/> 
    </xs:all> 
</xs:complexType> 
</xs:element> 

Voir la W3Schools page sur les indicateurs de schéma:

All Indicator

The <all> indicator specifies that the child elements can appear in any order, and that each child element must occur only once:

+0

Si je le change avec j'obtiens cette erreur: "Le {max se produit} de toutes les parties d'un groupe doit être 0 ou 1 ". – Imageree

+0

oui, c'est une limitation de '' - maxOccurs peut être seulement 0 ou 1. Vous n'avez rien mentionné d'autre dans votre exemple, soit ..... –

0

Vous voulez la All indicator (<xs:all>).

<xs:element name="employee"> 
    <xs:complexType> 
    <xs:all> 
     <xs:element name="firstname" type="xs:string"/> 
     <xs:element name="lastname" type="xs:string"/> 
    </xs:all> 
</xs:complexType> 
</xs:element> 

Le XML Schema Tutorial sur W3Schools est très utile.

+0

Si je le change avec je reçois cette erreur: "Le {maximum de} tous les {parties} d'un groupe doivent être 0 ou 1 ". – Imageree

2
<xs:element name="employee"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element name="firstname" type="xs:string" /> 
      <xs:element name="lastname" type="xs:string" /> 
     </xs:choice> 
    </xs:complexType> 
</xs:element> 

Cela vous permettra d'avoir des éléments dans n'importe quelle séquence et quantité.

+1

Malheureusement, pas vrai. '' autorise uniquement l'un des éléments spécifiés. Ainsi, dans votre exemple, il n'accepterait que le prénom * XOR * lastname (mais pourrait contenir n'importe quel nombre d'occurrences de cet élément). – user2846469