共用方式為


使用 sql:is-constant 建立常數元素 (XDR 結構描述)

重要注意事項重要事項

這個主題是舊版應用程式的參考。這項功能未來將不會繼續開發,請避免在新的開發工作中使用此功能,而改用註解式 XSD 結構描述建立 XML 檢視。如需詳細資訊,請參閱<註解式 XSD 結構描述簡介 (SQLXML 4.0)>。您可以將現有的註解式 XDR 結構描述轉換為 XSD 結構描述。如需詳細資訊,請參閱<將註解式 XDR 結構描述轉換為等效 XSD 結構描述 (SQLXML 4.0)>。

由於預設對應的緣故,XDR 結構描述中的每個元素和屬性都會對應到資料庫資料表和資料行。有時您可能會想要在 XDR 結構描述中建立未對應到任何資料庫資料表或資料行的元素,但是希望該元素仍然出現在 XML 文件中。這些稱為固定元素。若要建立固定元素,請指定 sql:is-constant 註解。sql:is-constant 會採用布林值 (0 = FALSE,1 = TRUE)。

這個註解會在 <ElementType> 上指定,該元素不會對應到任何資料庫資料表,因此它會成為固定元素。sql:is-constant 註解可以用於:

  • 將最上層元素加入到 XML 文件中。XML 需要單一的最上層元素 (<root> 元素) 供文件使用。

  • 建立容器元素,例如包裝所有訂單的 <Orders> 元素。

範例

若要使用下列範例建立工作範例,您必須符合某些需求。如需詳細資訊,請參閱<執行 SQLXML 範例的需求>。

A. 指定 sql:is-constant 來加入容器元素

在這個註解式 XDR 結構描述中,<OrderList> 會定義成包含所有 <Orders> 子元素的固定元素。sql:is-constant 註解會在 OrderList<ElementType> 上指定,讓它成為固定元素,因此不會對應到任何資料庫資料表。雖然 <OrderList> 元素不會對應到任何資料庫資料表/資料行,它仍然會以包含 <Orders> 子元素的容器元素形式出現在產生的 XML 中。

<?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">
<ElementType name="Sales.SalesOrderHeader" >
   <AttributeType name="SalesOrderID" />
   <attribute type="SalesOrderID" />
</ElementType>
<ElementType name="OrderList" sql:is-constant="1">
   <element type="Orders">
      <sql:relationship 
                   key-relation="Sales.Customer" 
                   foreign-relation="Sales.SalesOrderHeader" 
                   key="CustomerID" 
                   foreign-key="CustomerID" />
   </element>
</ElementType>
<ElementType name="Sales.Customer" >
   <AttributeType name="CustomerID" />
   <attribute type="CustomerID" />
   <element type="OrderList" />
</ElementType>
</Schema>

針對結構描述測試範例 XPath 查詢

  1. 複製上述的結構描述程式碼,並將其貼到文字檔中。將檔案儲存為 isConstant-xdr.xml。

  2. 複製下列範本,並將其貼到文字檔中。將檔案儲存為 isConstant-xdrT.xml,並儲存在與 isConstant-xdr.xml 相同的目錄中。範本中的 XPath 查詢會選取 CustomerID 屬性值為 1 所有 <Sales.Customer> 元素。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
    <sql:xpath-query mapping-schema="isConstant-xdr.xml" >
       /Sales.Customer[@CustomerID=1]
    </sql:xpath-query>
    </ROOT>
    

    針對對應結構描述 (isConstant-xdr.xml) 指定的目錄路徑相對於儲存範本的目錄。您也可以指定絕對路徑,例如:

    mapping-schema="C:\MyDir\isConstant-xdr.xml"
    
  3. 建立和使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 以執行範本。

    如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。

以下為結果集:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Sales.Customer CustomerID="1">
    <OrderList>
      <Sales.SalesOrderHeader SalesOrderID="43860" /> 
      <Sales.SalesOrderHeader SalesOrderID="44501" /> 
      <Sales.SalesOrderHeader SalesOrderID="45283" /> 
      <Sales.SalesOrderHeader SalesOrderID="46042" /> 
    </OrderList>
  </Sales.Customer>
</ROOT>