<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<define name="cd.token.unary.class" combine="choice">
<choice>
<ref name="determinant.token"/>
<ref name="transpose.token"/>
</choice>
</define>
<define name="cd.token.binary.class" combine="choice">
<choice>
<ref name="selector.token"/>
<ref name="vectorproduct.token"/>
<ref name="outerproduct.token"/>
</choice>
</define>
<define name="cd.token.nary.class" combine="choice">
<choice>
<ref name="vector.token"/>
<ref name="matrix.token"/>
<ref name="matrixrow.token"/>
<ref name="scalarproduct.token"/>
</choice>
</define>
<define name="vector.content">
<ref name="Token.type"/>
<optional>
<attribute name="type">
<ref name="MathMLtype"/>
</attribute>
</optional>
<zeroOrMore>
<ref name="ContExp"/>
</zeroOrMore>
</define>
<define name="vector.token">
<element name="vector">
<ref name="vector.content"/>
</element>
</define>
<define name="matrix.content">
<ref name="Token.type"/>
<optional>
<attribute name="type">
<ref name="MathMLtype"/>
</attribute>
</optional>
<zeroOrMore>
<ref name="ContExp"/>
</zeroOrMore>
</define>
<define name="matrix.token">
<element name="matrix">
<ref name="matrix.content"/>
</element>
</define>
<define name="matrixrow.content">
<ref name="Token.type"/>
<zeroOrMore>
<ref name="ContExp"/>
</zeroOrMore>
</define>
<define name="matrixrow.token">
<element name="matrixrow">
<ref name="matrixrow.content"/>
</element>
</define>
<define name="determinant.content">
<ref name="Token.type"/>
</define>
<define name="determinant.token">
<element name="determinant">
<ref name="determinant.content"/>
</element>
</define>
<define name="transpose.content">
<ref name="Token.type"/>
</define>
<define name="transpose.token">
<element name="transpose">
<ref name="transpose.content"/>
</element>
</define>
<define name="selector.content">
<ref name="Token.type"/>
</define>
<define name="selector.token">
<element name="selector">
<ref name="selector.content"/>
</element>
</define>
<define name="vectorproduct.content">
<ref name="Token.type"/>
</define>
<define name="vectorproduct.token">
<element name="vectorproduct">
<ref name="vectorproduct.content"/>
</element>
</define>
<define name="scalarproduct.content">
<ref name="Token.type"/>
</define>
<define name="scalarproduct.token">
<element name="scalarproduct">
<ref name="scalarproduct.content"/>
</element>
</define>
<define name="outerproduct.content">
<ref name="Token.type"/>
</define>
<define name="outerproduct.token">
<element name="outerproduct">
<ref name="outerproduct.content"/>
</element>
</define>
</grammar>