Questo è un modo possibile per definire un XSD che corrisponde al tuo XML; durante l'apprendimento di XSD, è possibile registrare l'aiuto di uno strumento che deduce l'XSD per te, a partire da uno o più file di esempio XML.
<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="component">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="operation">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="input">
<xsd:complexType>
<xsd:attribute name="type" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="event">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="output">
<xsd:complexType>
<xsd:attribute name="type" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="type" type="xsd:string" use="required" />
<xsd:attribute name="binding" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Come si walkthrough questo, si può iniziare a modificare min/maxOccurs, l'uso (richiesto/opzionale), le definizioni riutilizzo, ecc Un generato XSD è un buon punto di partenza, ma in genere finisce per essere modificato in un modo o altro ...
fonte
2012-03-30 17:20:15
credo che la sua richiesta che 'xsd: sequence' viene prima' xsd: attribute's. –
Sì, esattamente il contrario di ciò che ci si aspetterebbe, dato che nell'attuale xml gli attributi vengono prima degli elementi. –
Decisione di progettazione errata da parte dei progettisti XML Schema, rende l'XSD più difficile da leggere, oltre a essere contro-intuitivo. Dovrebbe avere permesso di mettere attributi e sequenze ecc. In qualsiasi ordine all'interno di complexType –