在 XDR 架构(XSD 架构)中为属性指定默认值
重要提示 |
---|
本主题是针对早期应用程序提供的参考。以后不会就该功能继续进行开发。请避免在新的开发工作中使用此功能。请改用带批注的 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.Contact" >
<AttributeType name="CID" />
<AttributeType name="FirstName" />
<AttributeType name="LastName" />
<AttributeType name="Title" default="XYZ"/>
<attribute type="CID" sql:field="ContactID" />
<attribute type="FirstName" />
<attribute type="LastName" />
<attribute type="Title" />
</ElementType>
</Schema>
针对该架构测试示例 XPath 查询
复制上面的架构代码,并将它粘贴到文本文件中。将文件另存为 DefaultValueXdr.xml。
复制以下模板,并将它粘贴到文本文件中。在保存 DefaultValueXdr.xml 的相同目录中将该文件另存为 DefaultValueXdrT.xml。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="DefaultValueXdr.xml"> /Person.Contact[@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.Contact CID="1001" FirstName="Terri" LastName="Duffy" />
<Person.Contact CID="1002" FirstName="Roberto" LastName="Tamburello" />
<Person.Contact CID="1003" FirstName="Michael" LastName="Sullivan" />
<Person.Contact CID="1004" FirstName="Sharon" LastName="Salavaria" />
<Person.Contact CID="1005" FirstName="Gail" LastName="Erickson" Title="Ms." />
</ROOT>