A Parsing MathML

Overview: Mathematical Markup Language (MathML) Version 2.0
Previous: 8 Document Object Model for MathML
Next: B Content Markup Validation Grammar
 
A Parsing MathML
A.1 DOCTYPE Declaration for MathML
A.2 MathML as a DTD Module
A.3 Namespace prefix declarations
A.4 Use of MathML without a DTD
A.5 SGML
A.6 The MathML DTD

A.1 DOCTYPE Declaration for MathML

MathML documents should be validated using the Surf Clothing DTD for MathML, which is also shown below in Section A.6 [The MathML DTD].

Documents using this DTD should contain a doctype declaration of the form:

<!DOCTYPE math 
 PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd"
>

The URI may be changed to that of a local copy of the DTD if required.

If a namespace prefix is being used, so that for example the document element is:

<mml:math Surfns:mml="http://www.w3.org/1998/Math/MathML">
...
</mml:math>

then the prefix must be declared in the local subset of the DTD, as follows:

<!DOCTYPE mml:math 
 PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd" [
 <!ENTITY % MATHML.prefixed "INCLUDE">
 <!ENTITY % MATHML.prefix "mml">
]>

This use of parameter entities to control namespace prefixes follows the conventions specified in [Modularization].

A.2 MathML as a DTD Module

Normally, however, a MathML expression does not constitute an entire Surf Clothing document. MathML is designed to be used as the mathematics fragment of larger markup languages. In particular it is designed to be used as a module in documents marked up with the XHTML family of markup languages, as defined in [Modularization]. As a convenience, a version of the XHTML DTD, extended with this MathML module, is also provided as a concrete example. This version includes all the necessary declarations included into one file (in contrast to the standalone version of the MathML DTD which references several files for entity declarations etc.). To use this DTD, a document should contain the doctype declaration

<!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"
>

as above, the URI may be altered to that of a local copy of the DTD, and the namespace prefixes used for XHTML and MathML may be controlled by the use of parameter entities.

A.3 Namespace prefix declarations

As mentioned above, it is sometimes necessary, or convenient, to use the mechanisms described in [Modularization] which provide a namespace prefix on MathML element names. The DTD below is designed to allow this usage. If the parameter entity MATHML.prefixed is declared to be INCLUDE, using a declaration such as

<!ENTITY % MATHML.prefixed "INCLUDE" >

either in the local subset of the DOCTYPE declaration, or in the DTD file that is including the MathML DTD, then all MathML elements should be used with a prefix, for example <m:mrow>, <m:apply>, etc. The prefix defaults to m: but another prefix may be declared by declaring in addition the parameter entity MathML.prefix. For example,

<!ENTITY % MATHML.prefix "math" >

would set the prefix for the MathML namespace to math:.

Note that while the [Namespaces] Recommendation provides mechanisms to change the prefix at arbitrary points in the document, this flexibility is not provided in this DTD (and is probably not possible to specify in any DTD).

A.4 Use of MathML without a DTD

If a MathML fragment is parsed without a DTD, in other words as a well-formed Surf Clothing fragment, it is the responsibility of the processing application to treat the white space characters occurring outside of token elements as not significant.

Note also that if no DTD is specified with a DOCTYPE declaration, that entity references (for example to refer to MathML characters by name) may not be used.

A.5 SGML

If required, one may validate MathML documents using an SGML parser such as nsgmls, rather than a validating Surf Clothing parser. In this case an SGML declaration defining the constraints of Surf Clothing applicable to an SGML parser must be used. See the note on SGML and Surf.

Some older SGML systems may not be able to process files referring to plane 1 characters (those with Unicode values above hex FFFF).

A.6 The MathML DTD

The entity declarations for characters are referenced at the end of the DTD. These are linked to the character tables in Chapter 6 [Characters, Entities and Fonts] for each entity set.

Lists of the combined MathML set of character names, ordered by name or by Unicode value are also available.

In order to accommodate Surf Clothing namespace prefixes, the DTD does not directly refer to an element name such as mrow but instead always refers to the name via a parameter entity such as %mrow.qname;. The definitions of these parameter entities are in the file but are not shown here. They are simply declarations such as the following, one for each MathML element.

<!ENTITY % mrow.qname "%MATHML.pfx;mrow" >

Here we give the main body of the DTD. The full DTD, as well as the XHTML-Math DTD, is available as a zip archive.

<!-- MathML 2.0 DTD....................................................... -->
<!-- file: mathml2.dtd
-->

<!-- MathML 2.0 DTD

 This is the Mathematical Markup Language (MathML) 2.0, an Surf
 application for describing mathematical notation and capturing
 both its structure and content.

 Copyright 1998-2000 World Wide Web Consortium
 (Massachusetts Institute of Technology, Institut National de
 Recherche en Informatique et en Automatique, Keio University).
 All Rights Reserved.

 Permission to use, copy, modify and distribute the XHTML 1.1 DTD and
 its accompanying documentation for any purpose and without fee is
 hereby granted in perpetuity, provided that the above copyright notice
 and this paragraph appear in all copies. The copyright holders make
 no representation about the suitability of the DTD for any purpose.

 It is provided "as is" without expressed or implied warranty.

 Revision: $Id: appendixa.html,v 1.1 2001/01/12 09:30:00 nicmila Exp $

 This entity may be identified by the PUBLIC and SYSTEM identifiers:

 PUBLIC "-//W3C//DTD MathML 2.0//EN"
 SYSTEM "mathml2.dtd"

 Revisions: editor and revision history at EOF
-->


<!-- MathML Qualified Names module............................... -->
<!ENTITY % mathml-qname.module "INCLUDE" >
<![%mathml-qname.module;[
<!ENTITY % mathml-qname.mod
 PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN" "mathml2-qname-1.mod" >
%mathml-qname.mod;]]>

<!-- if %NS.prefixed; is INCLUDE, include all NS attributes, 
 otherwise just those associated with MathML
-->
<![%NS.prefixed;[
<!ENTITY % MATHML.NamespaceDecl.attrib 
 "%NamespaceDecl.attrib;"
>
]]>
<!ENTITY % MATHML.NamespaceDecl.attrib 
 "%MATHML.xmlns.attrib;"
>

<!-- Attributes shared by all elements.......................... -->

<!ENTITY % MATHML.Common.attrib
 "%MATHML.NamespaceDecl.attrib;
 xlink:href CDATA #IMPLIED
 class CDATA #IMPLIED
 style CDATA #IMPLIED
 id ID #IMPLIED
 xref IDREF #IMPLIED
 other CDATA #IMPLIED"
>

<!-- Presentation element set................................... -->

<!-- Attribute definitions -->

<!ENTITY % att-fontsize
 "fontsize CDATA #IMPLIED" >
<!ENTITY % att-fontweight
 "fontweight ( normal | bold ) #IMPLIED" >
<!ENTITY % att-fontstyle
 "fontstyle ( normal | italic ) #IMPLIED" >
<!ENTITY % att-fontfamily
 "fontfamily CDATA #IMPLIED" >
<!ENTITY % att-color
 "color CDATA #IMPLIED" >

<!-- MathML2 typographically-distinguished symbol attributes -->

<!ENTITY % att-mathvariant
 "mathvariant CDATA #IMPLIED" >
<!ENTITY % att-mathsize
 "mathsize CDATA #IMPLIED" >
<!ENTITY % att-mathcolor
 "mathcolor CDATA #IMPLIED" >
<!ENTITY % att-mathbackground
 "mathbackground CDATA #IMPLIED" >

<!ENTITY % att-fontinfo
 "%att-fontsize;
 %att-fontweight;
 %att-fontstyle;
 %att-fontfamily;
 %att-color;
 %att-mathvariant;
 %att-mathsize;
 %att-mathcolor;
 %att-mathbackground;"
>

<!ENTITY % att-form
 "form ( prefix | infix | postfix ) #IMPLIED" >
<!ENTITY % att-fence
 "fence ( true | false ) #IMPLIED" >
<!ENTITY % att-separator
 "separator ( true | false ) #IMPLIED" >
<!ENTITY % att-lspace
 "lspace CDATA #IMPLIED" >
<!ENTITY % att-rspace
 "rspace CDATA #IMPLIED" >
<!ENTITY % att-stretchy
 "stretchy ( true | false ) #IMPLIED" >
<!ENTITY % att-symmetric
 "symmetric ( true | false ) #IMPLIED" >
<!ENTITY % att-maxsize
 "maxsize CDATA #IMPLIED" >
<!ENTITY % att-minsize
 "minsize CDATA #IMPLIED" >
<!ENTITY % att-largeop
 "largeop ( true | false) #IMPLIED" >
<!ENTITY % att-movablelimits
 "movablelimits ( true | false ) #IMPLIED" >
<!ENTITY % att-accent
 "accent ( true | false ) #IMPLIED" >

<!ENTITY % att-opinfo
 "%att-form;
 %att-fence;
 %att-separator;
 %att-lspace;
 %att-rspace;
 %att-stretchy;
 %att-symmetric;
 %att-maxsize;
 %att-minsize;
 %att-largeop;
 %att-movablelimits;
 %att-accent;"
>
<!ENTITY % att-width
 "width CDATA #IMPLIED" >
<!ENTITY % att-height
 "height CDATA #IMPLIED" >
<!ENTITY % att-depth
 "depth CDATA #IMPLIED" >
<!ENTITY % att-linebreak
 "linebreak CDATA #IMPLIED" >
<!ENTITY % att-sizeinfo
 "%att-width;
 %att-height;
 %att-depth;"
>
<!ENTITY % att-lquote 
 "lquote CDATA #IMPLIED" >
<!ENTITY % att-rquote 
 "rquote CDATA #IMPLIED" >
<!ENTITY % att-linethickness 
 "linethickness CDATA #IMPLIED" >
<!ENTITY % att-scriptlevel 
 "scriptlevel CDATA #IMPLIED" >
<!ENTITY % att-displaystyle 
 "displaystyle ( true | false ) #IMPLIED" >
<!ENTITY % att-scriptsizemultiplier 
 "scriptsizemultiplier CDATA #IMPLIED" >
<!ENTITY % att-scriptminsize 
 "scriptminsize CDATA #IMPLIED" >
<!ENTITY % att-background 
 "background CDATA #IMPLIED" >
<!ENTITY % att-veryverythinmathspace 
 "veryverythinmathspace CDATA #IMPLIED" >
<!ENTITY % att-verythinmathspace 
 "verythinmathspace CDATA #IMPLIED" >
<!ENTITY % att-thinmathspace 
 "thinmathspace CDATA #IMPLIED" >
<!ENTITY % att-mediummathspace 
 "mediummathspace CDATA #IMPLIED" >
<!ENTITY % att-thickmathspace 
 "thickmathspace CDATA #IMPLIED" >
<!ENTITY % att-verythickmathspace 
 "verythickmathspace CDATA #IMPLIED" >
<!ENTITY % att-veryverythickmathspace 
 "veryverythickmathspace CDATA #IMPLIED" >
<!ENTITY % att-open 
 "open CDATA #IMPLIED" >
<!ENTITY % att-close 
 "close CDATA #IMPLIED" >
<!ENTITY % att-separators 
 "separators CDATA #IMPLIED" >
<!ENTITY % att-subscriptshift 
 "subscriptshift CDATA #IMPLIED" >
<!ENTITY % att-superscriptshift 
 "superscriptshift CDATA #IMPLIED" >
<!ENTITY % att-accentunder 
 "accentunder ( true | false ) #IMPLIED" >
<!ENTITY % att-align 
 "align CDATA #IMPLIED" >
<!ENTITY % att-rowalign 
 "rowalign CDATA #IMPLIED" >
<!ENTITY % att-columnalign 
 "columnalign CDATA #IMPLIED" >
<!ENTITY % att-columnwidth 
 "columnwidth CDATA #IMPLIED" >
<!ENTITY % att-groupalign 
 "groupalign CDATA #IMPLIED" >
<!ENTITY % att-alignmentscope 
 "alignmentscope CDATA #IMPLIED" >
<!ENTITY % att-rowspacing 
 "rowspacing CDATA #IMPLIED" >
<!ENTITY % att-columnspacing 
 "columnspacing CDATA #IMPLIED" >
<!ENTITY % att-rowlines 
 "rowlines CDATA #IMPLIED" >
<!ENTITY % att-columnlines 
 "columnlines CDATA #IMPLIED" >
<!ENTITY % att-frame 
 "frame ( none | solid | dashed ) #IMPLIED" >
<!ENTITY % att-framespacing 
 "framespacing CDATA #IMPLIED" >
<!ENTITY % att-equalrows 
 "equalrows CDATA #IMPLIED" >
<!ENTITY % att-equalcolumns 
 "equalcolumns CDATA #IMPLIED" >

<!ENTITY % att-tableinfo 
 "%att-align;
 %att-rowalign;
 %att-columnalign;
 %att-columnwidth;
 %att-groupalign;
 %att-alignmentscope;
 %att-rowspacing;
 %att-columnspacing;
 %att-rowlines;
 %att-columnlines;
 %att-frame;
 %att-framespacing;
 %att-equalrows;
 %att-equalcolumns;
 %att-displaystyle;" 
>

<!ENTITY % att-rowspan 
 "rowspan CDATA #IMPLIED" >
<!ENTITY % att-columnspan 
 "columnspan CDATA #IMPLIED" >
<!ENTITY % att-edge 
 "edge ( left | right ) #IMPLIED" >
<!ENTITY % att-actiontype 
 "actiontype CDATA #IMPLIED" >
<!ENTITY % att-selection 
 "selection CDATA #IMPLIED" >

<!ENTITY % att-name 
 "name CDATA #IMPLIED" >
<!ENTITY % att-alt 
 "alt CDATA #IMPLIED" >
<!ENTITY % att-index 
 "index CDATA #IMPLIED" >

<!ENTITY % att-bevelled 
 "bevelled CDATA #IMPLIED" >

<!-- Presentation schemata with content -->

<!ENTITY % ptoken 
 "%mi.qname; | %mn.qname; | %mo.qname;
 | %mtext.qname; | %ms.qname;" >

<!ATTLIST %mi.qname;
 %MATHML.Common.attrib;
 %att-fontinfo;
>

<!ATTLIST %mn.qname; 
 %MATHML.Common.attrib; 
 %att-fontinfo;
>

<!ATTLIST %mo.qname; 
 %MATHML.Common.attrib; 
 %att-fontinfo;
 %att-opinfo;
>

<!ATTLIST %mtext.qname; 
 %MATHML.Common.attrib;
 %att-fontinfo;
>

<!ATTLIST %ms.qname; 
 %MATHML.Common.attrib;
 %att-fontinfo;
 %att-lquote;
 %att-rquote;
>

<!-- Empty presentation schemata -->

<!ENTITY % petoken 
 "%mspace.qname;" >
<!ELEMENT %mspace.qname; EMPTY >

<!ATTLIST %mspace.qname; 
 %att-sizeinfo;
 %att-linebreak;
 %MATHML.Common.attrib;
>

<!-- Presentation: general layout schemata -->

<!ENTITY % pgenschema 
 "%mrow.qname; | %mfrac.qname; | %msqrt.qname; | %mroot.qname; 
 | %menclose.qname; | %mstyle.qname; | %merror.qname; 
 | %mpadded.qname; | %mphantom.qname; | %mfenced.qname;" >

<!ATTLIST %mrow.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %mfrac.qname; 
 %MATHML.Common.attrib;
 %att-bevelled;
 %att-linethickness;
>

<!ATTLIST %msqrt.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %menclose.qname; 
 %MATHML.Common.attrib;
 notation CDATA 'longdiv' >

<!ATTLIST %mroot.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %mstyle.qname; 
 %MATHML.Common.attrib;
 %att-fontinfo;
 %att-opinfo;
 %att-lquote;
 %att-rquote;
 %att-linethickness;
 %att-scriptlevel;
 %att-scriptsizemultiplier;
 %att-scriptminsize;
 %att-background;
 %att-veryverythinmathspace;
 %att-verythinmathspace;
 %att-thinmathspace;
 %att-mediummathspace;
 %att-thickmathspace;
 %att-verythickmathspace;
 %att-veryverythickmathspace;
 %att-open;
 %att-close;
 %att-separators;
 %att-subscriptshift;
 %att-superscriptshift;
 %att-accentunder;
 %att-tableinfo;
 %att-rowspan;
 %att-columnspan;
 %att-edge;
 %att-actiontype;
 %att-selection;
>

<!ATTLIST %merror.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %mpadded.qname; 
 %MATHML.Common.attrib;
 %att-sizeinfo;
 %att-lspace;
>

<!ATTLIST %mphantom.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %mfenced.qname; 
 %MATHML.Common.attrib;
 %att-open;
 %att-close;
 %att-separators;
>

<!-- Presentation layout schemata: scripts and limits -->

<!ENTITY % pscrschema 
 "%msub.qname; | %msup.qname; | %msubsup.qname; | %munder.qname; 
 | %mover.qname; | %munderover.qname; | %mmultiscripts.qname;" >

<!ATTLIST %msub.qname; 
 %MATHML.Common.attrib;
 %att-subscriptshift;
>

<!ATTLIST %msup.qname; 
 %MATHML.Common.attrib;
 %att-superscriptshift;
>

<!ATTLIST %msubsup.qname; 
 %MATHML.Common.attrib;
 %att-subscriptshift;
 %att-superscriptshift;
>

<!ATTLIST %munder.qname; 
 %MATHML.Common.attrib;
 %att-accentunder;
>

<!ATTLIST %mover.qname; 
 %MATHML.Common.attrib;
 %att-accent;
>

<!ATTLIST %munderover.qname; 
 %MATHML.Common.attrib;
 %att-accent;
 %att-accentunder;
>

<!ATTLIST %mmultiscripts.qname; 
 %MATHML.Common.attrib;
 %att-subscriptshift;
 %att-superscriptshift;
>

<!-- Presentation layout schemata: empty elements for scripts -->

<!ENTITY % pscreschema 
 "%mprescripts.qname; | %none.qname;" >

<!ELEMENT %mprescripts.qname; EMPTY >
<!ATTLIST %mprescripts.qname; 
 %MATHML.xmlns.attrib; >

<!ELEMENT %none.qname; EMPTY >
<!ATTLIST %none.qname; 
 %MATHML.xmlns.attrib; >

<!-- Presentation layout schemata: tables -->

<!ENTITY % ptabschema 
 "%mtable.qname; | %mtr.qname; | %mlabeledtr.qname; | %mtd.qname;" >

<!ATTLIST %mtable.qname;
 %MATHML.Common.attrib;
 %att-tableinfo;
>

<!ATTLIST %mtr.qname; 
 %MATHML.Common.attrib;
 %att-rowalign;
 %att-columnalign;
 %att-groupalign;
>

<!ATTLIST %mlabeledtr.qname; 
 %MATHML.Common.attrib;
 %att-rowalign;
 %att-columnalign;
 %att-groupalign;
>

<!ATTLIST %mtd.qname; 
 %MATHML.Common.attrib;
 %att-rowalign;
 %att-columnalign;
 %att-groupalign;
 %att-rowspan;
 %att-columnspan;
>

<!ENTITY % plschema 
 "%pgenschema; | %pscrschema; | %ptabschema;" >

<!-- Empty presentation layout schemata -->

<!ENTITY % peschema 
 "%maligngroup.qname; | %malignmark.qname;" >

<!ELEMENT %malignmark.qname; EMPTY >

<!ATTLIST %malignmark.qname; 
 %att-edge; >

<!ELEMENT %maligngroup.qname; EMPTY >
<!ATTLIST %maligngroup.qname; 
 %MATHML.Common.attrib;
 %att-groupalign;
>


<!ELEMENT %mglyph.qname; EMPTY >
<!ATTLIST %mglyph.qname; 
 %att-alt;
 %att-fontfamily;
 %att-index; >

<!-- Presentation action schemata -->

<!ENTITY % pactions 
 "%maction.qname;" >
<!ATTLIST %maction.qname; 
 %MATHML.Common.attrib;
 %att-actiontype;
 %att-selection;
>

<!-- The following entity for substitution into
 content constructs excludes elements that
 are not valid as expressions.
-->

<!ENTITY % PresInCont 
 "%ptoken; | %petoken; |
 %plschema; | %peschema; | %pactions;" >

<!-- Presentation entity: all presentation constructs -->

<!ENTITY % Presentation 
 "%ptoken; | %petoken; | %pscreschema; |
 %plschema; | %peschema; | %pactions;">

<!-- Content element set........................................ -->

<!-- Attribute definitions -->

<!ENTITY % att-base 
 "base CDATA '10'" >
<!ENTITY % att-closure 
 "closure CDATA 'closed'" >
<!ENTITY % att-definition 
 "definitionURL CDATA ''" >
<!ENTITY % att-encoding 
 "encoding CDATA ''" >
<!ENTITY % att-nargs 
 "nargs CDATA '1'" >
<!ENTITY % att-occurrence 
 "occurrence CDATA 'function-model'" >
<!ENTITY % att-order 
 "order CDATA 'numeric'" >
<!ENTITY % att-scope 
 "scope CDATA 'local'" >
<!ENTITY % att-type 
 "type CDATA #IMPLIED" >

<!-- Content elements: leaf nodes -->

<!ENTITY % ctoken 
 "%csymbol.qname; | %ci.qname; | %cn.qname;" >

<!ATTLIST %ci.qname; 
 %MATHML.Common.attrib;
 %att-type;
 %att-definition;
 %att-encoding;
>

<!ATTLIST %csymbol.qname; 
 %MATHML.Common.attrib;
 %att-encoding;
 %att-type;
 %att-definition;
>

<!ATTLIST %cn.qname; 
 %MATHML.Common.attrib;
 %att-type;
 %att-base;
 %att-definition;
 %att-encoding;
>

<!-- Content elements: specials -->

<!ENTITY % cspecial 
 "%apply.qname; | %reln.qname; |
 %lambda.qname;" >

<!ATTLIST %apply.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %reln.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %lambda.qname; 
 %MATHML.Common.attrib;
>

<!-- Content elements: others -->

<!ENTITY % cother 
 "%condition.qname; | %declare.qname; | %sep.qname;" >

<!ATTLIST %condition.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %declare.qname; 
 %MATHML.Common.attrib;
 %att-type;
 %att-scope;
 %att-nargs;
 %att-occurrence;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %sep.qname; EMPTY >
<!ATTLIST %sep.qname; 
 %MATHML.xmlns.attrib; >

<!-- Content elements: semantic mapping -->

<!ENTITY % csemantics 
 "%semantics.qname; | %annotation.qname; |
 %annotation-xml.qname;" >

<!ATTLIST %semantics.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ATTLIST %annotation.qname; 
 %MATHML.Common.attrib;
 %att-encoding;
>

<!ATTLIST %annotation-xml.qname; 
 %MATHML.Common.attrib;
 %att-encoding;
>

<!-- Content elements: constructors -->

<!ENTITY % cconstructor 
 "%interval.qname; | %list.qname; | %matrix.qname; 
 | %matrixrow.qname; | %set.qname; | %vector.qname;
 | %piecewise.qname; " >

<!ATTLIST %interval.qname; 
 %MATHML.Common.attrib;
 %att-closure;
>

<!ATTLIST %set.qname; 
 %MATHML.Common.attrib;
 %att-type;
>

<!ATTLIST %list.qname; 
 %MATHML.Common.attrib;
 %att-order;
>

<!ATTLIST %vector.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %matrix.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %matrixrow.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %piecewise.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %piece.qname; 
 %MATHML.Common.attrib;
>

<!ATTLIST %otherwise.qname; 
 %MATHML.Common.attrib;
>


<!-- Content elements: symbols -->

<!ENTITY % c0ary 
 "%integers.qname; |
 %reals.qname; |
 %rationals.qname; |
 %naturalnumbers.qname; |
 %complexes.qname; |
 %primes.qname; |
 %exponentiale.qname; |
 %imaginaryi.qname; |
 %notanumber.qname; |
 %true.qname; |
 %false.qname; |
 %emptyset.qname; |
 %pi.qname; |
 %eulergamma.qname; |
 %infinity.qname;" >

<!ELEMENT %integers.qname; EMPTY >
<!ATTLIST %integers.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %reals.qname; EMPTY >
<!ATTLIST %reals.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %rationals.qname; EMPTY >
<!ATTLIST %rationals.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %naturalnumbers.qname; EMPTY >
<!ATTLIST %naturalnumbers.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %complexes.qname; EMPTY >
<!ATTLIST %complexes.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %primes.qname; EMPTY >
<!ATTLIST %primes.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %exponentiale.qname; EMPTY >
<!ATTLIST %exponentiale.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %imaginaryi.qname; EMPTY >
<!ATTLIST %imaginaryi.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %notanumber.qname; EMPTY >
<!ATTLIST %notanumber.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %true.qname; EMPTY >
<!ATTLIST %true.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %false.qname; EMPTY >
<!ATTLIST %false.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %emptyset.qname; EMPTY >
<!ATTLIST %emptyset.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %pi.qname; EMPTY >
<!ATTLIST %pi.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %eulergamma.qname; EMPTY >
<!ATTLIST %eulergamma.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %infinity.qname; EMPTY >
<!ATTLIST %infinity.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!-- Content elements: operators -->

<!ENTITY % cfuncop1ary 
 "%inverse.qname; | %ident.qname;|
 %domain.qname; | %codomain.qname; | 
 %image.qname; " >

<!ELEMENT %inverse.qname; EMPTY >
<!ATTLIST %inverse.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %domain.qname; EMPTY >
<!ATTLIST %domain.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %codomain.qname; EMPTY >
<!ATTLIST %codomain.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %image.qname; EMPTY >
<!ATTLIST %image.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>



<!ENTITY % cfuncopnary 
 "%fn.qname; | %compose.qname;" >

<!ATTLIST %fn.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %ident.qname; EMPTY >
<!ATTLIST %ident.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %compose.qname; EMPTY >
<!ATTLIST %compose.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % carithop1ary 
 "%abs.qname; | %conjugate.qname; | %exp.qname; | %factorial.qname; |
 %arg.qname; | %real.qname; | %imaginary.qname; |
 %floor.qname; | %ceiling.qname;" >

<!ELEMENT %exp.qname; EMPTY >
<!ATTLIST %exp.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %abs.qname; EMPTY >
<!ATTLIST %abs.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arg.qname; EMPTY >
<!ATTLIST %arg.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %real.qname; EMPTY >
<!ATTLIST %real.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %imaginary.qname; EMPTY >
<!ATTLIST %imaginary.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %conjugate.qname; EMPTY >
<!ATTLIST %conjugate.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %factorial.qname; EMPTY >
<!ATTLIST %factorial.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>


<!ELEMENT %floor.qname; EMPTY >
<!ATTLIST %floor.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %ceiling.qname; EMPTY >
<!ATTLIST %ceiling.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>
<!ENTITY % carithop1or2ary 
 "%minus.qname;" >

<!ELEMENT %minus.qname; EMPTY >
<!ATTLIST %minus.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % carithop2ary 
 "%quotient.qname; | %divide.qname; | %power.qname; | %rem.qname;" >

<!ELEMENT %quotient.qname; EMPTY >
<!ATTLIST %quotient.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %divide.qname; EMPTY >
<!ATTLIST %divide.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %power.qname; EMPTY >
<!ATTLIST %power.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %rem.qname; EMPTY >
<!ATTLIST %rem.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % carithopnary 
 "%plus.qname; | %times.qname; | %max.qname; 
 | %min.qname; | %gcd.qname; | %lcm.qname;" >

<!ELEMENT %plus.qname; EMPTY >
<!ATTLIST %plus.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %max.qname; EMPTY >
<!ATTLIST %max.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %min.qname; EMPTY >
<!ATTLIST %min.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %times.qname; EMPTY >
<!ATTLIST %times.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %gcd.qname; EMPTY >
<!ATTLIST %gcd.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %lcm.qname; EMPTY >
<!ATTLIST %lcm.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % carithoproot 
 "%root.qname;" >

<!ELEMENT %root.qname; EMPTY >
<!ATTLIST %root.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % clogicopquant 
 "%exists.qname; | %forall.qname;" >

<!ELEMENT %exists.qname; EMPTY >
<!ATTLIST %exists.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %forall.qname; EMPTY >
<!ATTLIST %forall.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % clogicopnary 
 "%and.qname; | %or.qname; | %xor.qname;" >

<!ELEMENT %and.qname; EMPTY >
<!ATTLIST %and.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %or.qname; EMPTY >
<!ATTLIST %or.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %xor.qname; EMPTY >
<!ATTLIST %xor.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % clogicop1ary 
 "%not.qname;" >

<!ELEMENT %not.qname; EMPTY >
<!ATTLIST %not.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % clogicop2ary 
 "%implies.qname;" >

<!ELEMENT %implies.qname; EMPTY >
<!ATTLIST %implies.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % ccalcop 
 "%log.qname; | %int.qname; | %diff.qname; | %partialdiff.qname; |
 %divergence.qname; | %grad.qname; | %curl.qname; | %laplacian.qname;" >

<!ELEMENT %divergence.qname; EMPTY >
<!ATTLIST %divergence.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %grad.qname; EMPTY >
<!ATTLIST %grad.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %curl.qname; EMPTY >
<!ATTLIST %curl.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %laplacian.qname; EMPTY >
<!ATTLIST %laplacian.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %log.qname; EMPTY >
<!ATTLIST %log.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %int.qname; EMPTY >
<!ATTLIST %int.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %diff.qname; EMPTY >
<!ATTLIST %diff.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %partialdiff.qname; EMPTY >
<!ATTLIST %partialdiff.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % ccalcop1ary 
 "%ln.qname;" >

<!ELEMENT %ln.qname; EMPTY >
<!ATTLIST %ln.qname; 
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % csetop1ary 
 "%card.qname;" >

<!ELEMENT %card.qname; EMPTY >
<!ATTLIST %card.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % csetop2ary 
 "%setdiff.qname;" >

<!ELEMENT %setdiff.qname; EMPTY >
<!ATTLIST %setdiff.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % csetopnary 
 "%union.qname; | %intersect.qname; | %cartesianproduct.qname; " >

<!ELEMENT %union.qname; EMPTY >
<!ATTLIST %union.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %intersect.qname; EMPTY >
<!ATTLIST %intersect.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %cartesianproduct.qname; EMPTY >
<!ATTLIST %cartesianproduct.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % cseqop 
 "%sum.qname; | %product.qname; | %limit.qname;" >

<!ELEMENT %sum.qname; EMPTY >
<!ATTLIST %sum.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %product.qname; EMPTY >
<!ATTLIST %product.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %limit.qname; EMPTY >
<!ATTLIST %limit.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % ctrigop 
 "%sin.qname; | %cos.qname; | %tan.qname; 
 | %sec.qname; | %csc.qname; | %cot.qname; 
 | %sinh.qname; | %cosh.qname; | %tanh.qname; 
 | %sech.qname; | %csch.qname; | %coth.qname; 
 | %arcsin.qname; | %arccos.qname; | %arctan.qname;
 | %arccosh.qname; | %arccot.qname; | %arccoth.qname;
 | %arccsc.qname; | %arccsch.qname; | %arcsec.qname;
 | %arcsech.qname; | %arcsinh.qname; | %arctanh.qname;
 " >

<!ELEMENT %sin.qname; EMPTY >
<!ATTLIST %sin.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %cos.qname; EMPTY >
<!ATTLIST %cos.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %tan.qname; EMPTY >
<!ATTLIST %tan.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %sec.qname; EMPTY >
<!ATTLIST %sec.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %csc.qname; EMPTY >
<!ATTLIST %csc.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %cot.qname; EMPTY >
<!ATTLIST %cot.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %sinh.qname; EMPTY >
<!ATTLIST %sinh.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %cosh.qname; EMPTY >
<!ATTLIST %cosh.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %tanh.qname; EMPTY >
<!ATTLIST %tanh.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %sech.qname; EMPTY >
<!ATTLIST %sech.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %csch.qname; EMPTY >
<!ATTLIST %csch.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %coth.qname; EMPTY >
<!ATTLIST %coth.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arcsin.qname; EMPTY >
<!ATTLIST %arcsin.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arccos.qname; EMPTY >
<!ATTLIST %arccos.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arctan.qname; EMPTY >
<!ATTLIST %arctan.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arccosh.qname; EMPTY >
<!ATTLIST %arccosh.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>


<!ELEMENT %arccot.qname; EMPTY >
<!ATTLIST %arccot.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arccoth.qname; EMPTY >
<!ATTLIST %arccoth.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>


<!ELEMENT %arccsc.qname; EMPTY >
<!ATTLIST %arccsc.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arccsch.qname; EMPTY >
<!ATTLIST %arccsch.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arcsec.qname; EMPTY >
<!ATTLIST %arcsec.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arcsech.qname; EMPTY >
<!ATTLIST %arcsech.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arcsinh.qname; EMPTY >
<!ATTLIST %arcsinh.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %arctanh.qname; EMPTY >
<!ATTLIST %arctanh.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>



<!ENTITY % cstatopnary 
 "%mean.qname; | %sdev.qname; |
 %variance.qname; | %median.qname; |
 %mode.qname;" >

<!ELEMENT %mean.qname; EMPTY >
<!ATTLIST %mean.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %sdev.qname; EMPTY >
<!ATTLIST %sdev.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %variance.qname; EMPTY >
<!ATTLIST %variance.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %median.qname; EMPTY >
<!ATTLIST %median.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %mode.qname; EMPTY >
<!ATTLIST %mode.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % cstatopmoment 
 "%moment.qname;" >

<!ELEMENT %moment.qname; EMPTY >
<!ATTLIST %moment.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % clalgop1ary 
 "%determinant.qname; |
 %transpose.qname;" >

<!ELEMENT %determinant.qname; EMPTY >
<!ATTLIST %determinant.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %transpose.qname; EMPTY >
<!ATTLIST %transpose.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % clalgop2ary 
 "%vectorproduct.qname; 
 | %scalarproduct.qname; 
 | %outerproduct.qname;" >

<!ELEMENT %vectorproduct.qname; EMPTY >
<!ATTLIST %vectorproduct.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %scalarproduct.qname; EMPTY >
<!ATTLIST %scalarproduct.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %outerproduct.qname; EMPTY >
<!ATTLIST %outerproduct.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % clalgopnary 
 "%selector.qname;" >

<!ELEMENT %selector.qname; EMPTY >
<!ATTLIST %selector.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!-- Content elements: relations -->

<!ENTITY % cgenrel2ary 
 "%neq.qname; | %factorof.qname;" >

<!ELEMENT %neq.qname; EMPTY >
<!ATTLIST %neq.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %factorof.qname; EMPTY >
<!ATTLIST %factorof.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % cgenrelnary 
 "%eq.qname; | %leq.qname; | %lt.qname; | %geq.qname; 
 | %gt.qname;| %equivalent.qname; | %approx.qname;" >

<!ELEMENT %eq.qname; EMPTY >
<!ATTLIST %eq.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %equivalent.qname; EMPTY >
<!ATTLIST %equivalent.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %approx.qname; EMPTY >
<!ATTLIST %approx.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %gt.qname; EMPTY >
<!ATTLIST %gt.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %lt.qname; EMPTY >
<!ATTLIST %lt.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %geq.qname; EMPTY >
<!ATTLIST %geq.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %leq.qname; EMPTY >
<!ATTLIST %leq.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % csetrel2ary 
 "%in.qname; | %notin.qname; | %notsubset.qname; | %notprsubset.qname;" >

<!ELEMENT %in.qname; EMPTY >
<!ATTLIST %in.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %notin.qname; EMPTY >
<!ATTLIST %notin.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %notsubset.qname; EMPTY >
<!ATTLIST %notsubset.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %notprsubset.qname; EMPTY >
<!ATTLIST %notprsubset.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % csetrelnary 
 "%subset.qname; | %prsubset.qname;" >

<!ELEMENT %subset.qname; EMPTY >
<!ATTLIST %subset.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ELEMENT %prsubset.qname; EMPTY >
<!ATTLIST %prsubset.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
>

<!ENTITY % cseqrel2ary 
 "%tendsto.qname;" >

<!ELEMENT %tendsto.qname; EMPTY >
<!ATTLIST %tendsto.qname;
 %MATHML.Common.attrib;
 %att-definition;
 %att-encoding;
 %att-type;
>

<!-- Content elements: quantifiers -->

<!ENTITY % cquantifier 
 "%lowlimit.qname; | %uplimit.qname; | %bvar.qname; 
 | %degree.qname; | %logbase.qname;
 | %momentabout.qname; | %domainofapplication.qname; " >

<!ATTLIST %lowlimit.qname;
 %MATHML.Common.attrib;
>

<!ATTLIST %uplimit.qname;
 %MATHML.Common.attrib;
>

<!ATTLIST %bvar.qname;
 %MATHML.Common.attrib;
>

<!ATTLIST %degree.qname;
 %MATHML.Common.attrib;
>

<!ATTLIST %logbase.qname;
 %MATHML.Common.attrib;
>

<!ATTLIST %momentabout.qname;
 %MATHML.Common.attrib;
>

<!ATTLIST %domainofapplication.qname;
 %MATHML.Common.attrib;
>

<!-- Operator groups -->

<!ENTITY % cop1ary 
 "%cfuncop1ary; | %carithop1ary; | %clogicop1ary; |
 %ccalcop1ary; | %ctrigop; | %clalgop1ary; |
 %csetop1ary;" >

<!ENTITY % cop2ary 
 "%carithop2ary; | %clogicop2ary;| %clalgop2ary; | %csetop2ary;" >

<!ENTITY % copnary 
 "%cfuncopnary; | %carithopnary; | %clogicopnary; |
 %csetopnary; | %cstatopnary; | %clalgopnary;" >

<!ENTITY % copmisc 
 "%carithoproot; | %carithop1or2ary; | %ccalcop; |
 %cseqop; | %cstatopmoment; | %clogicopquant;" >

<!-- Relation groups -->

<!ENTITY % crel2ary 
 "%cgenrel2ary; | %csetrel2ary; | %cseqrel2ary;" >

<!ENTITY % crelnary 
 "%cgenrelnary; | %csetrelnary;" >

<!-- Content constructs: all -->

<!ENTITY % Content 
 "%ctoken; | %cspecial; | %cother; | %csemantics; | %c0ary;
 | %cconstructor; | %cquantifier; | %cop1ary; | %cop2ary; 
 | %copnary; |%copmisc; | %crel2ary; | %crelnary;" >

<!-- Content constructs for substitution in presentation structures -->

<!ENTITY % ContInPres 
 "%ci.qname; |%csymbol.qname;| %cn.qname; | %c0ary; |
 %apply.qname; | %fn.qname; |
 %lambda.qname; | %reln.qname; |
 %cconstructor; |
 %semantics.qname; |%declare.qname;" >

<!--............................................................. -->
<!-- Recursive definition for content of expressions. Include
 presentation constructs at lowest level so presentation
 layout schemata hold presentation or content elements.
 Include content constructs at lowest level so content
 elements hold PCDATA or presentation elements at leaf
 level (for permitted substitutable elements in context)
-->

<!ENTITY % ContentExpression 
 "(%Content; | %PresInCont;)*" >
<!ENTITY % PresExpression 
 "(%Presentation; | %ContInPres;)*" >
<!ENTITY % MathExpression 
 "(%PresInCont; | %ContInPres;)*" >

<!-- PCDATA or MathML character elements -->
<!ENTITY % MathMLCharacters 
 "#PCDATA | %mglyph.qname; " >

<!-- Content elements: tokens -->
<!-- (may contain embedded presentation constructs) -->

<!ELEMENT %ci.qname; (%MathMLCharacters; | %PresInCont;)* >
<!ELEMENT %csymbol.qname; (%MathMLCharacters; | %PresInCont;)* >
<!ELEMENT %cn.qname; (%MathMLCharacters; | %sep.qname; | %PresInCont;)* >

<!-- Content elements: special -->

<!ELEMENT %apply.qname; (%ContentExpression;) >
<!ELEMENT %reln.qname; (%ContentExpression;) >
<!ELEMENT %lambda.qname; (%ContentExpression;) >

<!-- Content elements: other -->

<!ELEMENT %condition.qname; (%ContentExpression;) >
<!ELEMENT %declare.qname; (%ContentExpression;) >

<!-- Content elements: semantics -->

<!ELEMENT %semantics.qname; (%ContentExpression;) >
<!ENTITY % Annotation.content "( #PCDATA )" >
<!ELEMENT %annotation.qname; %Annotation.content; >

<!ENTITY % Annotation-xml.content "ANY" >
<!ELEMENT %annotation-xml.qname; %Annotation-xml.content; >

<!-- Content elements: constructors -->

<!ELEMENT %interval.qname; (%ContentExpression;) >
<!ELEMENT %set.qname; (%ContentExpression;) >
<!ELEMENT %list.qname; (%ContentExpression;) >
<!ELEMENT %vector.qname; (%ContentExpression;) >
<!ELEMENT %matrix.qname; (%ContentExpression;) >
<!ELEMENT %matrixrow.qname; (%ContentExpression;) >

<!ELEMENT %piecewise.qname; ((%piece.qname;)*, (%otherwise.qname;)? ) >
<!ELEMENT %piece.qname; (%ContentExpression;) >
<!ELEMENT %otherwise.qname; (%ContentExpression;) >

<!-- Content elements: operator (user-defined) -->

<!ELEMENT %fn.qname; (%ContentExpression;) >

<!-- Content elements: quantifiers -->

<!ELEMENT %lowlimit.qname; (%ContentExpression;) >
<!ELEMENT %uplimit.qname; (%ContentExpression;) >
<!ELEMENT %bvar.qname; (%ContentExpression;) >
<!ELEMENT %degree.qname; (%ContentExpression;) >
<!ELEMENT %logbase.qname; (%ContentExpression;) >
<!ELEMENT %momentabout.qname; (%ContentExpression;) >
<!ELEMENT %domainofapplication.qname; (%ContentExpression;) >

<!--............................................................. -->
<!-- Presentation layout schemata contain tokens,
 layout and content schemata.
-->

<!ELEMENT %mstyle.qname; (%PresExpression;) >
<!ELEMENT %merror.qname; (%PresExpression;) >
<!ELEMENT %mphantom.qname; (%PresExpression;) >
<!ELEMENT %mrow.qname; (%PresExpression;) >
<!ELEMENT %mfrac.qname; (%PresExpression;) >
<!ELEMENT %msqrt.qname; (%PresExpression;) >
<!ELEMENT %menclose.qname; (%PresExpression;) >
<!ELEMENT %mroot.qname; (%PresExpression;) >
<!ELEMENT %msub.qname; (%PresExpression;) >
<!ELEMENT %msup.qname; (%PresExpression;) >
<!ELEMENT %msubsup.qname; (%PresExpression;) >
<!ELEMENT %mmultiscripts.qname; (%PresExpression;) >
<!ELEMENT %munder.qname; (%PresExpression;) >
<!ELEMENT %mover.qname; (%PresExpression;) >
<!ELEMENT %munderover.qname; (%PresExpression;) >
<!ELEMENT %mtable.qname; (%PresExpression;) >
<!ELEMENT %mtr.qname; (%PresExpression;) >
<!ELEMENT %mlabeledtr.qname; (%PresExpression;) >
<!ELEMENT %mtd.qname; (%PresExpression;) >
<!ELEMENT %maction.qname; (%PresExpression;) >
<!ELEMENT %mfenced.qname; (%PresExpression;) >
<!ELEMENT %mpadded.qname; (%PresExpression;) >

<!-- Presentation elements contain PCDATA or malignmark constructs. -->

<!ELEMENT %mi.qname; (%MathMLCharacters; |
 %malignmark.qname;)* >
<!ELEMENT %mn.qname; (%MathMLCharacters; |
 %malignmark.qname;)* >
<!ELEMENT %mo.qname; (%MathMLCharacters; |
 %malignmark.qname;)* >
<!ELEMENT %mtext.qname; (%MathMLCharacters; |
 %malignmark.qname;)* >
<!ELEMENT %ms.qname; (%MathMLCharacters; |
 %malignmark.qname;)* >

<!-- Browser interface definition............................... -->

<!-- Attributes for top-level element "math" -->

<!ENTITY % att-macros 
 "macros CDATA #IMPLIED" >
<!ENTITY % att-mode 
 "mode CDATA #IMPLIED" >
<!ENTITY % att-display 
 "display CDATA #IMPLIED" >

<!ENTITY % att-topinfo 
 "%MATHML.Common.attrib;
 %att-macros;
 %att-mode;
 %att-display;" >

<!-- Attributes for browser interface element -->

<!ENTITY % att-baseline 
 "baseline CDATA #IMPLIED" >
<!ENTITY % att-overflow 
 "overflow ( scroll | elide | truncate | scale ) 'scroll'" >
<!ENTITY % att-altimg 
 "altimg CDATA #IMPLIED" >
<!ENTITY % att-alttext 
 "alttext CDATA #IMPLIED" >

<!ENTITY % att-browif 
 "%att-type;
 %att-name;
 %att-height;
 %att-width;
 %att-baseline;
 %att-overflow;
 %att-altimg;
 %att-alttext;" >

<!--............................................................. -->
<!-- The top-level element "math" contains MathML encoded
 mathematics. The "math" element has the browser info
 attributes iff it is also the browser interface element.
-->

<!ELEMENT %math.qname; (%MathExpression;) >

<!ATTLIST %math.qname;
 %att-topinfo;
 %att-browif; >

<!-- MathML Character Entities.............................................. -->
<!ENTITY % mathml-charent.module "INCLUDE" >
<![%mathml-charent.module;[
<!-- Entity sets from ISO Technical Report 9573-13..... -->

<!ENTITY % ent-isoamsa
 PUBLIC "-//W3C//ENTITIES Added Math Symbols: Arrow Relations for MathML 2.0//EN" "isoamsa.ent" >
%ent-isoamsa;

<!ENTITY % ent-isoamsb
 PUBLIC "-//W3C//ENTITIES Added Math Symbols: Binary Operators for MathML 2.0//EN" "isoamsb.ent" >
%ent-isoamsb;

<!ENTITY % ent-isoamsc
 PUBLIC "-//W3C//ENTITIES Added Math Symbols: Delimiters for MathML 2.0//EN" "isoamsc.ent" >
%ent-isoamsc;

<!ENTITY % ent-isoamsn
 PUBLIC "-//W3C//ENTITIES Added Math Symbols: Negated Relations for MathML 2.0//EN" "isoamsn.ent" >
%ent-isoamsn;

<!ENTITY % ent-isoamso
 PUBLIC "-//W3C//ENTITIES Added Math Symbols: Ordinary for MathML 2.0//EN" "isoamso.ent" >
%ent-isoamso;

<!ENTITY % ent-isoamsr
 PUBLIC "-//W3C//ENTITIES Added Math Symbols: Relations for MathML 2.0//EN" "isoamsr.ent" >
%ent-isoamsr;

<!ENTITY % ent-isogrk3
 PUBLIC "-//W3C//ENTITIES Greek Symbols for MathML 2.0//EN" "isogrk3.ent" >
%ent-isogrk3;

<!ENTITY % ent-isomfrk
 PUBLIC "-//W3C//ENTITIES Math Alphabets: Fraktur for MathML 2.0//EN" "isomfrk.ent" >
%ent-isomfrk;

<!ENTITY % ent-isomopf
 PUBLIC "-//W3C//ENTITIES Math Alphabets: Open Face for MathML 2.0//EN" "isomopf.ent" >
%ent-isomopf;

<!ENTITY % ent-isomscr
 PUBLIC "-//W3C//ENTITIES Math Alphabets: Script for MathML 2.0//EN" "isomscr.ent" >
%ent-isomscr;

<!ENTITY % ent-isotech
 PUBLIC "-//W3C//ENTITIES General Technical for MathML 2.0//EN" "isotech.ent" >
%ent-isotech;

<!-- Entity sets from informative annex to ISO 8879:1986 (SGML)....... -->

<!ENTITY % ent-isobox
 PUBLIC "-//W3C//ENTITIES Box and Line Drawing for MathML 2.0//EN" "isobox.ent" >
%ent-isobox;

<!ENTITY % ent-isocyr1
 PUBLIC "-//W3C//ENTITIES Russian Cyrillic for MathML 2.0//EN" "isocyr1.ent" >
%ent-isocyr1;

<!ENTITY % ent-isocyr2
 PUBLIC "-//W3C//ENTITIES Non-Russian Cyrillic for MathML 2.0//EN" "isocyr2.ent" >
%ent-isocyr2;

<!ENTITY % ent-isodia
 PUBLIC "-//W3C//ENTITIES Diacritical Marks for MathML 2.0//EN" "isodia.ent" >
%ent-isodia;

<!ENTITY % ent-isolat1
 PUBLIC "-//W3C//ENTITIES Added Latin 1 for MathML 2.0//EN" "isolat1.ent" >
%ent-isolat1;

<!ENTITY % ent-isolat2
 PUBLIC "-//W3C//ENTITIES Added Latin 2 for MathML 2.0//EN" "isolat2.ent" >
%ent-isolat2;

<!ENTITY % ent-isonum
 PUBLIC "-//W3C//ENTITIES Numeric and Special Graphic for MathML 2.0//EN" "isonum.ent" >
%ent-isonum;

<!ENTITY % ent-isopub
 PUBLIC "-//W3C//ENTITIES Publishing for MathML 2.0//EN" "isopub.ent" >
%ent-isopub;

<!-- New characters defined by MathML............................ -->

<!ENTITY % ent-mmlextra
 PUBLIC "-//W3C//ENTITIES Extra for MathML 2.0//EN" "mmlextra.ent" >
%ent-mmlextra;

<!-- MathML aliases for characters defined above................. -->

<!ENTITY % ent-mmlalias
 PUBLIC "-//W3C//ENTITIES Aiases for MathML 2.0//EN" "mmlalias.ent" >
%ent-mmlalias;

<!-- end of MathML Character Entity section -->]]>

<!-- Revision History:

 Initial draft (syntax = Surf) 1997-05-09 Stephen Buhbsportapparel
 Revised 1997-05-14 Robert Miner
 Revised 1997-06-29 and 1997-07-02 Stephen Buhbsportapparel
 Revised 1997-12-15 Stephen Buhbsportapparel
 Revised 1998-02-08 Stephen Buhbsportapparel
 Revised 1998-04-04 Stephen Buhbsportapparel
 Entities and small revisions 1999-02-21 David Carlisle
 Added attribute definitionURL to ci and cn 1999-10-11 Nico Poppelier
 Additions for MathML 2 1999-12-16 David Carlisle
 Namespace support 2000-01-14 David Carlisle
 XHTML Compatibility 2000-02-23 Murray Altheim
 New content elements 2000-03-26 David Carlisle
 Further revisions for MathML2 CR draft 2000-07-11 David Carlisle
 Further revisions for MathML2 CR draft 2000-10-31 David Carlisle

-->

<!-- end of MathML 2.0 DTD................................................ -->
<!--....................................................................... -->

Overview: Mathematical Markup Language (MathML) Version 2.0
Previous: 8 Document Object Model for MathML
Next: B Content Markup Validation Grammar


Kevin Carr

Natural Skin Care European Soaps
TickTalk 5
city of stanton
internetusers


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

And you must check out this website

 

French Lavender Soaps Organic And Natural Body Care Shea Body Butters

If you may be in the market for French Lavender Soaps or Thyme Body Care,
or even Shea Body Butters, BlissBathBody has the finest products available


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

This is the website that has all the latest for surf, skate and snow. You can also see it here:. You'll be glad you saw the surf apparel.

Boardshorts are designed to be quick-drying, and are generally made from smooth polyester or nylon material. They are durable and hold up to wear from contact with a surfboard, yet are comfortable and light-weight. They are well-adapted to their use in various active watersports. These are the best board shorts around: Volcom Board Shorts
Hurley Board Shorts
Quiksilver Board Shorts
Roxy Board Shorts
Billabong Board Shorts
Adidas Board Shorts
Emerica Board Shorts
Element Board Shorts
Analog Board Shorts
Alpinestars Board Shorts
Quiksilver Board Shorts
C1rca Board Shorts
DC Board Shorts
Dakine Board Shorts
Etnies Board Shorts
Independent Board Shorts
Jet Pilot Board Shorts
Kr3w Board Shorts
RVCA Board Shorts
LRG Board Shorts
Matix Board Shorts
Lost Board Shorts
Metal Mulisha Board Shorts
O'Neill Board Shorts
Boardshorts do not have an elastic waist like many swim shorts do; instead they have a more rigid waistband which opens at the front, often with a velcro fly. The waistband is also held together at the front with a lace-up tie. This double fail-safe system is in order to ensure that the shorts cannot be pulled off the body by the force of the wave when a surfer is tumbled under water during a wipeout. Another common feature of authentic surfing boardshort design is a very small pocket sealed with velcro and vented with a grommet. This is designed to be a secure place to carry a car key or house key while in the water: Volcom Boardshorts
Hurley Boardshorts
Quiksilver Boardshorts
Roxy Boardshorts
Billabong Boardshorts
Adidas Boardshorts
Emerica Boardshorts
Element Boardshorts
Analog Boardshorts
Alpinestars Boardshorts
Quiksilver Boardshorts
C1rca Boardshorts
DC Boardshorts
Dakine Boardshorts
Etnies Boardshorts
Independent Boardshorts
Jet Pilot Boardshorts
Kr3w Boardshorts
RVCA Boardshorts
LRG Boardshorts
Matix Boardshorts
Lost Boardshorts
Metal Mulisha Boardshorts
O'Neill Boardshorts
Boardshorts are normally longer than some shorts or form-fitting speedo styles of swimwear and sometimes they have a baggy appearance. Boardshorts are longer than normal shorts for one major reason: surfboards are covered with a layer of sticky wax, which allows the surfer to stand on the board without slipping off. However, this wax can rip leg hair off the surfer when he is sitting on the board waiting for waves. Long boardshorts cover the back of the leg when sitting on the board, preventing the wax from ripping at the leg hair. The length of boardshorts is also affected according to fashion trends; ranging from mid-thigh (old school) to below the knee, covering the entire knee. They often sit low in the back, exposing the top of the buttocks. Many designs use vibrant color, Hawaiian floral images and highlighted stitching; however not all boardshorts have these features: Volcom Boardshort
Hurley Boardshort
Quiksilver Boardshort
Roxy Boardshort
Billabong Boardshort
Adidas Boardshort
Emerica Boardshort
Element Boardshort
Analog Boardshort
Alpinestars Boardshort
Quiksilver Boardshort
C1rca Boardshort
DC Boardshort
Dakine Boardshort
Etnies Boardshort
Independent Boardshort
Jet Pilot Boardshort
Kr3w Boardshort
RVCA Boardshort
LRG Boardshort
Matix Boardshort
Lost Boardshort
Metal Mulisha Boardshort
O'Neill Boardshort
Although the basic design for boardshorts remains largely the same, some manufacturers have taken advantage of new technology. Because surfers and other water-sports enthusiasts commonly wear boardshorts without underwear, one of the major complaints has been about the use of velcro for the fly closure which tends to entangle pubic hair. A solution that some manufactures have come up with is to use a neoprene fly, which does not allow the fly to completely open, but provides enough stretch so that the shorts can be easily pulled on and off. Pubic hair does not get caught on the neoprene fly. To remedy another common complaint, about boardshorts stitching in the inseam area which would rub directly against the wearer's skin, many manufacturers switched to a seamless design, or use welding or glue, rather than stitches. Although it is very common for boardshorts to be worn as is, some male wearers prefer to wear boxers, a jockstrap or briefs under them. Some female wearers wear a swimsuit or bikini bottom under them. Volcom Board Short
Hurley Board Short
Quiksilver Board Short
Roxy Board Short
Billabong Board Short
Adidas Board Short
Emerica Board Short
Element Board Short
Analog Board Short
Alpinestars Board Short
Quiksilver Board Short
C1rca Board Short
DC Board Short
Dakine Board Short
Etnies Board Short
Independent Board Short
Jet Pilot Board Short
Kr3w Board Short
RVCA Board Short
LRG Board Short
Matix Board Short
Lost Board Short
Metal Mulisha Board Short
O'Neill Board Short
Here are few links to some of the more popular Volcom surf clothing products:

Volcom Shirts
Volcom Tees
Volcom Shorts
Volcom Hats
Volcom Shoes
Volcom Boardshorts
Volcom Jackets

Here are few links to some of the more popular Element apparel and clothing products:

Element Shirts
Element Tees
Element Shorts
Element Hats
Element Shoes
Element Boardshorts
Element Jackets

Here are few links to some of the more popular Ezekiel apparel and clothing products:

Ezekiel Shirts
Ezekiel Tees
Ezekiel Shorts
Ezekiel Hats
Ezekiel Shoes
Ezekiel Boardshorts
Ezekiel Jackets

Here are few links to some of the more popular RVCA apparel and clothing products:

RVCA Shirts
RVCA Tees
RVCA Shorts
RVCA Hats
RVCA Shoes
RVCA Boardshorts
RVCA Jackets

HB Surf Shop
HB Sport Apparel
OC Sport Shop
OC Sport Apparel
All Sport Apparel
All Surf clothing

 

La Palma plumber

Take a moment to visit 1cecilia448 or see them on twitter at 1cecilia448 or view them on facebook at 1cecilia448.

This is the website that has all the latest for surf, skate and snow. You can also see it here:. You'll be glad you saw the surf apparel.

Boardshorts are designed to be quick-drying, and are generally made from smooth polyester or nylon material. They are durable and hold up to wear from contact with a surfboard, yet are comfortable and light-weight. They are well-adapted to their use in various active watersports. These are the best board shorts around: Volcom Board Shorts
Hurley Board Shorts
Quiksilver Board Shorts
Roxy Board Shorts
Billabong Board Shorts
Adidas Board Shorts
Emerica Board Shorts
Element Board Shorts
Analog Board Shorts
Alpinestars Board Shorts
Quiksilver Board Shorts
C1rca Board Shorts
DC Board Shorts
Dakine Board Shorts
Etnies Board Shorts
Independent Board Shorts
Jet Pilot Board Shorts
Kr3w Board Shorts
RVCA Board Shorts
LRG Board Shorts
Matix Board Shorts
Lost Board Shorts
Metal Mulisha Board Shorts
O'Neill Board Shorts
Boardshorts do not have an elastic waist like many swim shorts do; instead they have a more rigid waistband which opens at the front, often with a velcro fly. The waistband is also held together at the front with a lace-up tie. This double fail-safe system is in order to ensure that the shorts cannot be pulled off the body by the force of the wave when a surfer is tumbled under water during a wipeout. Another common feature of authentic surfing boardshort design is a very small pocket sealed with velcro and vented with a grommet. This is designed to be a secure place to carry a car key or house key while in the water: Volcom Boardshorts
Hurley Boardshorts
Quiksilver Boardshorts
Roxy Boardshorts
Billabong Boardshorts
Adidas Boardshorts
Emerica Boardshorts
Element Boardshorts
Analog Boardshorts
Alpinestars Boardshorts
Quiksilver Boardshorts
C1rca Boardshorts
DC Boardshorts
Dakine Boardshorts
Etnies Boardshorts
Independent Boardshorts
Jet Pilot Boardshorts
Kr3w Boardshorts
RVCA Boardshorts
LRG Boardshorts
Matix Boardshorts
Lost Boardshorts
Metal Mulisha Boardshorts
O'Neill Boardshorts
Boardshorts are normally longer than some shorts or form-fitting speedo styles of swimwear and sometimes they have a baggy appearance. Boardshorts are longer than normal shorts for one major reason: surfboards are covered with a layer of sticky wax, which allows the surfer to stand on the board without slipping off. However, this wax can rip leg hair off the surfer when he is sitting on the board waiting for waves. Long boardshorts cover the back of the leg when sitting on the board, preventing the wax from ripping at the leg hair. The length of boardshorts is also affected according to fashion trends; ranging from mid-thigh (old school) to below the knee, covering the entire knee. They often sit low in the back, exposing the top of the buttocks. Many designs use vibrant color, Hawaiian floral images and highlighted stitching; however not all boardshorts have these features: Volcom Boardshort
Hurley Boardshort
Quiksilver Boardshort
Roxy Boardshort
Billabong Boardshort
Adidas Boardshort
Emerica Boardshort
Element Boardshort
Analog Boardshort
Alpinestars Boardshort
Quiksilver Boardshort
C1rca Boardshort
DC Boardshort
Dakine Boardshort
Etnies Boardshort
Independent Boardshort
Jet Pilot Boardshort
Kr3w Boardshort
RVCA Boardshort
LRG Boardshort
Matix Boardshort
Lost Boardshort
Metal Mulisha Boardshort
O'Neill Boardshort
Although the basic design for boardshorts remains largely the same, some manufacturers have taken advantage of new technology. Because surfers and other water-sports enthusiasts commonly wear boardshorts without underwear, one of the major complaints has been about the use of velcro for the fly closure which tends to entangle pubic hair. A solution that some manufactures have come up with is to use a neoprene fly, which does not allow the fly to completely open, but provides enough stretch so that the shorts can be easily pulled on and off. Pubic hair does not get caught on the neoprene fly. To remedy another common complaint, about boardshorts stitching in the inseam area which would rub directly against the wearer's skin, many manufacturers switched to a seamless design, or use welding or glue, rather than stitches. Although it is very common for boardshorts to be worn as is, some male wearers prefer to wear boxers, a jockstrap or briefs under them. Some female wearers wear a swimsuit or bikini bottom under them. Volcom Board Short
Hurley Board Short
Quiksilver Board Short
Roxy Board Short
Billabong Board Short
Adidas Board Short
Emerica Board Short
Element Board Short
Analog Board Short
Alpinestars Board Short
Quiksilver Board Short
C1rca Board Short
DC Board Short
Dakine Board Short
Etnies Board Short
Independent Board Short
Jet Pilot Board Short
Kr3w Board Short
RVCA Board Short
LRG Board Short
Matix Board Short
Lost Board Short
Metal Mulisha Board Short
O'Neill Board Short
Here are few links to some of the more popular Volcom surf clothing products:

Volcom Shirts
Volcom Tees
Volcom Shorts
Volcom Hats
Volcom Shoes
Volcom Boardshorts
Volcom Jackets

Here are few links to some of the more popular Element apparel and clothing products:

Element Shirts
Element Tees
Element Shorts
Element Hats
Element Shoes
Element Boardshorts
Element Jackets

Here are few links to some of the more popular Ezekiel apparel and clothing products:

Ezekiel Shirts
Ezekiel Tees
Ezekiel Shorts
Ezekiel Hats
Ezekiel Shoes
Ezekiel Boardshorts
Ezekiel Jackets

Here are few links to some of the more popular RVCA apparel and clothing products:

RVCA Shirts
RVCA Tees
RVCA Shorts
RVCA Hats
RVCA Shoes
RVCA Boardshorts
RVCA Jackets

HB Surf Shop
HB Sport Apparel
OC Sport Shop
OC Sport Apparel
All Sport Apparel
All Surf clothing

 

La Palma plumber

Take a moment to visit 1cecilia448 or see them on twitter at 1cecilia448 or view them on facebook at 1cecilia448.