DITA Proposed Feature # 35

Support for foreign content vocabularies via the <unknown> element.

Longer description

The <unknown> element covers the ability to incorporate existing standard vocabularies for special content, like MathML and SVG, as inline objects. Since

Background

Background discussion

Optional

The <unknown> element could have some mechanism for alternate textual content. The default processing for the <unknown> element might be to emit the alternate textual content. Specialized processing could override this default processing to provide a different representation of the unknown content for supported formats.

Major - architectural.

Use Case

<p>... as in the formula <mathML>
    <mml:math display="block">
      <mml:mrow>
        <mml:mo>&sum;</mml:mo>
        <mml:mn>4</mml:mn>
        <mml:mo>+</mml:mo>
        <mml:mi>x</mml:mi>
      </mml:mrow>
    </mml:math>
    <mathMLAlternate>4 + x</mathMLAlternate>
  </mathML>.
</p> 

Technical Requirements

In a DTD/XML Schema definition, the <unknown> element would have an ANY content model. So, a specialization of <unknown> could contain unknown markup such as the elements from the MathML vocabulary. The <unknown> element should be added to the following content models; section, basic.block and the prolog. DITA adopters who do not need equation editing wouldn't need to include the MathML domain in their document types. Specialization of the <unknown> should be implemented as a domain, but for those looking for more control over the content can implement foreign vocabulary as an element specialization.

DTD

<!-- declaration for the specialized wrapper and alternate element -->
<!ENTITY % mathML "mathML">

<!-- included MathML document type -->
<!ENTITY % MATHML.prefixed "INCLUDE">
<!ENTITY % MATHML.prefix "mml">
<!ENTITY % mathml PUBLIC "-//W3C//DTD MathML 2.0//EN" "mathml2/mathml2.dtd">
%mathml;

<!-- definition for the specialized wrapper and alternate element -->
<!ELEMENT mathML ((%math.qname;)>
<!ATTLIST mathML %global-atts;
class CDATA "+ topic/unknown math-d/mathML "> 

Optional

<!ENTITY % mathMLAlternate "mathMLAlternate">
<!ELEMENT mathML ((%math.qname;), (%mathMLAlternate;))> 

XML Schema

 <xs:import namespace="http://www.w3.org/1998/Math/MathML" schemaLocation="mathml2.xsd">
 
 <xs:element name="mathML" type="mathML.class" />
 <xs:complexType name="mathML.class">
   <xs:sequence>
      <xs:element ref="mml:math" />
  </xs:sequence>
 </xs:complexType>
    
  <xs:group name="ma-d-unknown">
    <xs:choice>
      <xs:element ref="mathML" />
    </xs:choice>
  </xs:group>	
  
  <xs:group name="unknown">
	   <xs:choice>
		     <xs:group ref="unknown"/>
		     <xs:group ref="ma-d-unknown"/>
	   </xs:choice>
  </xs:group>

Costs

This change is backward compatible for instances.

Benefits

When using the DITA-OT to generate XHTML, the MathML content would fall through the process unmodified. A web browser that supports the MathML natively or via a plug-in would be able to render the MathML equation inline with the remainder of the content. An editor that recognizes both the DITA class attribute and the MathML vocabulary should be able to provide MathML editing within the <unknown> specialization -- for instance, using an equation editor for that content.

Time Required

Three days to refactor the existing DTD/XML Schema once the new design pattern has been verified.

Related Proposal

DITA Proposed Feature 34 - Constraints