Support for foreign content vocabularies via the <unknown> element.
The <unknown> element covers the ability to incorporate existing standard vocabularies for special content, like MathML and SVG, as inline objects. Since
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.
<p>... as in the formula <mathML> <mml:math display="block"> <mml:mrow> <mml:mo>∑</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>
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.
<!-- 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 ">
<!ENTITY % mathMLAlternate "mathMLAlternate"> <!ELEMENT mathML ((%math.qname;), (%mathMLAlternate;))>
<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>
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.