Example for powerful content models in RELAX NG

The following examples demonstrate the extension of the content model of p element in RELAX NG:

p = p-common | p-i18n
p-common =
  element p {
    attribute id { xsd:ID },
    text
  }
p-i18n =
  p-common,
  attribute locinfo { text }
element div = p+

The p element can be declared several times in the same content model of the div element. Different to XML Schema, there are no restrictions on ambiguity of the content model.