<moduleRef>

<moduleRef> (module reference) references a module which is to be incorporated into a schema.
Moduletagdocs — 22 Documentation Elements
AttributesIn addition to global attributes
keythe name of a TEI module
Status Optional
Datatype

<rng:data type="NCName"/>
xsd:NCName
url(uniform resource locator) refers to a non-TEI module of RELAX NG code by external location
Status Optional
Datatype

<rng:ref name="data.pointer"/>
data.pointer
Used by
May contain
tagdocs: content
Declaration

<rng:element name="moduleRef">
<rng:ref name="att.global.attributes"/>
<rng:choice>
 <rng:optional>
  <rng:attribute name="key">
   <rng:data type="NCName"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="url">
   <rng:ref name="data.pointer"/>
  </rng:attribute>
 </rng:optional>
</rng:choice>
<rng:optional>
 <rng:ref name="content"/>
</rng:optional>
</rng:element>
element moduleRef
{
   att.global.attributes,
   ( attribute key { xsd:NCName }? | attribute url { data.pointer }? ),
   content?
}

<sch:pattern name="testschemapattern">
<sch:rule context="tei:moduleRef">
 <sch:report test="* and @key">child elements of moduleRef are only allowed when an external module
   is being loaded
 </sch:report>
</sch:rule>
</sch:pattern>
Example
<moduleRef key="linking"/>

This embeds the linking module.

Note
Modules are identified by the name supplied as value for the ident attribute on the moduleSpec element in which they are declared. A URI may also be supplied in the case of a non-TEI module, and this is expected to be written as a RELAX NG schema.
The effect of this element is to make all the declarations contained by the referenced module available to the schema being compiled.