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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » XML in der Datenbank » Abfrageergebnisse als XML » Abrufen von Abfrageergebnissen als XML mit der FOR XML-Klausel

 

Regeln für die Codierung unzulässiger XML-Namen

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.

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.

 Siehe auch