Wie SQL in XML und XML in SQL Karte

Um Daten zwischen SQL-Datenbanken und XML-Dokumente, die verschiedenen Elemente einer SQL-Datenbank austauschen müssen in äquivalente Elemente eines XML-Dokuments übersetzbar sein, und natürlich umgekehrt.

Menu

Zeichensätze

In SQL hängen die Zeichensätze unterstützt, an der Implementierung Sie verwenden. Dies bedeutet, dass IBM DB2-Zeichensätze unterstützen können, die von Microsoft SQL Server nicht unterstützt werden. Wenn Sie eine weniger häufige Zeichensatz verwenden, die Datenbank und die Anwendung von einem RDBMS Plattform zu einer anderen migrieren kann schwierig sein.

XML unterstützt nur eine, Unicode. Dies ist eine gute Sache aus der Sicht von Daten zwischen einem gegebenen SQL Implementierung und XML auszutauschen. Alle RDBMS-Anbieter haben eine Abbildung zwischen Zeichenketten eines jeden ihrer Zeichensätze und Unicode zu definieren, sowie eine umgekehrte Zuordnung von Unicode zu jedem ihrer Zeichensätze.

Zum Glück, XML auch nicht mehrere Zeichensätze unterstützen. Wenn ja, hätte Anbieter eine many-to-many Problem, dass mehrere Mappings erfordern würde und Zuordnungen umkehren zu lösen.

Identifiers

Zeichen, die in SQL aber illegal in XML legal sind, müssen legal etwas zugeordnet werden, bevor sie Teil eines XML-Dokuments werden kann. SQL unterstützt begrenzte Bezeichner. Dies bedeutet, dass ungerade Zeichen wie%, $ und legal sind, solange sie in doppelte Anführungszeichen eingeschlossen sind. Solche Zeichen sind in XML nicht legal.

Darüber hinaus XML Namen, die mit den Zeichen beginnen XML in einer beliebigen Kombination der Fälle sind reserviert und daher nicht straflos verwendet werden kann. Wenn Sie SQL-IDs haben, die mit diesen Buchstaben beginnen, müssen Sie sie ändern.

Bei der Bewegung von SQL und XML werden alle SQL-Bezeichner in Unicode konvertiert. alle SQL-Bezeichner Von dort, die auch rechtliche XML Names sind unverändert. SQL-Kennung Zeichen, die nicht legal XML Names sind, werden mit einem Hexadezimal-Code ersetzt, die entweder die Form annimmt # 147-_xNNNN_ # 148- oder # 147-_xNNNNNNNN_ # 148-, woher N stellt einen Groß Sedezimalziffer.

Zum Beispiel wird der Unterstrich vertreten durch # 147-_x005F_ # 148-. Der Doppelpunkt wird durch dargestellt werden # 147-_x003A_ # 148-. Diese Darstellungen sind die Codes für die Unicode-Zeichen für den Unterstrich und Doppelpunkt. Der Fall, wenn eine SQL-Kennung mit den Zeichen beginnt x, m, und l wird durch das Vorsetzen alle Fälle mit einem Code in Form behandelt # 147-_xFFFF_ # 148-.

Umwandlung von XML in SQL ist viel einfacher. Alles, was Sie tun müssen, ist für eine Sequenz, die Zeichen eines XML-Name-Scan von # 147-_xNNNN_ # 148- oder # 147-_xNNNNNNNN_ # 148-. Jedes Mal, wenn Sie eine solche Sequenz finden, ersetzen Sie es mit dem Zeichen, dass die Unicode entspricht. Wenn ein XML-Name beginnt mit dem Zeichen # 147-_xFFFF_ # 148-, ignoriere sie.

Datentypen

Der SQL-Standard legt fest, dass ein SQL-Datentyp auf den nächsten möglichen XML-Schema-Datentyp zugeordnet werden müssen. Die Bezeichnung engster bedeutet, dass alle von der SQL-Typ zulässigen Werte werden durch die XML-Schema erlaubt sein, und die wenigsten nicht möglich Werte, die vom SQL-Typ wird anhand des XML-Schema erlaubt sein.

XML Facetten, wie beispielsweise maxInclusive und minInclusive, können die Werte einschränken, indem Sie die XML-Schema-Typ auf die von der entsprechenden SQL-Typ zulässigen Werte erlaubt.

Zum Beispiel beschränkt, wenn die SQL-Datentyp Werte der GANZE ZAHL Geben Sie auf den Bereich -2157483648, in XML die maxInclusive Wert kann auf 2157483647 gesetzt werden, und die minInclusive Wert kann auf -2157483648 eingestellt werden. Hier ist ein Beispiel für eine solche Zuordnung:

Tische

Sie können eine Tabelle in ein XML-Dokument zugeordnet werden. Ebenso können Sie alle Tabellen in einem Schema oder alle Tabellen in einem Katalog zuordnen. Zugriffsrechte werden durch die Zuordnung beibehalten. Eine Person, die das hat WÄHLEN Privileg auf nur werden einige Tabellenspalten können nur die Spalten mit dem XML-Dokument abzubilden.

Das Mapping erzeugt tatsächlich zwei Dokumente, eine, die die Daten in der Tabelle und das andere enthält, die die XML-Schemas enthält, die das erste Dokument beschreibt. Hier ist ein Beispiel für die Abbildung einer SQL-Tabelle in eine XML-Daten enthaltenden Dokuments:

AbeAbelsonSpringfield field~~POS=HEADCOMP714555-1111RechnungBaileyDecatur714555-2222...

Das Wurzelelement des Dokuments ist der Name der Tabelle angegeben. Jede Tabellenzeile wird in einem Element enthalten, und jede Zeile Element enthält eine Folge von Säulenelementen, die jeweils nach der entsprechenden Spalte in der Quelltabelle genannt. Jede Spalte Element enthält einen Datenwert.

Nullwerte

Da SQL-Daten möglicherweise NULL-Werte enthalten, müssen Sie entscheiden, wie sie in einem XML-Dokument darzustellen. Sie können einen Nullwert entweder als Null oder nicht vorhanden darstellen. Wenn Sie die Null-Option wählen, dann das Attribut xsi: nil = # 147-true # 148- markiert die Spaltenelemente, die Nullwerte darstellen. Es könnte in der folgenden Weise verwendet werden:

RechnungBailey714555-2222

Wenn Sie die fehlende Option wählen, können Sie es wie folgt an:

RechnungBailey714555-2222

In diesem Fall ist die Reihe der Null-Wert enthält, nicht vorhanden. Es gibt keinen Hinweis darauf.

Wie das XML-Schema zu generieren

Wenn von SQL in XML-Mapping, erzeugt das erste Dokument ist derjenige, der die Daten enthält. Die zweite enthält die Schemainformationen. Betrachten Sie das Schema für den Kunden Dokument:

Dieses Schema ist geeignet, wenn die Null Ansatz zur Handhabung nulls verwendet wird. Die fehlende Ansatz erfordert eine etwas andere Elementdefinition. Beispielsweise:

Menü