The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!-- file: myml-qname-1.mod -->

<!-- Bring in the datatypes - we use the URI.datatype PE for declaring the
     xmlns attributes. -->
<!ENTITY % MyML-datatypes.mod
         SYSTEM "xhtml-datatypes-1.mod" >
%MyML-datatypes.mod;

<!-- By default, disable prefixing of this module -->
<!ENTITY % NS.prefixed "IGNORE" >
<!ENTITY % MyML.prefixed "%NS.prefixed;" >

<!-- Declare the actual namespace of this module -->
<!ENTITY % MyML.xmlns "http://www.example.com/xmlns/myml" >

<!-- Declare the default prefix for this module -->
<!ENTITY % MyML.prefix "myml" >

<!-- If this module's namespace is prefixed -->
<![%MyML.prefixed;[
  <!ENTITY % MyML.pfx  "%MyML.prefix;:" >
]]>
<!ENTITY % MyML.pfx  "" >

<!-- This entity is ALWAYS prefixed, for use when adding our
     attributes to an element in another namespace -->
<!ENTITY % MyML.xmlns.attrib.prefixed
   "xmlns:%MyML.prefix;  %URI.datatype;  #FIXED '%MyML.xmlns;'"
>

<!-- Declare a Parameter Entity (PE) that defines any external namespaces 
     that are used by this module -->
<!ENTITY % MyML.xmlns.extra.attrib "" >

<!-- Declare a PE that defines the xmlns attributes for use by MyML. -->
<![%MyML.prefixed;[
<!ENTITY % MyML.xmlns.attrib
   "%MyML.xmlns.attrib.prefixed;
    %MyML.xmlns.extra.attrib;"
>
<!-- Make sure that the MyML namespace attributes are included on the XHTML
     attribute set -->
<!ENTITY % XHTML.xmlns.extra.attrib
	"%MyML.xmlns.attrib;" >
]]>
<!-- if we are not prefixed, then our elements should have the default
     namespace AND the prefixed namespace is added to the XHTML set
	 because our attributes can be referenced on those elements
-->
<!ENTITY % MyML.xmlns.attrib
   "xmlns	%URI.datatype;	#FIXED '%MyML.xmlns;'
   	%MyML.xmlns.extra.attrib;"
>
<!ENTITY % XHTML.xmlns.extra.attrib
   "%MyML.xmlns.attrib.prefixed;"
>
<!-- Now declare the element names -->

<!ENTITY % MyML.myelement.qname "%MyML.pfx;myelement" >
<!ENTITY % MyML.myotherelement.qname "%MyML.pfx;myotherelement" >