XNGloss is a language intended to be used as a de facto dereferencable resource for namespaces, as per the recent discussions on XML-DEV, and the proposal by Tim Bray.
This specification outlines an XHTML Family that has been derived from XHTML Basic. It has been modified in the following ways:-
link
element has been changed
so that it may now include xng:resource
elements
xng:resource
elements may now be used inside
link
elements, and they are of content type
EMPTY
The prologue of the file is as follows:-
<!DOCTYPE html PUBLIC "-//Infomesh.net//DTD XHTML XNG 1.0 //EN" "http://infomesh.net/2001/01/xngloss/dtd/"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xng="http://infomesh.net/2001/01/xngloss/ns/" xml:lang="en" >
To validate, the file must meet the constraints expressed at http://infomesh.net/2001/01/xngloss/dtd/ (@@ to do; not authored yet)
The link element is to be used in the following way:-
alternative
xngmeta
(XML namespace gloss meta)Resource:-
simple
arcrole
Multiple resources
's are allowed because of family Schemas,
for example, a link to further XHTML may have three types of DTD: Strict,
Transitional, Frameset.
<!-- XHTML Modularization XNG Module 1.0 ............................ --> <!-- file: xng.mod This is a simple XNG module for XHTML Modularizaion, adding simple XNG capabilities to any DTD that references it. Sean B. Palmer, Infomesh.net, sean@mysterylights.com ................................................................. --> <!-- Bring in the QName file for xng, giving the xng: prefix for the namespace --> <!ENTITY % xng-qname.mod SYSTEM "xng-qname.mod"> %xng-qname.mod; <!-- Bring in the QName file for xlink, giving the xlink: prefix for the namespace --> <!ENTITY % xlink-qname.mod SYSTEM "xlink-qname.mod"> %xlink-qname.mod; <!ENTITY % link.content "( %xng.resource.qname; )*" > <!ELEMENT %link.qname; %link.content; > <!ATTLIST %link.qname; %xng.type.qname; (xngmeta) #FIXED "xngmeta" > <!ENTITY % xng.resource.qname "%xng.pfx;resource" > <!ENTITY % xng.resource.content "EMPTY" > <!ELEMENT %xng.resource.qname %xng.resource.content; > <!ATTLIST %xng.resource.qname; %xlink.type.qname; (simple) #FIXED "simple" %xlink.arcrole.qname; CDATA #IMPLIED %xlink.href.qname; CDATA #REQUIRED %xlink.title.qname; CDATA #IMPLIED > <!-- %xlink.role.qname; CDATA #IMPLIED --> <!-- End of XHTML Modularization XNG Module 1.0 -->
Here is an example of XNGloss:
<!DOCTYPE html PUBLIC "-//Infomesh.net//DTD XHTML XNG 1.0 //EN" "http://infomesh.net/2001/01/xngloss/dtd/"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xng="http://infomesh.net/2001/01/xngloss/ns/" xml:lang="en" > <head> <link rel="alternate" xng:type="xngmeta" type="application/rdf" href="myschema.rdf"> <xng:resource xlink:type="simple" xlink:href="myschema.rdf" xlink:arcrole="http://www.w3.org/2000/01/RDF-Schema" xlink:title="RDF Schema" /> </link> </head> [...] </head>
In the prose description for the Schemas, you should use XPath to refer to the link elements, and hypertext to link to the Schemas.
Thanks to Tim Bray, Jonathan Borden, Uche Ogbuji, and all of the XML-DEV members for their ongoing help and competition :-)
Sean B. Palmer