The Number of Children
As the previous examples indicate, not all instances of a given element necessarily have exactly the same children. You can affix one of three suffixes to an element name in a content specification to indicate how many of that element are expected at that position. These suffixes are:
? Zero or one of the element is allowed. |
* Zero or more of the element is allowed. |
+ One or more of the element is required. |
For example, this declaration says that a name
element must contain exactly one
first_name
, may or may not
contain a middle_name
, and may or
may not contain a last_name
:
<!ELEMENT name (first_name, middle_name?, last_name?)>
Given this declaration, all these name
elements are valid:
<name> <first_name>Madonna</first_name> <last_name>Cicconne</last_name> </name> <name> <first_name>Madonna</first_name> <middle_name>Louise</middle_name> <last_name>Cicconne</last_name> </name> <name> <first_name>Madonna</first_name> </name>
However, these are not valid:
<name> <first_name>George</first_name> <!-- only one middle name is allowed --> <middle_name>Herbert</middle_name> <middle_name>Walker</middle_name> <last_name>Bush</last_name> </name> <name> <!-- first name must precede last name --> <last_name>Cicconne</last_name> <first_name>Madonna</first_name> </name>
You can allow for multiple middle names by placing an asterisk
after the middle_name
:
<!ELEMENT name (first_name, middle_name*, last_name?)>
If you wanted to require a middle_name
to be included, but still allow for ...
Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.