<xdr:ElementType> 項目
定義用於 XML 資料精簡 (XDR) 結構描述 Schema 項目的項目型別。
<ElementType
content="{empty | textOnly | eltOnly | mixed}"
dt:type="datatype"
model="{open | closed}"
name="idref"
order="{one | seq | many}">
屬性
content
指出內容是否必須空白或者可包含文字、項目或兩者同時包含的指示器。以下幾個值可以指定到此屬性中。content 屬性的預設值為 mixed。當 content 屬性設為 mixed 時,order 屬性就必須要有 many 值。empty
項目不可包含內容。
textOnly
項目只能包含文字,不能包含項目。若 model 屬性設為 open,則項目可包含文字與其他未命名的項目。
eltOnly
項目只能包含指定的項目。它不可包含任何自由文。
mixed
項目只能包含具名項目與文字的組合。預設值是 mixed。若 content 屬性的值為 mixed,則在項目子系的數量超過指定界限時,minOccurs 與 maxOccurs 屬性將不會觸發驗證錯誤。
注意: |
---|
不允許具有 content="empty" 與 model="open" 的項目。 |
範例
說明
下列範例將說明各種 content 屬性值的用法。
舊版程式碼範例
下列範例將說明對等文件類型定義 (DTD) 的 content 屬性。
- dt:type
項目的資料型別。有效的資料型別定義於 XDR 結構描述資料型別參考中。
model
指出內容是否只能包含內容模型中所定義者的指示器。預設值為 open。<ElementType name="x" model="open"/>
當模型定義為 open 時,項目即可包含並未在內容模型中明確宣告的其他項目或屬性。這些其他的標記可能來自於相同或不同的命名空間中。若它們位於相同的命名空間中,則結構描述中必須要有它們的對應 ElementType 或 AttributeType 定義。
當模型定義為 closed 時,項目就不可包含內容模型中未指定的項目與混合內容。DTD 會使用封閉模型。
name
項目的名稱。這是必要屬性。若此項目型別被宣告為其他項目型別的有效子系,則此名稱會指定在 element 項目中。<ElementType name="x"> </ElementType>
DTD 對等用法如下所示。
<!ELEMENT x EMPTY>
order
指出項目如何顯示的指示器。此指示器可具有以下的值。one
只允許一組項目其中之一。在指定了 one 屬性的情況下,若要讓文件正確地驗證,則必須將 ElementType 的 model 屬性指定為 closed。
seq
要求項目以指定順序出現。
many
允許項目以任何順序出現 (或根本不出現)。若您指定了 many 給 order 屬性,則 maxOccurs 值在驗證期間就不再有關聯。
若要指定有效的順序,必須要有 seq 值。例如,它可用來指定特定的順序 (例如
x1,y1
或x2,y2
) 有效,而沒有其他可能之組合有效的時機。seq 值擔負的角色和 DTD 中的括弧相同。預設值是 seq。下列範例說明 one 設定。當 one 指定給 order 屬性時,model 屬性的值必須為 closed。
下列範例說明 seq 設定。
下列範例說明 many 設定。
order 屬性的 many 設定使得 minOccurs 與 maxOccurs 屬性在驗證期間不再有關聯。請不要使用 order 屬性的 many 設定來搭配 minOccurs 與 maxOccurs,而應改用 seq 設定。例如,請考量下列結構描述,它會設定
order="seq"
。
若下列 XML 文件對前述的結構描述進行驗證,此驗證將會失敗,因為 Publisher 項目的數量超過 maxOccurs 的指定值 1。但如果將 order 值設為 many,則因為會忽略 maxOccurs="1"
設定,所以驗證會在發生錯誤的情況下順利執行。
項目資訊
發生次數 |
無限制 |
父項目 |
|
項目子系 |
attribute, AttributeType, datatype, description, element, group |
項目屬性
標記 | 說明 |
---|---|
Name="idref" |
ElementType 與 AttributeType 項目都必須具有名稱。 |
Model="open" |
此項目中允許未在內容模型中指定的項目或混合內容。若要為特定的定義建立子類別,則此設定必須設為開放 (在未來實作繼承時)。 |
Model="closed" |
此項目中不允許未在內容模型中指定的項目或混合內容。 |
content="empty" |
項目不可包含內容。 |
content="textOnly" |
項目只能包含文字,不能包含項目。若 model="open",則項目可能仍包含文字與其他未命名的項目。 |
* content="mixed" |
項目只能包含具名項目與混合文字的組合。若 model="open",則項目可能仍包含文字與其他未命名的項目。表示 order='many' 且 maxOccurs="*"! |
order='one' |
只允許一組項目其中之一。 |
* order='seq' |
表示項目以列出的順序出現。對於項目清單而言,這與預設值類似,但若為順序分組,則必須使用此方法,例如在 |
order='many' |
項目能以任何順序出現 (或根本不出現)。 |
dt:type=datatype |
指定項目應包含整數。如需基本資料型別的清單,請參閱<XDR 結構描述資料型別參考>。 |
備註
「項目型別」這個詞彙表示所有共用名稱的所屬項目都是執行個體的項目型別。項目型別宣告於結構描述中;項目產生於文件中。項目型別會以 ElementType 項目型別進行宣告。