3個類:電話、電話類型(枚舉)、電話類型集合;
以Phones 類生成 Schema ,用 .Net sdk 的 xsd.exe 或自己寫代碼都可以生成的、我就不多說了;
Schema 這東西如果純手寫也是勞動量巨大的;謝謝.Net 為我們提供這個功能吧;
Schema如下:
<xs:schema elementFormDefault="qualifIEd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Phones" nillable="true" type="ArrayOfPhone" /> <xs:complexType name="ArrayOfPhone"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="Phone" nillable="true" type="Phone" /> </xs:sequence> </xs:complexType> <xs:complexType name="Phone"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="1" name="Code" type="xs:string" /> <xs:element minOccurs="1" maxOccurs="1" name="Type" type="PhoneType" /> </xs:sequence> </xs:complexType> <xs:simpleType name="PhoneType"> <xs:restriction base="xs:string"> <xs:enumeration value="未知" /> <xs:enumeration value="移動" /> <xs:enumeration value="固定" /> </xs:restriction> </xs:simpleType> </xs:schema>
二、我們創建一個數據表、並包含這個和上邊 C# 類對應的的 XML 類型;
BEGIN -- 注冊架構 DBMS_XMLSCHEMA.registerschema(schemaurl => 'http://www.OracleDemo.com/Phones.xsd', schemadoc => '<xs:schema elementFormDefault="qualifIEd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Phones" nillable="true" type="ArrayOfPhone" /> <xs:complexType name="ArrayOfPhone"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="Phone" nillable="true" type="Phone" /> </xs:sequence> </xs:complexType> <xs:complexType name="Phone"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="1" name="Code" type="xs:string" /> <xs:element minOccurs="1" maxOccurs="1" name="Type" type="PhoneType" /> </xs:sequence> </xs:complexType> <xs:simpleType name="PhoneType"> <xs:restriction base="xs:string"> <xs:enumeration value="未知" /> <xs:enumeration value="移動" /> <xs:enumeration value="固定" /> </xs:restriction> </xs:simpleType> </xs:schema>', local => TRUE, gentypes => TRUE, genbean => FALSE, gentables => TRUE); END; --會建立 xml 描述的【Oracle自定義類型】 -- 如果用Oracle 工具查看 Types 下會出現一些如 Phone***_T,phone***_coll,ArrayOfPhone***_T 類似名稱的 【Oracle自定義類型】 -- 結構就和xml schema 是一樣 -- gentables => TRUE 還會建立一些表; -- 如 create table Phones721_TAB of SYS.XMLTYPE --物理表 -- create table SYS_NTyIVemDaJQXqHZgjqYv+haQ== of Phone711_T --自定義類型表