XML 和 Internet 支持特殊字符

XML Internet 支持特殊字符<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一些字符在 URL XML 文檔中使用時有特殊的含義,因此必須針對這些含義對字符做適當編碼以使其生效。

URL 中的特殊字符

URL 上執行的查詢中,特殊字符被指定爲 %xx,其中 xx 是字符的十六進制值。下表列出了這些特殊字符並描述了它們的含義。有關更多信息,請參見 http://www.faqs.org/rfcs/rfc1738.html 中的 RFC1738 規範。

特殊字符


特殊含義

十六進制值

+

表示空格(在 URL 中不能使用空格)。

%2B

/

分隔目錄和子目錄。

%<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2F

?

分隔實際的 URL 和參數。

%3F

%

指定特殊字符。

%25

#

表示書籤。

%23

&

URL 中指定的參數間的分隔符。

%26

 

例如,考察下面的查詢:

SELECT *

FROM Employees

WHERE EmployeeID=?

因爲 ? 字符在 URL 中有特殊含義(分隔 URL 和傳遞的參數),所以在 URL 中指定該查詢時,該字符被編碼爲 %3F

下列 URL 將執行該查詢。在 URL 中傳遞該參數值。有關用 HTTP 執行 SQL 語句的更多信息,請參見使用 HTTP SQL 語句

http://IISServer/nwind?sql=SELECT * FROM Employees WHERE EmployeeID=%3F FOR XML AUTO&root=root&EmployeeID=1

瀏覽器將 ? 右側的所有特殊字符(如 + 字符)都進行轉義(即,將 ? 右側的 + 字符轉換成 %20)。

XML 中的特殊字符

> < 這類字符是XML 標記字符,在 XML 中有特殊的含義。當在 SQL 查詢(或 XPath 查詢)中指定這些字符時,必須對它們進行適當的編碼(也稱爲實體編碼)。下表列出了這些特殊字符並描述了它們的含義。有關更多信息,請參見 XML 1.0 規範 中的 XML 1.0 規範。

特殊字符

特殊含義

實體編碼

>

 

開始標記。

&gt;

<

 

結束標記。

&lt;

"

引號。

&quot;

'

撇號。

&apos;

&

"&"符。

&amp;

 

例如,考察下面的查詢:

SELECT  TOP 2 *

FROM    [Order Details]

WHERE   UnitPrice < 10

FOR XML AUTO

因爲 < 字符在 XML 中有特殊含義,所以當在某模板(一個 XML 文檔)中指定該查詢時,必須將該字符編碼爲 &gt;。以下就是含有該查詢的模板:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">

  <sql:query>

      SELECT top 2 *

      FROM     [Order Details]

      WHERE     UnitPrice &lt; 10

      FOR XML AUTO

  </sql:query>

</ROOT>

有關模板的更多信息,請參見使用模板執行 SQL 查詢使用模板執行 XPath 查詢

URL 編碼中的實體編碼

有時可能需要同時指定 URL 編碼與實體編碼。例如,可在 URL 中直接指定以下模板(而不是指定文件名):

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">

  <sql:query>

      SELECT top 2 *

      FROM     [Order Details]

      WHERE     UnitPrice &lt; 10

      FOR XML AUTO

  </sql:query>

</ROOT>

在此例中,(爲 < 標記字符指定的)實體編碼 &lt; 內的 & 字符在 URL 中有特殊含義,需要對其進行進一步編碼。必須將 & 字符編碼爲 %26,否則在 URL 中將把它視爲參數分隔符。該 URL 於是被指定爲:

http://IISServer/nwind?template=<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"><sql:query>SELECT TOP 2 * FROM [Order Details] WHERE UnitPrice %26lt; 10 FOR XML AUTO</sql:query></ROOT>

請參見

使用 HTTP 訪問 SQL Server

使用 FOR XML 檢索 XML 文檔

使用用於 SQL Server IIS 虛擬目錄管理實用工具

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章