Per l’implementazione di un sito di una libreria online, si vuole usare l’XML per descrivere l’entità libro,
così definita: “un libro è caratterizzato da un titolo, un’edizione (prima, seconda, ecc.), uno o più autori ma almeno uno con nome e cognome,
un codice ISBN a 13 cifre, una casa editrice, un anno di pubblicazione, un prezzo decimale, un eventuale sconto (percentuale intero) in un certo periodo temporale e dalla disponibilità (numero di pezzi in magazzino). Si definiscano dei tag e degli attributi opportuni di esempio in grado di caratterizzare l’entità e il relativo XSD. Validarlo con l’ausilio di un validatore online (es qui) o Visual Studio Code.
Il file XSD
Premesso come sempre che non esiste una soluzione unica ad una specifica di progetto, in questo caso le scelte sono abbastanza pilotate. La vera finezza sta nell’individuare tutti i parametri e le condizioni per ripulire i dati obbligando a inserire dei valori il più possibile oggettivi: lunghezza dei codici, inserimento di numeri positivi, numero di occorrenze sono tutti elementi non obbligatori nella realizzazione di un XSD ma che ne caratterizzano una grande qualità. Ricordiamo XSD è la contrazione di XML Schema Definition. Potete trovare una infarinatura di XML e XSLT qui.
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="libro">
<xs:complexType>
<xs:sequence>
<xs:element name="titolo" type="xs:string"/>
<xs:element name="edizione" type="xs:string"/>
<xs:element name="autori" minOccurs="1" maxOccurs="unbounded" >
<xs:complexType>
<xs:sequence>
<xs:element name="cognome" type="xs:string"/>
<xs:element name="nome" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ISBN" minOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="13"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="casaeditrice" type="xs:string"/>
<xs:element name="anno" type="xs:positiveInteger"/>
<xs:element name="scontistica" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="sconto" type="xs:positiveInteger" />
<xs:element name="datainizio" type="xs:date" />
<xs:element name="datafine" type="xs:date" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="disponibilita" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Il file XML
Non ci resta che provare a realizzare un file XML con attributi di prova. Sarà un ottimo ausilio anche in realtà per testare la bontà del nostro XSD. Se usate Visual Studio Code, ha una funzionalità interessante che permette di aprire a lato i due file XSD e XML, basta cliccare col tasto destro sull’albero di navigazione e selezionare sul file la voce “Apri lateralmente”.
<libro>
<titolo>Il nome della rosa</titolo>
<edizione>Prima</edizione>
<autori>
<cognome>Eco</cognome>
<nome>Umberto</nome>
</autori>
<ISBN>1234567890123</ISBN>
<casaeditrice>Juvenila</casaeditrice>
<anno>2022</anno>
<scontistica>
<sconto>10</sconto>
<datainizio>2022-10-05</datainizio>
<datafine>2022-11-05</datafine>
</scontistica>
<disponibilita>10</disponibilita>
</libro>
Ultima modifica 9 Novembre 2023