Foreign content is non-DITA content, such as MathML, SVG, or Rich Text Format (RTF).

Usage information

Specializations of the <foreign> element are typically implemented as domains, but it is also possible to implement foreign vocabularies as structural specializations.

The <foreign> element can contain non-DITA content or a mix of DITA and non-DITA content.

If alternate content is wanted, use or specialize the <desc> element inside of the <foreign> specialization. Such alternate content needs to be valid wherever the <foreign> specialization is valid. This way, if a processor is not able to recognize or render the <foreign> content itself, it can use the alternate content from <desc>.

Processing expectations

Processors attempt to display <foreign> content unless otherwise instructed. If a processor cannot render the content, it MAY issue a warning.

The enabler of the foreign vocabulary must provide the processing and override the base processing for <foreign>.

  • If <foreign> contains more than one alternative content element, they should all be processed. In the case of <desc> they should be concatenated in a similar way to <section>, but with no title (analogous to <div> in HTML).
  • If no <desc>, <object>, or <image> element is found within an instance of the <foreign> element, the base processing can emit a warning about the absence of processable content.
  • The base processing for <object> might emit the content of <foreign> as a file at the location specified by the @data attribute of the <object> element. The <object> element should have a data attribute or a <foreign> sub-element but not both. In the event that an <object> element contains both a data attribute and an <foreign> sub-element the processing system should ignore one of them.

Content model


Any content


The following attributes are available on this element: universal attributes.


The following code sample shows a specialization of <foreign> that is used to hold SVG elements. For this to work, the specialization module that defines <svg> also needs to include the definitions for the SVG elements.

<p>... as in the formula 
    <svg:svg width="100%" height="100%" version="1.1"

<ellipse cx="300" cy="150" rx="200" ry="80"