2016-07-25 6 views
1

Ich habe eine Anwendung, wo der Benutzer einen Web-Service mit dynamischen Daten entwerfen kann. Der Benutzer kann die Daten angeben, mit denen der Webservice umgehen soll. Zum Beispiel definiert der Anwender diese Daten:Erlauben ungeordneter Elemente in dynamischen XSD für Web-Service?

PERSON (minoccurs 1, maxoccurs 1) 
    -> Firstname (minoccurs 1, maxoccurs 1) 
    -> Lastname (minoccurs 1, maxoccurs 1) 
    -> email (minoccurs 0, maxoccurs 3) 

So ist die XML-ähnliche

<Person> 
    <Firstname>Peter</Firstname> 
    <Lastname>Last</Lastname> 
    <Email>[email protected]</Email> 
    <Email>[email protected]</Email> 
</Person> 

In meiner Anwendung aussehen kann, erzeuge ich ein XSD für die XML, wo ich Sequenz bin mit beschäftigen mit den Elementen. Dies funktioniert gut, aber jetzt möchte der Kunde die Daten in beliebiger Reihenfolge senden, also dachte ich an xs:all, aber dort maxOccurs kann nur 1 sein. Ich weiß mit XSD 1.1 xs:all ist in der Lage zu handhaben maxOccurs größer one. Gibt es eine Möglichkeit in XSD 1.0, damit umzugehen?

Antwort

1

Für diesen speziellen Fall könnten Sie einen email-list Wrapper um email,

PERSON (minoccurs 1, maxoccurs 1) 
    -> Firstname (minoccurs 1, maxoccurs 1) 
    -> Lastname (minoccurs 1, maxoccurs 1) 
    -> email-list (minoccurs 1, maxoccurs 1)  
     -> email (minoccurs 0, maxoccurs 3) 

und noch xsd:all in XSD 1.0, verwenden Sie hinzufügen, aber Sie sind nicht als Ziel XSD gehen zu können, 1.0 verwenden, in der allgemeine Fall ohne die Einschränkungen von xsd:all in ähnlichen Einschränkungen für Ihre Eingabesprache widerzuspiegeln.

Also, wie auf Ihre previous question regarding XSD and unordered elements beantwortet, sollten Sie wirklich in Betracht ziehen, den reibungslosen Aspekt Ihrer Schnittstelle zu entspannen.

Verwandte Themen