SQL Anywhere verwendet die folgenden Regeln zum Kodieren von Namen, die keine zulässigen XML-Namen sind (zum Beispiel Spaltennamen mit Leerstellen):
XML hat Regeln für Namen, die sich von den Regeln für SQL-Namen unterscheiden. So etwa sind Leerstellen in XML-Namen nicht erlaubt. Wenn ein SQL-Name, wie z.B. ein Spaltenname, in einen XML-Namen konvertiert wird, werden Zeichen, die für XML nicht zulässig sind, kodiert oder mit Escapezeichen versehen.
Bei jedem kodierten Zeichen basiert die Kodierung auf dem Unicode-Codepunktwert des Zeichens, der als hexadezimale Zahl dargestellt wird.
Für die meisten Zeichen kann der Codepunktwert mit 16 Bit oder 4 Hex-Ziffern dargestellt werden, wobei die Kodierung _xHHHH_ benutzt wird. Diese Zeichen entsprechen den Unicode-Zeichen, deren UTF-16-Wert ein 16-Bit-Wort ist.
Für Zeichen, deren Codepunktwert mehr als 16 Bit benötigt, werden acht Hex-Ziffern in der Kodierung _xHHHHHHHH_ benutzt. Diese Zeichen entsprechen den Unicode-Zeichen, deren UTF-16-Wert aus zwei 16-Bit-Wörtern besteht. Für die Kodierung wird jedoch der normalerweise aus 5 oder 6 Hex-Ziffern bestehende Unicode-Codepunktwert benutzt, nicht der UTF-16-Wert.
Die folgende Abfrage zum Beispiel enthält einen Spaltennamen mit einer Leerstelle:
SELECT EmployeeID AS "Employee ID" FROM Employees FOR XML RAW; |
Sie gibt das folgende Ergebnis zurück:
<row Employee_x0020_ID="102"/> <row Employee_x0020_ID="105"/> <row Employee_x0020_ID="129"/> <row Employee_x0020_ID="148"/> ... |
Unterstriche (_) werden mit Escapezeichen versehen, wenn ihnen das Zeichen x folgt. Der Namen Linu_x wird beispielsweise als Linu_x005F_x kodiert.
Doppelpunkte (:) werden nicht mit Escapezeichen versehen, damit Namespace-Deklarationen und qualifizierte Element- und Attributnamen unter Verwendung einer FOR XML-Abfrage generiert werden können.
Hinweise über die Syntax der FOR XML-Klausel finden Sie unter SELECT-Anweisung.
Wenn Sie Abfragen ausführen, die eine FOR XML-Klausel in Interactive SQL enthalten, empfiehlt es sich, die Spaltenlänge zu vergrößern, indem Sie die Option "truncation_length" entsprechend einstellen.
Hinweise zum Festlegen der Kürzungslänge finden Sie unter truncation_length-Option [Interactive SQL].
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |