<content>

<content> (content model) contains a declaration of the intended content model for the element (or other construct) being specified. [22.5 Element Specifications]
Module tagdocs — Documentation Elements
Attributes
autoPrefix⚓︎ controls whether or not pattern names generated in the corresponding RELAX NG schema source are automatically prefixed to avoid potential nameclashes.
Status Optional
Datatype teidata.truthValue
Legal values are:
true
Each name referenced in e.g. an <rng:ref> element within a content model is automatically prefixed by the value of the prefix attribute on the current schemaSpec [Default]
false
No prefixes are added: any prefix required by the value of the prefix attribute on the current schemaSpec must therefore be supplied explicitly, as appropriate.
Contained by
May contain ANY
Example

This sample content element indicates that the element being specified has no content:

<content>
 <empty/>
</content>
Example

This content element defines a content model, expressed directly in the TEI ODD language, that allows either a sequence of paragraphs or a series of msItem elements optionally preceded by a summary:

<content>
 <alternate>
  <classRef key="model.pLike"
   maxOccurs="unbounded"/>

  <sequence>
   <elementRef key="summaryminOccurs="0"
    maxOccurs="1"/>

   <elementRef key="msItem"
    maxOccurs="unbounded"/>

  </sequence>
 </alternate>
</content>
Example

This sample content element defines a content model, expressed in the RELAX NG schema language, that allows either a sequence of paragraphs or a series of msItem elements optionally preceded by a summary:

<content>
 <rng:choice>
  <rng:oneOrMore>
   <rng:ref name="model.pLike"/>
  </rng:oneOrMore>
  <rng:group>
   <rng:optional>
    <rng:ref name="summary"/>
   </rng:optional>
   <rng:oneOrMore>
    <rng:ref name="msItem"/>
   </rng:oneOrMore>
  </rng:group>
 </rng:choice>
</content>
Schematron A temporary constraint to give users a warning that in the future the content of content will be restricted to 1 and only 1 child element.

<sch:rule context="tei:content[ *[2] ]">
<sch:let name="tot_kidsvalue="count( * )"/>
<sch:let name="tei_kids"
 value="count( tei:* )"/>

<sch:let name="rng_kids"
 value="count( rng:* | rna:* )"/>

<sch:let name="msg_part01"
 value="'In the near future the <content> element will be limited to 1 and only 1 child element. '"/>

<sch:let name="msg_part02"
 value="'This <content> element is in '"/>

<sch:let name="msg_part03"
 value="if ( local-name(..) eq 'elementSpec' ) then 'an ' else 'a '"/>

<sch:let name="msg_part04"
 value="concat( local-name(..), ' with ' )"/>

<sch:let name="msg_part05"
 value="if ( parent::tei:moduleRef/@key ) then 'a @key' else ''"/>

<sch:let name="msg_part06"
 value="if ( parent::tei:moduleRef/@url ) then 'a @url' else ''"/>

<sch:let name="msg_part07"
 value="if ( parent::tei:*/@ident ) then 'an @ident' else ''"/>

<sch:let name="msg_part08value="' of "'"/>
<sch:let name="msg_part09"
 value="../@ident | ../@key | ../@url"/>

<sch:let name="msg_part10"
 value="concat('" and has ', $tot_kids, ' children,')"/>

<sch:let name="msgs_1to10"
 value="concat( $msg_part01, $msg_part02, $msg_part03, $msg_part04, $msg_part05, $msg_part06, $msg_part07, $msg_part08, $msg_part09, $msg_part10 )"/>

<sch:report test="$tei_kids eq $tot_kids"
 role="warning">

 <sch:value-of select="$msgs_1to10"/> which could be wrapped in a <sequence> element.
</sch:report>
<sch:report test="$rng_kids eq $tot_kids"
 role="warning">

 <sch:value-of select="$msgs_1to10"/> which could be wrapped in an <rng:div> element.
</sch:report>
<sch:assert test="$tei_kids eq $tot_kids or $rng_kids eq $tot_kids"
 role="warning">

 <sch:value-of select="$msgs_1to10"/> but those children are neither all TEI elements nor
all RELAX NG elements, and thus this <content> is invalid and can not be easily rectified.
</sch:assert>
</sch:rule>
Content model
<content>
 <alternate>
  <elementRef key="valListminOccurs="1"
   maxOccurs="1"/>

  <classRef key="model.contentPart"
   minOccurs="1maxOccurs="unbounded"/>

  <anyElement minOccurs="1"
   maxOccurs="unbounded"
   require="http://relaxng.org/ns/compatibility/annotations/1.0 http://relaxng.org/ns/structure/1.0"/>

 </alternate>
</content>
Schema Declaration
<rng:element name="content">
 <rng:ref name="att.global.attributes"/>
 <rng:ref name="att.global.rendition.attributes"/>
 <rng:ref name="att.global.linking.attributes"/>
 <rng:ref name="att.global.analytic.attributes"/>
 <rng:ref name="att.global.facs.attributes"/>
 <rng:ref name="att.global.change.attributes"/>
 <rng:ref name="att.global.responsibility.attributes"/>
 <rng:ref name="att.global.source.attributes"/>
 <rng:optional>
  <rng:attribute name="autoPrefix"
   a:defaultValue="true">

   <rng:choice>
    <rng:value>true</rng:value>
    <rng:value>false</rng:value>
   </rng:choice>
  </rng:attribute>
 </rng:optional>
 <rng:choice>
  <rng:ref name="valList"/>
  <rng:oneOrMore>
   <rng:ref name="model.contentPart"/>
  </rng:oneOrMore>
  <rng:oneOrMore>
   <rng:ref name="anyElement_content_3"/>
  </rng:oneOrMore>
 </rng:choice>
</rng:element>
element content
{
   att.global.attributes,
   att.global.rendition.attributes,
   att.global.linking.attributes,
   att.global.analytic.attributes,
   att.global.facs.attributes,
   att.global.change.attributes,
   att.global.responsibility.attributes,
   att.global.source.attributes,
   attribute autoPrefix { "true" | "false" }?,
   ( valList | model.contentPart+ | anyElement_content_3+ )
}