XDR 元素和属性到表和列的默认映射
重要提示 |
---|
本主题是针对早期应用程序提供的参考。以后不会就该功能继续进行开发。请避免在新的开发工作中使用此功能。请改用带批注的 XSD 架构创建 XML 视图。有关详细信息,请参阅带批注的 XSD 架构简介 (SQLXML 4.0)。可以将现有带批注的 XDR 架构转换为 XSD 架构。有关详细信息,请参阅将带批注的 XDR 架构转换为等效的 XSD 架构 (SQLXML 4.0)。 |
在带批注的 XDR 架构中,元素默认映射为具有相同名称的表/视图,属性映射为具有相同名称的列。
您可以将该架构中不复杂的子元素映射为数据库列。若要将元素映射为数据库中的列,必须将该元素的 content 属性指定为 textOnly 值。如果将元素映射为数据库列时未指定 content=textOnly,则必须显式指定 sql:field 批注,以便将 <元素> 映射为数据库列。有关详细信息,请参阅 XDR 元素和属性与表和列的显式映射。
示例
若要创建使用以下示例的工作示例,必须满足一些要求。有关详细信息,请参阅运行 SQLXML 示例的要求。
A. 指定默认映射
在本示例中,<Person.Contact> 元素映射为 AdventureWorks 数据库中的 Person.Contact 表,所有属性映射为 Person.Contact 表中具有相同名称的列。在此 XDR 架构中,未指定任何批注。
<?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="ContactID" />
<AttributeType name="FirstName" />
<AttributeType name="LastName" />
<attribute type="ContactID" />
<attribute type="FirstName" />
<attribute type="LastName" />
</ElementType>
</Schema>
针对该架构测试示例 XPath 查询
复制上面的架构代码,并将它粘贴到文本文件中。将文件另存为 DefaultXdr.xml。
复制以下模板,并将它粘贴到文本文件中。在保存 DefaultXdr.xml 的相同目录中将该文件另存为 DefaultXdrT.xml。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="DefaultXdr.xml"> /Person.Contact[@ContactID < 3] </sql:xpath-query> </ROOT>
为映射架构 (DefaultXdr.xml) 指定的目录路径是相对于模板保存目录的相对路径。也可以指定绝对路径,例如:
mapping-schema="C:\MyDir\DefaultXdr.xml"
创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 执行该模板。
有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询。
下面是结果集:
<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
<Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>
<Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel">
</ROOT>
B. 将 XML <元素> 映射为数据库列
默认情况下,XML 元素映射为数据库表,属性映射为数据库列。若要将元素映射为数据库列,必须将 content 属性指定为 textOnly 值。
该 XDR 架构由前面示例中的相同 <Person.Contact> 元素组成,但 SQL 字段(ContactID、FirstName 和 LastName)映射为子元素而不是属性。
<?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="ContactID" content="textOnly" />
<ElementType name="FirstName" content="textOnly" />
<ElementType name="LastName" content="textOnly" />
<ElementType name="Person.Contact" >
<element type="ContactID" />
<element type="FirstName" />
<element type="LastName" />
</ElementType>
</Schema>
XDR 架构中的 <Person.Contact> 元素默认映射为 AdventureWorks 数据库中的 Person.Contact 表。content 属性是针对 <FirstName> 和 <LastName> 子元素指定的。因此,这些子元素将映射为 Person.Contact 表中具有相同名称的列。
注意 |
---|
不支持混合内容(具有文本和子元素的元素)。 |
针对该架构测试示例 XPath 查询
复制上面的架构代码,并将它粘贴到文本文件中。将文件另存为 ElementXdr.xml。
复制以下模板,并将它粘贴到文本文件中。在保存 ElementXdr.xml 的相同目录中将该文件另存为 ElementXdrT.xml。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="ElementXdr.xml"> /Person.Contact[ContactID < 3] </sql:xpath-query> </ROOT>
为映射架构 (ElementXdr.xml) 指定的目录路径是相对于模板保存目录的相对路径。也可以指定绝对路径,例如:
mapping-schema="C:\MyDir\ElementXdr.xml"
创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 执行该模板。
有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询。
下面是结果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Contact>
<ContactID>1</ContactID>
<FirstName>Gustavo</FirstName>
<LastName>Achong</LastName>
</Person.Contact>
<Person.Contact>
<ContactID>2</ContactID>
<FirstName>Catherine</FirstName>
<LastName>Abel</LastName>
</Person.Contact>
</ROOT>