Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » XML in der Datenbank benutzen » Abfrageergebnisse als XML erhalten » Mit der FOR XML-Klausel Abfrageergebnisse als XML abrufen

 

Unzulässige XML-Namen kodieren

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.

Tipp

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].