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 --自定義類型表