使用 sql:target-namespace 指定目標命名空間 (XDR 結構描述)
重要事項 |
|---|
這個主題是舊版應用程式的參考。未來將不會繼續開發這項功能,請避免在新的開發工作中使用此功能,而是改用註解式 XSD 結構描述建立 XML 檢視。如需詳細資訊,請參閱<註解式 XSD 結構描述簡介 (SQLXML 4.0)>。您可以將現有註解式 XDR 結構描述轉換為 XSD 結構描述。如需詳細資訊,請參閱<將註解式 XDR 結構描述轉換為等效 XSD 結構描述 (SQLXML 4.0)>。 |
sql:target-namespace 註解可用來將預設命名空間中的元素和屬性放入不同的命名空間中。sql:target-namespace 屬性只能加入至 XDR 結構描述中的 <Schema> 標記。
sql:target-namespace 的值是用來產生對應結構描述內所指定之元素和屬性的命名空間 URI (統一資源識別碼)。這個 URI 會套用到預設命名空間中的所有元素和屬性。從針對這個結構描述所做之查詢中傳回的 XML 元件包含 xmlns:prefix="uri" 宣告,而且會適當地當做元素和屬性名稱的前置詞。所使用的 URI 來自於 sql:target-namespace 註解的值。但是,此前置詞是任意產生的,而且不會對應到此結構描述中的任何值 (即使此前置詞是在結構描述中使用)。
範例
若要使用下列範例建立工作範例,您必須符合某些需求。如需詳細資訊,請參閱<執行 SQLXML 範例的需求>。
A. 指定目標命名空間
在此範例中,sql:target-namespace 註解是用來指定目標命名空間。因此,原本應該進入預設命名空間的所有元素和屬性都會導向目標命名空間 (MyNamespace)。
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql"
sql:target-namespace="urn:MyNamespace">
<ElementType name="Sales.SalesOrderHeader" >
<AttributeType name="SalesOrderID" />
<attribute type="SalesOrderID"/>
</ElementType>
<ElementType name="Sales.Customer" >
<AttributeType name="CustomerID" />
<attribute type="CustomerID" />
<element type="Sales.SalesOrderHeader" >
<sql:relationship
key="CustomerID"
foreign-key="CustomerID"
key-relation="Sales.Customer"
foreign-relation="Sales.SalesOrderHeader" />
</element>
</ElementType>
</Schema>
針對結構描述測試範例 XPath 查詢
複製上述的結構描述程式碼,並將其貼到文字檔中。將檔案儲存為 TargetNS-Xdr.xml。
複製下列範本,並將其貼到文字檔中。然後將檔案儲存為 TargetNS-XdrT.xml,並放在與 TargetNS-Xdr.xml 相同的目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="TargetNS-Xdr.xml" xmlns:x="urn:MyNamespace" > x:Sales.Customer[@CustomerID=1] </sql:xpath-query> </ROOT>此範本中的 XPath 查詢會要求 "MyNamespace" 命名空間中定義的所有 <Customer> 元素。在此範本中,前置詞 x 會繫結至此命名空間。
指定給對應結構描述 (TargetNS-Xdr.xml) 的目錄路徑相對於儲存此範本的目錄。也可以指定絕對路徑,例如:
mapping-schema="C:\MyDir\TargetNS-Xdr.xml"建立及使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。
以下為結果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<y0:Sales.Customer xmlns:y0="urn:MyNamespace" CustomerID="1">
<y0:Sales.SalesOrderHeader SalesOrderID="43860" />
<y0:Sales.SalesOrderHeader SalesOrderID="44501" />
<y0:Sales.SalesOrderHeader SalesOrderID="45283" />
<y0:Sales.SalesOrderHeader SalesOrderID="46042" />
</y0:Sales.Customer>
</ROOT>
請注意,產生的前置詞是任意的,但是它們會對應至相同的命名空間。
重要事項