XMLSCHEMA Directive
Return XSD (XML Schema Definition) schema along with XML data of XML document/fragment.
Can only use with RAW and AUTO mode.
SELECT custid, contactname, fax
FROM Sales.Customers
WHERE custid <= 3
FOR XML RAW('Customer')
, ELEMENTS XSINIL
, ROOT('Customers')
, XMLSCHEMA;
Result: Notice the targetNamespce contains an Uniform Resource Name(URN) with format as: schemas-microsoft-com:sql:SqlRowSetn. Every time we execute the same query above in the same query window, n is incremented by 1. The sqltypes namespace is the link to SQL Server datatype to XSD type mapping.
<Customers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsd:schema targetNamespace="urn:schemas-microsoft-com:sql:SqlRowSet1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" elementFormDefault="qualified">
<xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
<xsd:element name="Customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="custid" type="sqltypes:int" nillable="1" />
<xsd:element name="contactname" nillable="1">
<xsd:simpleType>
<xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth" sqltypes:sqlSortId="52">
<xsd:maxLength value="30" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="fax" nillable="1">
<xsd:simpleType>
<xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth" sqltypes:sqlSortId="52">
<xsd:maxLength value="24" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<Customer xmlns="urn:schemas-microsoft-com:sql:SqlRowSet1">
<custid>1</custid>
<contactname>Allen, Michael</contactname>
<fax>030-0123456</fax>
</Customer>
<Customer xmlns="urn:schemas-microsoft-com:sql:SqlRowSet1">
<custid>2</custid>
<contactname>Hassall, Mark</contactname>
<fax>(5) 456-7890</fax>
</Customer>
<Customer xmlns="urn:schemas-microsoft-com:sql:SqlRowSet1">
<custid>3</custid>
<contactname>Peoples, John</contactname>
<fax xsi:nil="true" />
</Customer>
</Customers>
There're a lot more information about XSD. You can read more about XSD here.
Reference:
http://technet.microsoft.com/en-us/library/bb510461.aspx
http://technet.microsoft.com/en-us/library/ms175113.aspx
http://www.w3.org/TR/xmlschema11-1/
No comments:
Post a Comment