by Eric van der Vlist is published by O'Reilly & Associates (ISBN: 0596004214)
Let's add some flexibility to the name element so we can accept:
<name>Lucy</name> |
and:
<name> <first>Charles</first> <middle>M</middle> <last>Schulz</last> </name> |
and:
<name> <first>Peppermint</first> <last>Patty</last> </name> |
To express this flexibility, use a choice pattern that accepts either a text node or a group of three elements (one of which is optional):
<element name="name"> <choice> <text/> <group> <element name="first"><text/></element> <optional> <element name="middle"><text/></element> </optional> <element name="last"><text/></element> </group> </choice> </element> |
The compact syntax uses a pipe, or logical "or" character (|) to denote choices:
element name { text|( element first{text}, element middle{text}?, element last{text} )} |
Note that you have to use parentheses to mark the boundary of the group pattern.
This text is released under the Free Software Foundation GFDL.