Qual è la differenza tra Extensible Markup Language (XML) e XML Schema (XSD)?
Qual è la differenza tra Extensible Markup Language (XML) e XML Schema (XSD)?
Risposte:
In realtà l'XSD è lo stesso XML. Il suo scopo è convalidare la struttura di un altro documento XML. L'XSD non è obbligatorio per alcun XML, ma assicura che l'XML possa essere utilizzato per alcuni scopi particolari. L'XML contiene solo dati in formato e struttura adeguati.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema>
ma ho finito per ricevere l'errore: Error!!! The 'minOccurs' attribute cannot be present.
Facciamo un esempio
<root>
<parent>
<child_one>Y</child_one>
<child_two>12</child_two>
</parent>
</root>
e progetta un xsd per questo:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="child_one" type="xs:string" />
<xs:element name="child_two" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Cosa non è possibile con XSD: vorrei scriverlo prima in quanto l'elenco è molto piccolo
1) Non puoi convalidare un nodo / attributo utilizzando il valore di un altro nodo / attributo.
2) Questa è una restrizione: un elemento definito nel file XSD deve essere definito con un solo tipo di dati. [nell'esempio sopra, per <child_two>
apparire in un altro <parent>
nodo, il tipo di dati non può essere definito diverso da int.
3) Non è possibile ignorare la convalida di elementi e attributi, cioè, se un elemento / attributo appare in XML, deve essere ben definito nel corrispondente XSD. Sebbene l'uso di lo <xsd:any>
consenta, ma ha le sue regole. Rispetto che porta all'errore di convalida. Avevo provato un approccio simile e di certo non aveva avuto successo, ecco la domanda e risposta
cosa è possibile fare con XSD:
1) È possibile testare la corretta gerarchia dei nodi XML. [xsd definisce quale figlio dovrebbe rientrare in quale genitore, ecc., rispettando ciò che sarà conteggiato come errore, nell'esempio precedente, child_two non può essere il figlio immediato di root, ma è il figlio del tag "genitore" che a sua volta è un figlio del nodo "root", c'è una gerarchia ..]
2) È possibile definire il tipo di dati dei valori dei nodi. [nell'esempio sopra child_two non può avere altri dati oltre a number]
3) Puoi anche definire tipi_dati personalizzati, [esempio, per nodo <month>
, i possibili dati possono essere uno dei 12 mesi .. quindi devi definire tutti i 12 mesi in un nuovo tipo di dati scrivendo tutti i nomi di 12 mesi come valori di enumerazione.
4) Puoi mettere la restrizione sulla ricorrenza degli elementi, usando minOccurs e maxOccurs, i valori di default sono 1 e 1.
.. e molti altri ...
<root> <A>A</A> <B/> <C/> </root>
e se Node lo <A>
è <A>B</A>
, rendilo <B>
obbligatorio, se <A>C</A>
poi rendilo <C>
obbligatorio.
XSD:
XSD (XML Schema Definition) specifica come descrivere formalmente gli elementi in un documento XML (Extensible Markup Language).
Xml:
XML è stato progettato per descrivere i dati . È indipendente dal software oltre che dall'hardware.
Migliora le seguenti cose.
-Condivisione dei dati.
-Piattaforma indipendente.
-Aumentare la disponibilità dei dati.
differenze:
XSD è basato e scritto su XML.
XSD definisce elementi e strutture che possono apparire nel documento, mentre XML no.
XSD garantisce che i dati vengano interpretati correttamente, mentre XML no.
Un documento XSD viene convalidato come XML, ma potrebbe non essere sempre vero il contrario.
XSD è migliore nel rilevare gli errori rispetto a XML.
Un XSD definisce gli elementi che possono essere utilizzati nei documenti, relativi ai dati effettivi con cui deve essere codificato.
ad esempio:
una data espressa come 1/12/2010 può significare il 12 gennaio o il 1 ° dicembre. La dichiarazione di un tipo di dati data in un documento XSD garantisce che segua il formato dettato da XSD.
XML definisce la sintassi di elementi e attributi per strutturare i dati in undocumento ben formato .
XSD (noto anche come XML Schema) , come prima DTD, alimenta latensibilitàe X in XML consentendo all'utente di definire il vocabolario e la grammatica degli elementi e degli attributi in undocumento XML valido .
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<xs:element name="school">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Qui:
xs: element : definisce un elemento.
xs: sequence : denota che gli elementi figlio compaiono solo nell'ordine menzionato.
xs: complexType : denota che contiene altri elementi.
xs: simpleType : denota che non contengono altri elementi.
tipo: stringa, decimale, intero, booleano, data, ora,
Con l'aiuto di attributi extra, possiamo eseguire più operazioni.
L'esecuzione di qualsiasi attività su xsd è più semplice di xml.
XML ha un'applicazione molto più ampia di f.ex. HTML. Non ha una "applicazione" intrinseca o predefinita. Quindi, anche se potresti non preoccuparti del fatto che le pagine web siano governate anche da ciò che è permesso, dal lato dell'autore, probabilmente vorrai definire con precisione cosa può e non può contenere un documento XML.
È come progettare un database.
Il problema delle tecnologie XML è che sono di natura testuale. Con XSD, significa che hai un framework di definizione della struttura dei dati che può essere "collegato" a strumenti di elaborazione del testo come PHP. Quindi non solo puoi manipolare i dati stessi, ma anche cambiare e documentare molto facilmente la struttura e persino generare automaticamente i front-end.
Visto in questo modo, XSD è il "collante" o "middleware" tra i dati (XML) e gli strumenti di elaborazione dei dati.