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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access