為 XDR 結構描述中的屬性指定預設值 (XDR 結構描述)
重要事項 |
|---|
這個主題是舊版應用程式的參考。這項功能未來將不會繼續開發,請避免在新的開發工作中使用此功能,而改用註解式 XSD 結構描述建立 XML 檢視。如需詳細資訊,請參閱<註解式 XSD 結構描述簡介 (SQLXML 4.0)>。您可以將現有註解 XDR 結構描述轉換為 XSD 結構描述。如需詳細資訊,請參閱<將註解式 XDR 結構描述轉換為等效 XSD 結構描述 (SQLXML 4.0)>。 |
在資料庫中,您可以指派資料行的預設值。同樣地,在 XDR 結構描述中,也可以為屬性設定預設值 (在 XDR 結構描述中不能為元素指派預設值)。XDR 結構描述可以在 <AttributeType> 上使用 default 屬性規格。
如果與屬性相關聯的資料行値為 NULL,則不會針對該元素執行個體傳回該屬性。但如果在 <AttributeType> 上指定了 default 屬性,則該屬性會使用指定的預設值傳回。
例如,將資料從資料庫擷取到 XML 文件中時,如果遺失其中一個屬性值,則會使用該屬性在 XDR 結構描述中的預設值。
[!附註]
預設值可能不會出現在傳回的文件中,反而會由驗證剖析器在每當找不到該屬性時使用此值。
[!附註]
如果使用的剖析器為結構描述感知,就會使用預設值。也就是說,如果使用的是 MSXML 剖析器,您必須確定 resolveExternals 旗標是設定為 TRUE (預設值),之後剖析器就會提取結構描述。在進行剖析之後,不論 XML 文件中是否包含了屬性,個別的執行個體都會具有屬性 (且指定為預設值)。DOM 會提供預設值。
範例
若要使用下列範例建立工作範例,您必須符合某些需求。如需詳細資訊,請參閱<執行 SQLXML 範例的需求>。
A. 為 XDR 結構描述中的屬性指定預設值
在此範例中,Title 屬性會設為預設值 "XYZ"。在擷取連絡記錄時,會為沒有稱謂的連絡人指派預設值。
<?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="Person.Person" >
<AttributeType name="CID" />
<AttributeType name="FirstName" />
<AttributeType name="LastName" />
<AttributeType name="Title" default="XYZ"/>
<attribute type="CID" sql:field="BusinessEntityID" />
<attribute type="FirstName" />
<attribute type="LastName" />
<attribute type="Title" />
</ElementType>
</Schema>
針對結構描述測試範例 Xpath 查詢
複製上述的結構描述程式碼,並將其貼到文字檔中。將檔案儲存為 DefaultValueXdr.xml。
複製下列範本,並將其貼到文字檔中。將檔案儲存為 DefaultValueXdrT.xml 並放在與 DefaultValueXdr.xml 一樣的目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="DefaultValueXdr.xml"> /Person.Person[@CID > 1000 and @CID < 1006] </sql:xpath-query> </ROOT>為對應結構描述 (DefaultValueXdr.xml) 所指定的目錄路徑,是相對於範本儲存所在的目錄。您也可以指定絕對路徑,例如:
mapping-schema="C:\MyDir\DefaultValueXdr.xml"建立和使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 以執行範本。
如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。
以下為結果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Person CID="1001" FirstName="Terri" LastName="Duffy" />
<Person.Person CID="1002" FirstName="Roberto" LastName="Tamburello" />
<Person.Person CID="1003" FirstName="Michael" LastName="Sullivan" />
<Person.Person CID="1004" FirstName="Sharon" LastName="Salavaria" />
<Person.Person CID="1005" FirstName="Gail" LastName="Erickson" Title="Ms." />
</ROOT>
重要事項