The page is incomplete and outdated.
A XCend file consists mainly of a pattern, which has to be an element at the root:
element <name> {
<body>
}
In general, a pattern is a sequence of element and attribute declarations:
element <name> (?|* (<name>)?)? {
<body>
}
# and
attribute <name> (?)? {
<body>
}
Elements can be optional or repeated, attributes can only be optional. For repeated elements, the implicit disambiguation identifier can be renamed and accessed like a normal attribute. You can also specify choices between elements and attributes, which means that only one has to exist.
element choice {
element a {} | element b {} | attribute c {}
}
A body can either be empty, pattern, type or enumeration declaration:
element empty {
}
# and
element types {
string | integer | ident
}
# and
element enumeration {
"Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday"
}