Il file database.schema.xml conterrebbe qualcosa del genere:
<?xml version="1.0" standalone="yes"?>
<xs:schema id="nome_database" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="nome_database" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="nome_tabella">
<xs:complexType>
<xs:sequence>
<xs:element name="nome_campo1" type="xs:string" minOccurs="0" />
<xs:element name="nome_campo2" type="xs:int" minOccurs="0" />
<xs:element name="nome_campo3" type="xs:double" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Come già detto, però, questo file non è indispensabile perché ha l'unico scopo di definire la struttura del tuo database ai fini di validazione.
Più interessante, invece, il "database" vero e proprio, che apparirebbe più o meno così:
<?xml version="1.0" standalone="yes"?>
<nome_database>
<nome_tabella>
<nome_campo1>primo record</nome_campo1>
<nome_campo2>123</nome_campo2>
<nome_campo3>12.345</nome_campo3>
</nome_tabella>
<nome_tabella>
<nome_campo1>secondo record</nome_campo1>
<nome_campo2>456</nome_campo2>
<nome_campo3>78.901</nome_campo3>
</nome_tabella>
</nome_database>
Come vedi, è sufficientemente semplice da poter addirittura essere modificato a mano con NotePad o con un editor XML.
La comodità nell'utilizzo con un linguaggio .NET è che sei in grado di ottenere e manipolare un oggetto nativo - il DataSet appunto - che dal punto di vista del codice è identico ad un qualsiasi DataSet derivato da un database vero e proprio. Con altri linguaggi meno recenti, rischi di dover gestire il documento XML "a mano" come fosse un file di testo oppure di dover cercare librerie di terze parti.
Ad ogni modo, XML è un formato portabile e supportato praticamente da ogni file system, protocollo e linguaggio.