<!ELEMENT address (name, city, state)>
<address>
元素必须包含一个<name>
元素、一个<city>
元素和一个<state>
元素,并且符合上面的次序。所有的元素都是必需的。逗号表示项的列表。<!ELEMENT name (title?, first-name, last-name)>
这意味着
<name>
元素包含一个可选的<title>
元素,后面必须跟有一个<first-name>
和一个<last-name>
元素。问号表示这一项是可选的;它可以出现一次或根本不出现。<!ELEMENT addressbook (address+)>
<addressbook>
元素包含一个或多个<address>
元素。您可以有任意多的<address>
元素,但必须至少有一个。加号表示这一项必须至少出现一次,但可出现任意次。<!ELEMENT private-addresses (address*)>
<private-addresses>
元素包含零个或多个<address>
元素。星号表示这一项可以出现任意次,包括零次。<!ELEMENT name (title?, first-name, (middle-initial | middle-name)?, last-name)>
<name>
元素包含一个可选的<title>
元素,后面跟有一个<first-name>
元素,随后可能跟有一个<middle-initial>
或<middle-name>
元素,然后跟有一个<last-name>
元素。换句话说,<middle-initial>
和<middle-name>
都是可选的,而且您只能选择二者中的一个。竖线符号表示选择列表;您只能从列表选择一项。还要注意该示例用圆括号对特定元素进行分组,然后在这个组旁放上问号。-
<!ATTLIST city state CDATA #REQUIRED
postal-code CDATA #REQUIRED>
属性列表中的名称city
告诉解析器这些属性是为<city>
元素定义的。名称state
是属性的名称,关键字CDATA
和#REQUIRED
告诉解析器state
属性包含文本并且是必需的(如果它是可选的,用CDATA #IMPLIED
即可)。
告诉缺省值可这样:<!ATTLIST city state CDATA (AZ|CA|NV|OR|UT|WA) "CA" #REQUIRED
postal-code CDATA #REQUIRED>(杨认为)