Il seguente esempio è collegato all’articolo Linguaggio XML.

Viene qui presentato un documento XML i risultati del televoto della terza serata di Sanremo a cui hanno partecipato tre cantanti con altrettante canzoni. I risultati del televoto vengono suddivisi in base alle diverse regioni e successivamente sulla base dei diversi comuni. Viene inoltre fornito un XML Schema collegato a tale documento.

Il seguente frammento di codice è un esempio di documento XML collegato all’articolo Linguaggio XML e contiene

<?xml version="1.0" encoding="UTF-8"?>

<serata numero_serata="3">

  <regione nome="Lombardia">
    <comune nome="Milano">
	  <canzone codice_televoto="01" preferenze="50"/>
	  <canzone codice_televoto="02" preferenze="20"/>
	  <canzone codice_televoto="03" preferenze="37"/>
  	</comune>
	<comune nome="Lodi">
	  <canzone codice_televoto="01" preferenze="25"/>
	  <canzone codice_televoto="02" preferenze="25"/>
	  <canzone codice_televoto="03" preferenze="58"/>
	</comune>
	<comune nome="Como">
	  <canzone codice_televoto="01" preferenze="03"/>
	  <canzone codice_televoto="02" preferenze="26"/>
	  <canzone codice_televoto="03" preferenze="12"/>
	</comune>
  </regione>
		
  <regione nome="Liguria">
	<comune nome="Genova">
  	  <canzone codice_televoto="01" preferenze="36"/>
	  <canzone codice_televoto="02" preferenze="15"/>
	  <canzone codice_televoto="03" preferenze="100"/>
	</comune>
	<comune nome="Rappallo">
	  <canzone codice_televoto="01" preferenze="12"/>
	  <canzone codice_televoto="02" preferenze="09"/>
	  <canzone codice_televoto="03" preferenze="05"/>
	</comune>
  </regione>
  
</serata>
<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  
  <xs:simpleType name="integerType">
    <xs:restriction base="xs:integer"/>
  </xs:simpleType> 
  
  <xs:simpleType name="positiveIntegerType">
    <xs:restriction base="xs:positiveInteger"/>
  </xs:simpleType> 
  
  <xs:simpleType name="stringType">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
   
  <xs:complexType name="canzoneType">
    <xs:attribute name="codice_televoto" type="positiveIntegerType" use="required"/>
    <xs:attribute name="preferenze" type="positiveIntegerType" use="required"/>
  </xs:complexType>
  
  <xs:complexType name="comuneType">
    <xs:sequence>
      <xs:element name="canzone" type="canzoneType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="nome" type="stringType" use="required"/>
  </xs:complexType>
  
  <xs:complexType name="regioneType">
    <xs:sequence>
      <xs:element name="comune" type="comuneType" maxOccurs="unbounded">
        <xs:unique name="uniqueCanzone">
          <xs:selector xpath="canzone"/>
          <xs:field xpath="@codice_televoto"/>
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="nome" type="stringType" use="required"/>
  </xs:complexType>
  
  <xs:complexType name="serataType">
    <xs:sequence>
      <xs:element name="regione" type="regioneType" maxOccurs="unbounded">
        <xs:unique name="uniqueComune">
          <xs:selector xpath="comune"/>
          <xs:field xpath="@nome"/>
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="numero_serata" type="integerType" use="required"/>
  </xs:complexType>
  
  <xs:element name="serata" type="serataType">
    <xs:unique name="uniqueRegione">
      <xs:selector xpath="regione"/>
      <xs:field xpath="@nome"/>
    </xs:unique>
  </xs:element>
  
</xs:schema>