XML元素可以定義為XML文件的構建塊。元素可以表現為容納文字,元素,屬性,媒體物件或所有元素的容器。
使用ELEMENT
宣告宣告DTD元素。 當DTD驗證XML檔案時,解析器初始檢查根元素,然後驗證子元素。
語法
所有DTD元素宣告都有這種一般形式 -
<!ELEMENT elementname (content)>
ELEMENT
宣告用於指示要定義元素的解析器。elementname
是定義的元素名稱(也稱為通用識別符號)。content
定義了元素中可以包含的內容(如果有的話)。DTD中元素宣告的內容可分類如下 -
空的內容
這是元素宣告的特例。 此元素宣告不包含任何內容。 它是使用關鍵字EMPTY
宣告的。
語法
以下是空元素宣告的語法 -
<!ELEMENT elementname EMPTY >
在上面的語法中 -
ELEMENT
是EMPTY
類別的元素宣告elementname
是空元素的名稱。範例
以下是演示空元素宣告的簡單範例 -
<?xml version = "1.0"?>
<!DOCTYPE hr[
<!ELEMENT address EMPTY>
]>
<address />
在此範例中,宣告address
為空元素。address
元素的標記將標記為<address />
。
元素內容
在具有元素內容的元素宣告中,內容將是括號內的允許元素。還可以包含多個元素。
語法
以下是帶元素內容的元素宣告的語法 -
<!ELEMENT elementname (child1, child2...)>
ELEMENT
是元素宣告標記elementname
是元素的名稱。child1
,child2 ..
是元素,每個元素在DTD中必須有自己的定義。範例
下面範例演示了元素宣告 -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Su</name>
<company>Yiibai Yiibai</company>
<phone>(086) 123-22334567</phone>
</address>
在上面的範例中,address
是父元素,而name
,company
和phone_no
是它子元素。
下表顯示了可用於定義子元素的運算子和語法規則列表 -
運算子 | 語法 | 描述 |
---|---|---|
+ |
<!ELEMENT element-name (child1+)> |
它表示子元素可以在父元素內部出現一次或多次。 |
* |
<!ELEMENT element-name (child1*)> |
它表示子元素在父元素內可以出現零次或多次。 |
? |
<!ELEMENT element-name (child1?)> |
它表示子元素可以在父元素內部出現零次或一次。 |
, |
<!ELEMENT element-name (child1, child2)> |
它給出了由逗號分隔的子元素序列,它必須包含在元素名稱中。 |
Ι | <!ELEMENT element-name (child1 Ι child2)> | 它允許在子元素中進行選擇。 |
規則
如果有多個元素內容,需要遵循某些規則 -
序列 - DTD文件中的元素通常必須以不同的順序出現。 如果是這種情況,則使用序列定義內容。宣告表明<address>
元素必須只有三個子節點 - <name>
,<company>
和<phone>
- 並且它們必須按此順序出現。 例如 -
<!ELEMENT address (name,company,phone)>
選擇 - 假設需要允許一個元素或另一個元素,但不能同時允許兩個元素。 在這種情況下,需要使用管道(|
)字元。管道也叫作互斥或。 例如 -
<!ELEMENT address (mobile | landline)>
它是(#PCDATA
)和子元素的組合。 PCDATA
代表解析的字元資料,即不是標記的文字。 在混合內容模型中,文字可以單獨出現,也可以散布在元素之間。 混合內容模型的規則類似於上一節中討論的元素內容。
語法
以下是混合元素內容的通用語法 -
<!ELEMENT elementname (#PCDATA|child1|child2)*>
ELEMENT
是元素宣告標記。elementname
是元素的名稱。PCDATA
是不標記的文字。 #PCDATA
必須在混合內容宣告中排在第一位。child1
,child2 ..
是元素,每個元素在DTD中必須有自己的定義。*
)必須遵循混合內容宣告。#PCDATA
)和子元素宣告必須由(|
)運算子分隔。範例
以下是演示DTD中混合內容元素宣告的簡單範例。
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA|name)*>
<!ELEMENT name (#PCDATA)>
]>
<address>
Here's a bit of text mixed up with the child element.
<name>
Tanmay Patil
</name>
</address>
可以在內容中使用ANY
關鍵字宣告元素。 它通常被稱為混合類別元素。 當您尚未決定元素的允許內容時,就可以使用ANY
關鍵字。
語法
以下是使用任何內容宣告元素的語法 -
<!ELEMENT elementname ANY>
這裡,ANY
關鍵字表示文字(PCDATA
)和/或DTD中宣告的任何元素都可以在<elementname>
元素的內容中使用。 它們可以任意次數使用。 但是,ANY
關鍵字不允許包含未在DTD中宣告的元素。
範例
以下是一個簡單的範例,演示了包含任何內容的元素宣告 -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address ANY>
]>
<address>
Here's a bit of sample text
</address>