This document is also available in these non-normative formats: PostScript version, PDF version, ZIP archive, and Gzip'd TAR archive.
The English version of this specification is the only normative version. Non-normative translations may also be available.
Copyright © 2007 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
The XHTML RDFa (RDF using attributes) modules define a collection of elements and attributes that enhance a document authors ability to annotate the relationships of content within and among documents. These modules can be integrated into any markup language based upon XHTML Modularization [XHTMLMOD].
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is an internal editors draft for development purposes. However, its content is based upon mature materials from [XHTML2] and is therefore considered nearly complete.
This document has been produced by the W3C HTML Working Group (Members only) as part of the HTML Activity. The goals of the HTML Working Group are discussed in the HTML Working Group charter.
This document was produced by a group operating under the 24 January 2002 CPP as amended by the W3C Patent Policy Transition Procedure. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
Please report errors in this specification to www-html-editor@w3.org (archive). It is inappropriate to send discussion email to this address. Public discussion may take place on www-html@w3.org (archive).
This section is informative.
This document contains three modules designed to be used to help extend the scope of XHTML-family markup languages into new environments. It has been developed in conjunction with the RDF and semantic web communities to make it easier to annotate XHTML documents so that RDF information can be automatically extracted.
This section is normative.
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
Note that all examples in this document are informative, and are not meant to be interpreted as normative requirements.
XHTML RDFa is not a stand-alone document type. It is intended to be integrated into other host languages such as XHTML. A conforming XHTML RDFa document is a document that requires only the facilities described as mandatory in this specification and the facilities described as mandatory in its host language. Such a document must meet all the following criteria:
The document MUST conform to the constraints expressed in Appendix A - Schema Implementation or Appendix B - DTD Implementation, combined with the constraints expressed in its host language implementation.
If the host language is not in the XHTML namespace, and the host language does not incorporate these modules into its own namespace, then the document MUST contain an
xmlns
declaration for the XHTML RDFa namespace [XMLNAMES]. The namespace for XHTML RDFa Module is defined to be
http://www.w3.org/1999/xhtml
. An example start tag of a root element might look like:
Example
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
When XHTML RDFa is included in a host language, all of the facilities required in this specification MUST be included in the host language. In addition, the elements and attributes defined in this specification MUST be included in the content model of the host language. Finally, XHTML RDFa requires the availability of the Core Attribute Collection as defined in XHTML Modularization.
A conforming user agent MUST support all of the features required in this specification.
This section is normative.
The Hypertext Attributes Module defines the Hypertext attribute collection. This collection allows an element to be the start point of a hypertext link to a remote resource. When this module is selected, this collection is added to the Common attribute collection as defined in [XHTMLMOD].
encoding
Do we need to bring the encoding attribute over too?This attribute specifies a URI to associate with the specified resource. Note that
when used in conjuction with elements such as a
in XHTML, this attribute has additional semantics.
Example
<link href="top.html" hreflang="en" hreftype="text/html" rel="contents"/>
This attribute specifies the primary language of the resource designated by href. It takes a value of type LanguageCodes. At its most general, it is a comma-separated list of language ranges with optional accept parameters, as defined in section 14.4 of [RFC2616] as the field value of the Accept-Language request header.
In its simplest case, this is just a language code, such as "nl", but it may also contain variant specifications such as "en-gb".
The user agent must use this list as the field value of the accept-language
request header when requesting the resource using HTTP.
If this attribute is not present, the user agent must use its default value of the accept-language request header.
Example
<p> <a href="http://www.w3.org/2003/06/semantictour-pressrelease" hreflang="fr"> The press release in French </a> </p>
This attribute indicates the type(s) of media to which to make available the content referenced by the associated href URI. It takes a value of type MediaDesc.
Example
<p> <a href="http://www.example.com/forPrinters.html" hrefmedia="print"> A printable version of this page. </a> </p>
This attribute specifies a value of type ContentTypes that indicates the allowable content types of the relevant href URI. See the definition of type ContentTypes for details of how it is used.
Example
<p> <a href="http://www.w3.org" hreftype="text/html,application/xhtml+xml"> The W3C Home Page </a> </p>
This section is normative.
The Metainformation Attributes Module defines the Metainformation attribute collection. This collection allows elements to be annotated with metadata throughout an XHTML-family document. When this module is selected, this collection is added to the Common attribute collection as defined in [XHTMLMOD].
Examples and Triples
All the examples in this section and the section following should clearly spell out the triples that are created by using the RDFa attributes in the ways described.This attribute specifies a URI that indicates which resource has a specified property.
If this attribute is not present then the resource being referred to by a property attribute on the same element is decided as follows:
Example
<meta about="http://www.example.com/" property="dc:created">2004-03-20</meta>
This attribute specifies a value of type CDATA that defines the metadata associated
with an element. If not specified, then the metadata for an element is its content. If it is specified, and there is no property
attribute, then the property is considered to be
reference
.
Example
<meta about="http://www.example.com/" property="dc:created" content="2004-03-20"/>
This attribute defines as a QName the datatype of the content metadata of the element. If the attribute is not specified, then the default value is string as defined by [XMLSCHEMA].
Example
<meta about="http://www.example.com/" property="dc:created" datatype="xsd:date">2004-03-20</meta>
This attribute specifies a space-separated list of QNames that indicates which property is being defined by the element.
Example
<meta about="http://www.example.com/" property="dc:creator">John Smith</meta>
Authors may use the following properties, listed here with their conventional interpretations.
User agents, search engines, etc. are free to interpret these properties as necessary.
The list of predefined values (in the XHTML2 namesapce) are given below. Users may extend this collection of relationships, however new values must be defined in their own namespace, and the
relationship names must be referenced in documents as qualified names (e.g., dc:creator
for the Dublin Core "creator" relationship).
Note that in order to reference relationship definitions via QName, their namespace must be defined via an xmlns attribute somewhere suitable:
Example
<html .... xmlns:dc="http://purl.org/dc/elements/1.1/">
Note that previous versions of XHTML included an author
property; this has now been replaced with the Dublin Core creator
property.
Note that:
Example
<head> <title>My Life and Times</title> </head>
is just a shorthand for:
Example
<head> <meta property="title">My Life and Times</meta>
Note that the title attribute is just a shorthand for a common case:
Example
<a href="Jakob.html" title="Author biography">Jakob Nielsen</a>'s Alertbox for January 11, 1998
is equivalent to:
Example
<meta about="#jakob" property="title">Author biography</meta> <a href="Jakob.html" id="jakob">Jakob Nielsen</a>'s Alertbox for January 11, 1998
That this allows you to specify richer, marked-up text for a title when needed.
This attribute describes the relationship between the resource specified by the about attribute (or its default value) and the resource referred to by the href attribute. The type for this attribute is a space-separated list of QNames.
Example
<link href="top.html" rel="contents"/>
This example defines a link to a table of contents for the current document.
Example
<link href="doc.ps" rel="alternate" media="print" hreftype="application/postscript" />
This example defines a link to an alternate version of the document especially suited to printing.
Authors may use the following relationship names, listed here with their conventional interpretations.
User agents, search engines, etc. may interpret these relationships in a variety of ways. For example, user agents may provide access to linked documents through a navigation bar.
Users may extend this collection of relationships. However, extensions must be defined in their own namespace, and the relationship names must be referenced in documents as qualified names (e.g., dc:creator for the Dublin Core "creator" relationship).
Note that in order to reference relationship definitions via QName, their namespace must be defined via an xmlns attribute somewhere suitable:
Example
<html .... xmlns:dc="http://purl.org/dc/elements/1.1/">
Refers to a resource that defines a citation. In the following example, the cite
is used to reference the book from which the quotation is taken:
cite as book reference
As Gandalf the White said in <span rel="cite" about="http://www.example.com/books/the_two_towers"> The Two Towers </span>, <quote xml:lang="en">"The hospitality of your hall is somewhat lessened of late, Theoden King."</quote>
cite to reference another specification
More information can be found in <span property="cite" about="http://www.w3.org/TR/REC-xml">[XML]</cite>.
Refers to a resource that defines relationships or provides metadata, for instance in RDF. User agents may use this URI in two ways:
This example refers to a hypothetical profile that defines useful properties for document indexing. The properties defined by this profile -- including "author", "copyright", "keywords", and "date" -- have their values set by subsequent meta declarations.
Example
<html ... xmlns:mp="http://www.example.com/profiles/rels"> <head> <title>How to complete Memorandum cover sheets</title> <link rel="profile" href="http://www.example.com/profiles/slideshow" /> </head> <body> <div class="slide"> some slide content... </div> </body> ...
The use of the rel
value of profile
has the same effect as specifying a profile
attribute on the head
element of an XHTML document.
No end or last value
We have a value of "start", but no corresponding "end" value. Do we need one?This attribute is the complement of the rel attribute and describes the reverse relationship between the resource specified by the about attribute (or its default value) and the resource referred to by the href attribute. Its value is a space-separated list of QNames. For a list of relationship names, see the rel attribute.
Example
<link href="doc.html" rev="contents"/>
This example states that the current document is the table of contents for the referenced document.
The metadata attributes can be used to generate RDF statements, which consist of a subject, a predicate, and an object.
The attributes rel, rev and property represent predicates. The predicate is obtained by concatenating the namespace URI and the local part of the QName of the attribute value.
For attribute rel, the subject is the about property, and the object is the value of the href attribute; for attribute rev, the subject and object roles are reversed: the subject is the href
attribute, and the object is the value of the about property. In both cases, a relative href value is interpreted in the
context of the current document or, if present, by the value of a xml:base
attribute.
For attribute property, the subject is the about property, and the object is the string literal in the content attribute, or otherwise the XML literal that is the content of the element, decorated as necessary with the value of the datatype attribute.
The about property is obtained as follows:
One use of the metadata attributes is with elements that represent document content, since the same string literal can be used to specify both document content, and metadata.
For example, articles often have the following repetitive structure, where the same values are used for metadata properties and actual content rendered to the reader:
Example
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"> <head> <title>... title ...</title> <meta property="dc:date">2004-03-23</meta> <meta property="dc:title"> High-tech rollers hit casino for £1.3m </meta> <meta property="dc:creator">Steve Bird</meta> </head> <body> ... <span class="date">2004-03-23</span> <span class="headline"> High-tech rollers hit casino for £1.3m </span> <span class="byline">By Steve Bird</span> <span class="standfirst"> Word of a hand-held device which can beat the roulette wheel has gambling bosses quaking </span> ... <p>...</p> </body> </html>
By making use of the metadata attributes this can be shortened to the following:
Example
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/"> <head> <title>... title ...</title> </head> <body> ... <span property="dc:date" class="date"> 2004-03-23 </span> <span property="dc:title" class="headline"> High-tech rollers hit casino for £1.3m </span> By <span property="dc:creator" class="byline">Steve Bird</span> <span class="standfirst"> Word of a hand-held device which can beat the roulette wheel has gambling bosses quaking </span> ... <p>...</p> </body> </html>
This is often easier to maintain since an author editing their document is at the same time editing the metadata.
Another use for the metadata attributes on other mark-up elements is to provide a normalized value for some text. This is especially important to certain types of consumers of metadata, such as search engines.
For example, the following article would be difficult to locate:
Example
Tomorrow the <span>Prime Minister</span> is expected to fly to ...
However, by using href and content we can indicate exactly which Prime Minister is being referred to, and when the journey is due to take place:
Example
<span content="2004-03-20">Tomorrow</span> the <span href="http://example.com/people/TonyBlair/1">Prime Minister</span> is expected to fly to ...
Note that if no property, rel, nor rev is present then a default predicate of
reference
is used; the example would then be equivalent to:
Example
<span property="reference" content="2004-03-20"> Tomorrow </span> the <span property="reference" href="http://example.com/people/TonyBlair/1"> Prime Minister </span> is expected to fly to ...
This section is normative.
The Metainformation Module defines elements that allow the definition of relationships. These may relate to:
Note that this module is dependent upon the Metainformation Attributes module. The attributes defined therein are available on the elements defined in this module, and their semantics are the essential part of how these elements behave.
Elements and attributes in this module are:
Elements | Attributes | Minimal Content Model |
---|---|---|
link | Common, charset, type, media | ( link | meta )* |
meta | Common, http-equiv, name, scheme | ( PCDATA | Inline )* |
When this module is selected, the link and meta elements are added to the Structural and Inline content sets of the Structural and Inline Modules. In addition, the elements are added to the content model of the head element defined in the Structure Module. In addition, when this module is selected, the associated Metainformation Attributes module must also be selected. Finally, note that use of this module precludes the use of the Metainformation Module in XHTML Modularization.
Attributes
Commonall
.This element defines a link. Link conveys relationship information that may be rendered by user agents in a variety of ways (e.g., a tool-bar with a drop-down menu of links). User agents should enable activation of links and the retrieval of link targets. Since link elements may have no content, information from the rel and title attributes should be used when labelling links.
This example illustrates how several link definitions may appear in the head section of a document. The current document is "Chapter2.html". The rel attribute specifies the relationship of the linked document with the current document. The values "Index", "Next", and "Prev" are explained in the section on the attribute rel.
Example
<head> <title>Chapter 2</title> <link rel="index" href="../index.html"/> <link rel="next" href="Chapter3.html"/> <link rel="prev" href="Chapter1.html"/> </head>
While the rel attribute specifies a relationship from this document to another resource, the rev attribute specifies the reverse relationship.
Consider two documents A and B.
Document A: <link href="docB" rel="index"/>
Has exactly the same meaning as:
Document B: <link href="docA" rev="index"/>
namely that document B is the index for document A.
Both the rel and rev attributes may be specified simultaneously.
Authors may use the link element to provide a variety of information to search engines, including:
The examples below illustrate how language information, media types, and link types may be combined to improve document handling by search engines.
The following example shows how to use the hreflang attribute to indicate to a search engine where to find other language versions of a document. Note that for the sake of the example the xml:lang attribute has been used to indicate that the value of the title attribute for the link element designating the French manual is in French.
Example
<html ... xml:lang="en"> <head> <title>The manual in English</title> <link title="The manual in Dutch" rel="alternate" hreflang="nl" href="http://example.com/manual/dutch.html"/> <link title="La documentation en Français" rel="alternate" hreflang="fr" xml:lang="fr" href="http://example.com/manual/french.html"/> </head>
In the following example, we tell search engines where to find the printed version of a manual.
Example
<head> <title>Reference manual</title> <link media="print" title="The manual in PostScript" hreftype="application/postscript" rel="alternate" href="http://example.com/manual/postscript.ps"/> </head>
In the following example, we tell search engines where to find the front page of a collection of documents.
Example
<head> <title>Reference manual -- Chapter 5</title> <link rel="start" title="The first chapter of the manual" hreftype="application/xhtml+xml" href="http://example.com/manual/start.html"/> </head>
Attributes
CommonThe meta element can be used to identify properties of a document (e.g., author, expiration date, a list of key words, etc.) and assign values to those properties. This specification defines a small normative set of properties, but users may extend this set as described for the property attribute.
Each meta element specifies a property/value pair. The property attribute identifies the property and the content of the element or the value of the content attribute specifies the property's value.
For example, the following declaration sets a value for the Author
property:
Example
<meta property="dc:creator">Steven Pemberton</meta>
Note. The meta element is a generic mechanism for specifying metadata. However, some XHTML elements and attributes already handle certain pieces of metadata and may be used by authors instead of meta to specify those pieces: the title element, the address element, the edit and related attributes, the title attribute, and the cite attribute.
Note. When a property specified by a meta element takes a value that is a URI, some authors prefer to specify the metadata via the link element. Thus, the following metadata declaration:
Example
<meta property="dc:identifier"> http://www.rfc-editor.org/rfc/rfc3236.txt </meta>
might also be written:
Example
<link rel="dc:identifier" href="http://www.rfc-editor.org/rfc/rfc3236.txt" />
A common use for meta is to specify keywords that a search engine may use to improve the quality of search results. When several meta elements provide language-dependent information about a document, search engines may filter on the xml:lang attribute to display search results using the language preferences of the user. For example,
Example
<!-- For speakers of US English --> <meta property="keywords" xml:lang="en-us">vacation, Greece, sunshine</meta> <!-- For speakers of British English --> <meta property="keywords" xml:lang="en">holiday, Greece, sunshine</meta> <!-- For speakers of French --> <meta property="keywords" xml:lang="fr">vacances, Grèce, soleil</meta>
The effectiveness of search engines can also be increased by using the link element to specify links to translations of the document in other languages, links to versions of the document in other media (e.g., PDF), and, when the document is part of a collection, links to an appropriate starting point for browsing the collection.
There are two types of properties that some item can have. The first is a simple string value, which is useful for specifying properties such as dates, names, numbers and so on:
Example
this document was written on "March 21st, 2004"
This is not so useful though when trying to uniquely identify items that could occur in other places. Take the example of the document's author being "Mark Birbeck":
Example
this document was written by "Mark Birbeck"
Since there are other people called Mark Birbeck, then we won't know which of them wrote what. We get round this problem by allowing the value referred to, to be a URI. For example:
Example
this document was written by <http://example.com/people/MarkBirbeck/654>
We distinguish these two types of properties by calling the first a 'string literal' and the second a 'resource'.
NOTE: Of course there is nothing to stop two people from using this URI to identify two completely different people. But in general URIs are accepted as a convenient way to identify a specific item.
The simplest piece of metadata is a string literal attached to the containing document. This can be specified using meta. For example:
Example
<head> <meta property="dc:creator">Mark Birbeck</meta> <meta property="dc:created" content="2004-03-20" /> </head>
which states that:
Example
this document has an 'author' property of "Mark Birbeck"; this document has a 'created' property of "2004-03-20".
It is also possible to include mark-up in the string. This will always be part of the string's value - in other words, no matter what the mark-up is, it will never be processed as if it were anything other than the value of the property:
Example
<head> <meta property="dc:creator" content="Albert Einstein" /> <meta property="dc:title">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</meta> </head>
states that:
Example
this document has an 'author' property of "Albert Einstein"; this document has a 'title' property of "E = mc<sup>2</sup>: The Most Urgent Problem of Our Time".
However, just because the mark-up is not processed as mark-up does not mean it need not be well-formed and valid if the processor requires it.
In some situations the value of a property is not sufficiently specified by a simple literal. For example, properties such as height or weight would require more than a string to fully specify them:
Example
<head> <meta property="height">87</meta> </head>
In cases such as this it is not clear whether we are dealing with metres, miles or microns. Whilst it's certainly possible to add the units to the literal itself there will be situations where this is not possible, and so the unit should be specified with datatype In this example we use the XML Schema type for date:
Example
<head> <meta property="created" datatype="xsd:date">2004-03-22</meta> </head>
There will be situations when a string literal is not suitable as the value of a property. In the example just given there would be no way to know which 'Mark Birbeck' we are referring to. This might not be a problem when documents are only used within one company, but this becomes a big problem when documents are used across the internet.
When we need to provide a unique identifier for the value of a property we use link. link identifies a relationship between one resource and another, and uses rel to indicate the nature of this relationship. In addition href contains the URI that is being used to uniquely identify the item being related to. For example:
Example
<head> <link rel="author" href="http://example.com/people/MarkBirbeck/654" /> </head>
Note that just because we are using URIs as unique identifiers doesn't mean that navigating to this URI with a web browser would yield anything useful. This is perhaps easier to see with the following example:
Example
<head> <link rel="source" href="urn:isbn:0140449132" /> </head>
Best practice for specifying metadata is to try as much as possible to make use of common property names. This can often be achieved by using lists in use by other document author's within a similar field. There are many such lists for different sectors and industries, but for our examples here we will use Dublin Core[DCORE].
To replace the term 'author' with the more widely used Dublin Core term 'creator', we would need to not only substitute 'creator' for 'author', but also to indicate which list we are using. We achieve the latter by using XML namespaces:
Example
<head xmlns:dc="http://purl.org/dc/elements/1.1/"> <meta property="dc:creator">Mark Birbeck</meta> </head>
Now we have stated that:
Example
this document has a property called 'creator' (which comes from a library of properties called the Dublin Core) and the value of that property is the literal "Mark Birbeck".
While it is common to create properties and values that say something about the document that contains them, there is often a need to add metadata that refers only to a section of the document, or to some external resource. This is achieved by using about, which can be present on meta and link.
A quote might be attributed as follows:
Example
<html xmlns:dc="http://purl.org/dc/elements/1.1/"> <head> <link about="#q1" rel="dc:source" href="urn:isbn:0140449132" /> </head> <body> <blockquote id="q1"> <p> 'Rodion Romanovitch! My dear friend! If you go on in this way you will go mad, I am positive! Drink, pray, if only a few drops!' </p> </blockquote> </body> </html>
Note that the absence of about does not always mean that the metadata refers to the containing document. If the element containing metadata is a child of head, then it does relate to the document, and so the following mark-up:
Example
<head xmlns:dc="http://purl.org/dc/elements/1.1/"> <meta property="dc:creator">Mark Birbeck</meta> </head>
can be regarded as a shorthand for this:
Example
<head xmlns:dc="http://purl.org/dc/elements/1.1/"> <meta about="" property="dc:creator">Mark Birbeck</meta> </head>
There is also a need to add metadata to a document that concerns an item that is external to the document. As before we use about, but this time we should provide an absolute or relative URI, rather than just a fragment identifier.
An example might be to say that the copyright of some document is owned by a company, and further, that the company is located in London:
Example
<head xmlns:dc="http://purl.org/dc/elements/1.1/"> <link rel="dc:copyright" href="http://example.com/company/BBC/6" /> <meta about="http://example.com/company/BBC/6" property="dc:location">London</meta> </head>
This appendix is normative.
The schema implementation of XHTML RDFa Module conforms to the requirements defined in [XHTMLSCHEMAMOD]. It is divided into an attributes module and an element module for the XHTML RDFa Module module defined in this Proposed Recommendation.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" elementFormDefault="qualified" > <xs:annotation> <xs:documentation> This is the XML Schema Hypertext Attributes module for XHTML $Id: Overview.html,v 1.1 2007/04/17 13:04:30 jigsaw Exp $ </xs:documentation> <xs:documentation source="xhtml-rdfa-copyright-1.xsd"/> </xs:annotation> <xs:annotation> <xs:documentation> XHTML Hypertext Attributes </xs:documentation> </xs:annotation> <xs:attribute name="href" type="xs:anyURI"/> <xs:attribute name="hreflang" type="xh11d:LanguageCodes"/> <xs:attribute name="hrefmedia" type="xh11d:MediaDesc"/> <xs:attribute name="hreftype" type="xh11d:ContentTypes"/> <xs:attributeGroup name="XHTML.hyperAttributes.attlist"> <xs:attribute ref="href"/> <xs:attribute ref="hreflang"/> <xs:attribute ref="hrefmedia"/> <xs:attribute ref="hreftype"/> </xs:attributeGroup> </xs:schema>
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" elementFormDefault="qualified" > <xs:annotation> <xs:documentation> This is the XML Schema Metainformation Attributes module for XHTML $Id: Overview.html,v 1.1 2007/04/17 13:04:30 jigsaw Exp $ </xs:documentation> <xs:documentation source="xhtml-rdfa-copyright-1.xsd"/> </xs:annotation> <xs:annotation> <xs:documentation> XHTML Metainformation Attributes </xs:documentation> </xs:annotation> <xs:attribute name="about" type="xs:anyURI"/> <xs:attribute name="content" type="xh11d:CDATA"/> <xs:attribute name="datatype" type="xs:QName"/> <xs:attribute name="property" type="xs:QName"/> <xs:attribute name="rel" type="xs:QName"/> <xs:attribute name="rev" type="xs:QName"/> <xs:attributeGroup name="XHTML.metaAttributes.attlist"> <xs:attribute ref="about"/> <xs:attribute ref="content"/> <xs:attribute ref="datatype"/> <xs:attribute ref="property"/> <xs:attribute ref="rel"/> <xs:attribute ref="rev"/> </xs:attributeGroup> </xs:schema>
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" > <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd" /> <xs:annotation> <xs:documentation> This is the XML Schema Metainformation module for XHTML $Id: Overview.html,v 1.1 2007/04/17 13:04:30 jigsaw Exp $ </xs:documentation> <xs:documentation source="xhtml-rdfa-copyright-1.xsd"/> </xs:annotation> <xs:annotation> <xs:documentation> Meta Information * link * meta This module declares the link and meta element type and their attributes, used to provide declarative document metainformation. </xs:documentation> <xs:documentation source="http://www.w3.org/TR/2007/xhtml-rdfa/Overview.html#s_meta"/> </xs:annotation> <xs:attributeGroup name="xhtml.link.attlist"> <xs:attributeGroup ref="xhtml.Common.attrib"/> <xs:attribute name="charset" type="xh11d:Charset"/> <xs:attribute name="type" type="xh11d:ContentType"/> <xs:attribute name="media" type="xh11d:MediaDesc"/> </xs:attributeGroup> <xs:group name="xhtml.link.content"> <xs:sequence/> </xs:group> <xs:complexType name="xhtml.link.type"> <xs:group ref="xhtml.link.content"/> <xs:attributeGroup ref="xhtml.link.attlist"/> </xs:complexType> <xs:attributeGroup name="xhtml.meta.attlist"> <xs:attributeGroup ref="xhtml.Common.attrib"/> <xs:attribute name="http-equiv" type="xs:NMTOKEN"/> <xs:attribute name="name" type="xs:NMTOKEN"/> <xs:attribute name="scheme" type="xh11d:CDATA"/> </xs:attributeGroup> <xs:group name="xhtml.meta.content"> <xs:sequence/> </xs:group> <xs:complexType name="xhtml.meta.type"> <xs:group ref="xhtml.meta.content"/> <xs:attributeGroup ref="xhtml.meta.attlist"/> </xs:complexType> </xs:schema>
This appendix is normative.
The DTD implementation of XHTML RDFa Module conforms to the requirements defined in [XHTMLMOD]. Consequently, it provides a Qualified Names sub-module, and a module file for the XHTML RDFa Module module defined in this Proposed Recommendation.
Note that this module defines the parameter entity %xhtml-rdfa-attrs.qname;
. This entity is intended to be used in the attribute lists of elements in any host language that permits
the use of the RDFa attributes on elements in its own namespace. In this case the Host Language driver should set a parameter entity %XHTML-RDFA.prefixed;
to INCLUDE
and a
parameter entity %XHTML-RDFA.prefix;
to a value that is the prefix for the XHTML RDFa Module attributes.
<!-- ....................................................................... --> <!-- XHTML RDFa Qname Module ............................................ --> <!-- file: xhtml-rdfa-qname-1.mod This is XHTML RDFa - the RDFa Attribute Module for XHTML. Copyright 2007 W3C (MIT, ERCIM, Keio), All Rights Reserved. This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//W3C//ENTITIES XHTML RDFa Attribute Qnames 1.0//EN" SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-qname-1.mod" Revisions: (none) ....................................................................... --> <!-- XHTML RDFa Attribute Qname (Qualified Name) Module This module is contained in two parts, labeled Section 'A' and 'B': Section A declares parameter entities to support namespace- qualified names, namespace declarations, and name prefixing for XHTML RDFa and extensions. Section B declares parameter entities used to provide namespace-qualified names for the XHTML RDFa elements and attributes: %link.qname; the xmlns-qualified name for link ... XHTML RDFa extensions would create a module similar to this one. --> <!-- Section A: XHTML RDFa Attribute XML Namespace Framework ::::::::::::::: --> <!-- 1. Declare a %XHTML-RDFA.prefixed; conditional section keyword, used to activate namespace prefixing. The default value should inherit '%NS.prefixed;' from the DTD driver, so that unless overridden, the default behavior follows the overall DTD prefixing scheme. --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % XHTML-RDFA.prefixed "%NS.prefixed;" > <!-- 2. Declare a parameter entity (eg., %XHTML-RDFA.xmlns;) containing the URI reference used to identify the XHTML RDFa Attribute namespace --> <!ENTITY % XHTML-RDFA.xmlns "http://www.w3.org/1999/xhtml" > <!-- 3. Declare parameter entities (eg., %XML.prefix;) containing the default namespace prefix string(s) to use when prefixing is enabled. This may be overridden in the DTD driver or the internal subset of an document instance. If no default prefix is desired, this may be declared as an empty string. NOTE: As specified in [XMLNAMES], the namespace prefix serves as a proxy for the URI reference, and is not in itself significant. --> <!ENTITY % XHTML-RDFA.prefix "" > <!-- 4. Declare parameter entities (eg., %XHTML-RDFA.pfx;) containing the colonized prefix(es) (eg., '%XHTML-RDFA.prefix;:') used when prefixing is active, an empty string when it is not. --> <![%XHTML-RDFA.prefixed;[ <!ENTITY % XHTML-RDFA.pfx "%XHTML-RDFA.prefix;:" > ]]> <![%XHTML.prefixed;[ <!ENTITY % XHTML-RDFA.pfx "%XHTML.prefix;:" > ]]> <!ENTITY % XHTML-RDFA.pfx "" > <!-- declare qualified name extensions here ............ --> <!ENTITY % xhtml-rdfa-qname-extra.mod "" > %xhtml-rdfa-qname-extra.mod; <!-- 5. The parameter entity %XHTML-RDFA.xmlns.extra.attrib; may be redeclared to contain any non-XHTML RDFa Attribute namespace declaration attributes for namespaces embedded in XML. The default is an empty string. XLink should be included here if used in the DTD. --> <!ENTITY % XHTML-RDFA.xmlns.extra.attrib "" > <!-- Section B: XML Qualified Names ::::::::::::::::::::::::::::: --> <!-- 6. This section declares parameter entities used to provide namespace-qualified names for the XHTML RDFa attribute modules. Note that these names are NOT prefixed to be compatible with XHTML Modularization 1.1 --> <!-- module xhtml-meta-2.mod --> <!ENTITY % link.qname "%XHTML-RDFA.pfx;link" > <!ENTITY % meta.qname "%XHTML-RDFA.pfx;meta" > <!-- end of xhtml-rdfa-qname-1.mod -->
<!-- ...................................................................... --> <!-- XHTML Hypertext Attributes Module ................................... --> <!-- file: xhtml-hyperAttributes-1.mod This is XHTML-RDFa, modules to annotate XHTML family documents. Copyright 2007 W3C (MIT, ERCIM, Keio), All Rights Reserved. Revision: $Id: Overview.html,v 1.1 2007/04/17 13:04:30 jigsaw Exp $ This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//W3C//ENTITIES XHTML HyperAttributes 1.0//EN" SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-hyperAttributes-1.mod" Revisions: ....................................................................... --> <!-- Common Attributes This module declares a collection of hypertext related attributes. %NS.decl.attrib; is declared in the XHTML Qname module. This file also includes declarations of "global" versions of the attributes. The global versions of the attributes are for use on elements in other namespaces. --> <!ENTITY % href.attrib "href %URI.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.href.attrib "%XHTML.prefix;:href %URI.datatype; #IMPLIED" > ]]> <!ENTITY % hreflang.attrib "hreflang %LanguageCode.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.hreflang.attrib "%XHTML.prefix;:hreflang %LanguageCode.datatype; #IMPLIED" > ]]> <!ENTITY % hrefmedia.attrib "hrefmedia %MediaDesc.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.hrefmedia.attrib "%XHTML.prefix;:hrefmedia %MediaDesc.datatype; #IMPLIED" > ]]> <!ENTITY % hreftype.attrib "hreftype %ContentTypes.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.hreftype.attrib "%XHTML.prefix;:hreftype %ContentTypes.datatype; #IMPLIED" > ]]> <!ENTITY % Hyper.attrib.extra "" > <!ENTITY % Hyper.attrib "%href.attrib; %hreflang.attrib; %hrefmedia.attrib; %hreftype.attrib; %Hyper.attrib.extra;" > <!ENTITY % XHTML.global.hyper.attrib.extra "" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.hyper.attrib "%XHTML.global.href.attrib; %XHTML.global.hreflang.attrib; %XHTML.global.hrefmedia.attrib; %XHTML.global.hreftype.attrib; %XHTML.global.hyper.attrib.extra;" > ]]> <!ENTITY % XHTML.global.hyper.attrib "" > <!-- end of xhtml-hyperAttributes-1.mod -->
<!-- ...................................................................... --> <!-- XHTML Common Attributes Module ...................................... --> <!-- file: xhtml-attribs-1.mod This is XHTML-RDFa, modules to annotate XHTML family documents. Copyright 2007 W3C (MIT, ERCIM, Keio), All Rights Reserved. Revision: $Id: Overview.html,v 1.1 2007/04/17 13:04:30 jigsaw Exp $ This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//W3C//ENTITIES XHTML MetaAttributes 1.0//EN" SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-metaAttributes-1.mod" Revisions: (none) ....................................................................... --> <!-- Common Attributes This module declares a collection of meta-information related attributes. %NS.decl.attrib; is declared in the XHTML Qname module. This file also includes declarations of "global" versions of the attributes. The global versions of the attributes are for use on elements in other namespaces. --> <!ENTITY % QName.datatype "CDATA" > <!ENTITY % QNames.datatype "CDATA" > <!ENTITY % about.attrib "about %URI.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.about.attrib "%XHTML.prefix;:about %URI.datatype; #IMPLIED" > ]]> <!ENTITY % property.attrib "property %QNames.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.property.attrib "%XHTML.prefix;:property %QNames.datatype; #IMPLIED" > ]]> <!ENTITY % content.attrib "content CDATA #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.content.attrib "%XHTML.prefix;:content CDATA #IMPLIED" > ]]> <!ENTITY % datatype.attrib "datatype %QName.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.datatype.attrib "%XHTML.prefix;:datatype %QName.datatype; #IMPLIED" > ]]> <!ENTITY % rel.attrib "rel %QNames.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.rel.attrib "%XHTML.prefix;:rel %QNames.datatype; #IMPLIED" > ]]> <!ENTITY % rev.attrib "rev %QNames.datatype; #IMPLIED" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.rev.attrib "%XHTML.prefix;:rev %QNames.datatype; #IMPLIED" > ]]> <!ENTITY % Metainformation.extra.attrib "" > <!ENTITY % Metainformation.attrib "%about.attrib; %content.attrib; %datatype.attrib; %property.attrib; %rel.attrib; %rev.attrib; %Metainformation.extra.attrib;" > <!ENTITY % XHTML.global.metainformation.extra.attrib "" > <![%XHTML.global.attrs.prefixed;[ <!ENTITY % XHTML.global.metainformation.attrib "%XHTML.global.about.attrib; %XHTML.global.content.attrib; %XHTML.global.datatype.attrib; %XHTML.global.property.attrib; %XHTML.global.rel.attrib; %XHTML.global.rev.attrib; %XHTML.global.metainformation.extra.attrib;" > ]]> <!ENTITY % XHTML.global.metainformation.attrib "" > <!-- end of xhtml-metaAttributes-1.mod -->
<!-- ...................................................................... --> <!-- XHTML Document Metainformation Module ............................... --> <!-- file: xhtml-meta-2.mod This is XHTML-RDFa, modules to annotate XHTML family documents. Copyright 2007 W3C (MIT, ERCIM, Keio), All Rights Reserved. Revision: $Id: Overview.html,v 1.1 2007/04/17 13:04:30 jigsaw Exp $ This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 2.0//EN" SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-meta-2.mod" Revisions: (none) ....................................................................... --> <!-- Meta Information meta link This module declares the meta and link element types, used to provide declarative document metainformation. --> <!-- meta: Generic Metainformation ..................... --> <!ENTITY % meta.element "INCLUDE" > <![%meta.element;[ <!ENTITY % meta.content "( #PCDATA | %Inline.mix; )*" > <!ENTITY % meta.qname "meta" > <!ELEMENT %meta.qname; %meta.content; > <!-- end of meta.element -->]]> <!ENTITY % meta.attlist "INCLUDE" > <![%meta.attlist;[ <!ATTLIST %meta.qname; %Common.attrib; http-equiv NMTOKEN #IMPLIED name NMTOKEN #IMPLIED scheme CDATA #IMPLIED > <!-- end of meta.attlist -->]]> <!-- link: Media-Independent Link ...................... --> <!ENTITY % link.element "INCLUDE" > <![%link.element;[ <!ENTITY % link.content "( %link.qname; | %meta.qname; )*" > <!ENTITY % link.qname "link" > <!ELEMENT %link.qname; %link.content; > <!-- end of link.element -->]]> <!ENTITY % link.attlist "INCLUDE" > <![%link.attlist;[ <!ATTLIST %link.qname; %Common.attrib; charset %Charset.datatype; #IMPLIED type %ContentType.datatype; #IMPLIED media %MediaDesc.datatype; #IMPLIED > <!-- end of link.attlist -->]]> <!-- end of xhtml-meta-2.mod -->
This appendix is informative.
This appendix includes an example of a markup language created using the modules in this specification, coupled with other modules from [XHTMLMOD]. The resulting markup language, "xhtml-rdfa" is provided solely as an example, and does not represent an intended direction in terms of a formal markup language from he W3C.
The following sample demonstrates some simple uses of RDFa within an xhtml-rdfa document.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>This is a test document</title> </head> <body> <p>This is a test <span rel="cite" href="Overview.html">citation to XHTML+RDFa</span> </p> <p>Here is more content: <span href="Overview.html" hreflang="en" hreftype="text/html"> the specification </span> That should be a link. </p> <p> <meta content="some information" rel="cite" href="http://www.w3.org/TR"> The W3C TR page </meta> </p> <meta content="some information" rel="cite" href="http://www.w3.org/TR"> The W3C TR page </meta> </body> </html>
The actual markup language is created by combining the basics of XHTML 1.1 and the modules in this specification. This is done by using a content model module, and then a driver module:
<!-- ....................................................................... --> <!-- XHTML+RDFa Document Model Module ..................................... --> <!-- file: xhtml-rdfa-model-1.mod This is XHTML+RDFa. Copyright 1998-2007 W3C (MIT, ERCIM, Keio), All Rights Reserved. Revision: $Id: Overview.html,v 1.1 2007/04/17 13:04:30 jigsaw Exp $ SMI This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//W3C//ENTITIES XHTML+RDFa Document Model 1.0//EN" SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-model-1.mod" Revisions: (none) ....................................................................... --> <!-- XHTML+RDFa Document Model This module describes the groupings of elements that make up common content models for XHTML elements. XHTML has three basic content models: %Inline.mix; character-level elements %Block.mix; block-like elements, eg., paragraphs and lists %Flow.mix; any block or inline elements Any parameter entities declared in this module may be used to create element content models, but the above three are considered 'global' (insofar as that term applies here). The reserved word '#PCDATA' (indicating a text string) is now included explicitly with each element declaration that is declared as mixed content, as XML requires that this token occur first in a content model specification. --> <!-- Extending the Model While in some cases this module may need to be rewritten to accommodate changes to the document model, minor extensions may be accomplished by redeclaring any of the three *.extra; parameter entities to contain extension element types as follows: %Misc.extra; whose parent may be any block or inline element. %Inline.extra; whose parent may be any inline element. %Block.extra; whose parent may be any block element. If used, these parameter entities must be an OR-separated list beginning with an OR separator ("|"), eg., "| a | b | c" All block and inline *.class parameter entities not part of the *struct.class classes begin with "| " to allow for exclusion from mixes. --> <!-- .............. Optional Elements in head .................. --> <!ENTITY % HeadOpts.mix "( %script.qname; | %style.qname; | %meta.qname; | %link.qname; | %object.qname; )*" > <!-- ................. Miscellaneous Elements .................. --> <!-- ins and del are used to denote editing changes --> <!ENTITY % Edit.class "| %ins.qname; | %del.qname;" > <!-- script and noscript are used to contain scripts and alternative content --> <!ENTITY % Script.class "| %script.qname; | %noscript.qname;" > <!ENTITY % Meta.class "| %meta.qname; | %link.qname;" > <!ENTITY % Misc.extra "" > <!-- These elements are neither block nor inline, and can essentially be used anywhere in the document body. --> <!ENTITY % Misc.class "%Edit.class; %Script.class; %Meta.class; %Misc.extra;" > <!-- .................... Inline Elements ...................... --> <!ENTITY % InlStruct.class "%br.qname; | %span.qname;" > <!ENTITY % InlPhras.class "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname; | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname; | %abbr.qname; | %acronym.qname; | %q.qname;" > <!ENTITY % InlPres.class "| %tt.qname; | %i.qname; | %b.qname; | %big.qname; | %small.qname; | %sub.qname; | %sup.qname;" > <!ENTITY % I18n.class "| %bdo.qname;" > <!ENTITY % Anchor.class "| %a.qname;" > <!ENTITY % InlSpecial.class "| %img.qname; | %map.qname; | %object.qname;" > <!ENTITY % InlForm.class "| %input.qname; | %select.qname; | %textarea.qname; | %label.qname; | %button.qname;" > <!ENTITY % Inline.extra "" > <!ENTITY % Ruby.class "| %ruby.qname;" > <!-- %Inline.class; includes all inline elements, used as a component in mixes --> <!ENTITY % Inline.class "%InlStruct.class; %InlPhras.class; %InlPres.class; %I18n.class; %Anchor.class; %InlSpecial.class; %InlForm.class; %Ruby.class; %Inline.extra;" > <!-- %InlNoRuby.class; includes all inline elements except ruby, used as a component in mixes --> <!ENTITY % InlNoRuby.class "%InlStruct.class; %InlPhras.class; %InlPres.class; %I18n.class; %Anchor.class; %InlSpecial.class; %InlForm.class; %Inline.extra;" > <!-- %NoRuby.content; includes all inlines except ruby --> <!ENTITY % NoRuby.content "( #PCDATA | %InlNoRuby.class; %Misc.class; )*" > <!-- %InlNoAnchor.class; includes all non-anchor inlines, used as a component in mixes --> <!ENTITY % InlNoAnchor.class "%InlStruct.class; %InlPhras.class; %InlPres.class; %I18n.class; %InlSpecial.class; %InlForm.class; %Ruby.class; %Inline.extra;" > <!-- %InlNoAnchor.mix; includes all non-anchor inlines --> <!ENTITY % InlNoAnchor.mix "%InlNoAnchor.class; %Misc.class;" > <!-- %Inline.mix; includes all inline elements, including %Misc.class; --> <!ENTITY % Inline.mix "%Inline.class; %Misc.class;" > <!-- ..................... Block Elements ...................... --> <!-- In the HTML 4.0 DTD, heading and list elements were included in the %block; parameter entity. The %Heading.class; and %List.class; parameter entities must now be included explicitly on element declarations where desired. --> <!ENTITY % Heading.class "%h1.qname; | %h2.qname; | %h3.qname; | %h4.qname; | %h5.qname; | %h6.qname;" > <!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" > <!ENTITY % Table.class "| %table.qname;" > <!ENTITY % Form.class "| %form.qname;" > <!ENTITY % Fieldset.class "| %fieldset.qname;" > <!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" > <!ENTITY % BlkPhras.class "| %pre.qname; | %blockquote.qname; | %address.qname;" > <!ENTITY % BlkPres.class "| %hr.qname; " > <!ENTITY % BlkSpecial.class "%Table.class; %Form.class; %Fieldset.class;" > <!ENTITY % Block.extra "" > <!-- %Block.class; includes all block elements, used as an component in mixes --> <!ENTITY % Block.class "%BlkStruct.class; %BlkPhras.class; %BlkPres.class; %BlkSpecial.class; %Block.extra;" > <!-- %Block.mix; includes all block elements plus %Misc.class; --> <!ENTITY % Block.mix "%Heading.class; | %List.class; | %Block.class; %Misc.class;" > <!-- ................ All Content Elements .................. --> <!-- %Flow.mix; includes all text content, block and inline --> <!ENTITY % Flow.mix "%Heading.class; | %List.class; | %Block.class; | %Inline.class; %Misc.class;" > <!-- end of xhtml-rdfa-model-1.mod -->
<!-- ....................................................................... --> <!-- XHTML 1.1 + RDFa DTD ................................................. --> <!-- file: xhtml-rdfa.dtd --> <!-- XHTML 1.1 + RDFa DTD This is an example markup language combining XHTML 1.1 and the RDFa modules. XHTML+RDFa Copyright 1998-2007 World Wide Web Consortium (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved. Permission to use, copy, modify and distribute the XHTML 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. --> <!-- This is the driver file for version 1 of the XHTML + RDFa DTD. Please use this public identifier to identify it: "-//W3C//DTD XHTML+RDFa 1.0//EN" --> <!ENTITY % XHTML.version "-//W3C//DTD XHTML+RDFa 1.0//EN" > <!-- Use this URI to identify the default namespace: "http://www.w3.org/1999/xhtml" See the Qualified Names module for information on the use of namespace prefixes in the DTD. Note that XHTML namespace elements are not prefixed by default, but the XHTML namespace prefix is defined as "xhtml" so that other markup languages can extend this one and use the XHTML prefixed global attributes if required. --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % XHTML.prefix "xhtml" > <!-- Be sure to include prefixed global attributes - we don't need them, but languages that extend XHTML 1.1 might. --> <!ENTITY % XHTML.global.attrs.prefixed "INCLUDE" > <!-- Reserved for use with the XLink namespace: --> <!ENTITY % XLINK.xmlns "" > <!ENTITY % XLINK.xmlns.attrib "" > <!-- For example, if you are using XHTML 1.1 directly, use the public identifier in the DOCTYPE declaration, with the namespace declaration on the document element to identify the default namespace: <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> ... </html> Revisions: (none) --> <!-- reserved for future use with document profiles --> <!ENTITY % XHTML.profile "" > <!-- ensure XHTML Notations are disabled --> <!ENTITY % xhtml-notations.module "IGNORE" > <!-- Bidirectional Text features This feature-test entity is used to declare elements and attributes used for bidirectional text support. --> <!ENTITY % XHTML.bidi "INCLUDE" > <!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <!-- Pre-Framework Redeclaration placeholder .................... --> <!-- this serves as a location to insert markup declarations into the DTD prior to the framework declarations. --> <!ENTITY % xhtml-prefw-redecl.module "IGNORE" > <!ENTITY % xhtml-prefw-redecl.mod "" > <![%xhtml-prefw-redecl.module;[ %xhtml-prefw-redecl.mod; <!-- end of xhtml-prefw-redecl.module -->]]> <!-- we need the datatypes now --> <!ENTITY % xhtml-datatypes.module "INCLUDE" > <![%xhtml-datatypes.module;[ <!ENTITY % xhtml-datatypes.mod PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-datatypes-1.mod" > %xhtml-datatypes.mod;]]> <!-- bring in the RDFa attributes cause we need them in Common --> <!ENTITY % xhtml-hyperAttributes.module "INCLUDE" > <![%xhtml-hyperAttributes.module;[ <!ENTITY % xhtml-hyperAttributes.mod PUBLIC "-//W3C//ENTITIES XHTML HyperAttributes 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-hyperAttributes-1.mod" > %xhtml-hyperAttributes.mod;]]> <!ENTITY % xhtml-metaAttributes.module "INCLUDE" > <![%xhtml-metaAttributes.module;[ <!ENTITY % xhtml-metaAttributes.mod PUBLIC "-//W3C//ENTITIES XHTML MetaAttributes 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-metaAttributes-1.mod" > %xhtml-metaAttributes.mod;]]> <!-- bring in the Role attribute cause we need them it in Common --> <!ENTITY % xhtml-role.module "INCLUDE" > <![%xhtml-role.module;[ <!ENTITY % xhtml-role.mod PUBLIC "-//W3C//ENTITIES XHTML Role Attribute Qnames 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-role-qname-1.mod" > %xhtml-role.mod;]]> <!ENTITY % xhtml-events.module "INCLUDE" > <!ENTITY % Common.extra.attrib "%Hyper.attrib; %Metainformation.attrib; %xhtml-role.attrs.qname;" > <!-- Inline Style Module ........................................ --> <!ENTITY % xhtml-inlstyle.module "INCLUDE" > <![%xhtml-inlstyle.module;[ <!ENTITY % xhtml-inlstyle.mod PUBLIC "-//W3C//ELEMENTS XHTML Inline Style 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod" > %xhtml-inlstyle.mod;]]> <!-- declare Document Model module instantiated in framework --> <!ENTITY % xhtml-model.mod PUBLIC "-//W3C//ENTITIES XHTML+RDFa Document Model 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-model-1.mod" > <!-- Modular Framework Module (required) ......................... --> <!ENTITY % xhtml-framework.module "INCLUDE" > <![%xhtml-framework.module;[ <!ENTITY % xhtml-framework.mod PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-framework-1.mod" > %xhtml-framework.mod;]]> <!-- Post-Framework Redeclaration placeholder ................... --> <!-- this serves as a location to insert markup declarations into the DTD following the framework declarations. --> <!ENTITY % xhtml-postfw-redecl.module "IGNORE" > <!ENTITY % xhtml-postfw-redecl.mod ""> <![%xhtml-postfw-redecl.module;[ %xhtml-postfw-redecl.mod; <!-- end of xhtml-postfw-redecl.module -->]]> <!-- Text Module (Required) ..................................... --> <!ENTITY % xhtml-text.module "INCLUDE" > <![%xhtml-text.module;[ <!ENTITY % xhtml-text.mod PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-text-1.mod" > %xhtml-text.mod;]]> <!-- Hypertext Module (required) ................................. --> <!ENTITY % a.attlist "IGNORE" > <!ENTITY % xhtml-hypertext.module "INCLUDE" > <![%xhtml-hypertext.module;[ <!ENTITY % xhtml-hypertext.mod PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-hypertext-1.mod" > %xhtml-hypertext.mod;]]> <!ATTLIST %a.qname; %Common.attrib; charset %Charset.datatype; #IMPLIED type %ContentType.datatype; #IMPLIED accesskey %Character.datatype; #IMPLIED tabindex %Number.datatype; #IMPLIED > <!-- Lists Module (required) .................................... --> <!ENTITY % xhtml-list.module "INCLUDE" > <![%xhtml-list.module;[ <!ENTITY % xhtml-list.mod PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-list-1.mod" > %xhtml-list.mod;]]> <!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <!-- Edit Module ................................................ --> <!ENTITY % xhtml-edit.module "INCLUDE" > <![%xhtml-edit.module;[ <!ENTITY % xhtml-edit.mod PUBLIC "-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-edit-1.mod" > %xhtml-edit.mod;]]> <!-- BIDI Override Module ....................................... --> <!ENTITY % xhtml-bdo.module "%XHTML.bidi;" > <![%xhtml-bdo.module;[ <!ENTITY % xhtml-bdo.mod PUBLIC "-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-bdo-1.mod" > %xhtml-bdo.mod;]]> <!-- Ruby Module ................................................ --> <!ENTITY % Ruby.common.attlists "INCLUDE" > <!ENTITY % Ruby.common.attrib "%Common.attrib;" > <!ENTITY % xhtml-ruby.module "INCLUDE" > <![%xhtml-ruby.module;[ <!ENTITY % xhtml-ruby.mod PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN" "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod" > %xhtml-ruby.mod;]]> <!-- Presentation Module ........................................ --> <!ENTITY % xhtml-pres.module "INCLUDE" > <![%xhtml-pres.module;[ <!ENTITY % xhtml-pres.mod PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-pres-1.mod" > %xhtml-pres.mod;]]> <!-- Document Metainformation Module ............................ --> <!ENTITY % xhtml-meta.module "INCLUDE" > <![%xhtml-meta.module;[ <!ENTITY % xhtml-meta.mod PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-meta-2.mod" > %xhtml-meta.mod;]]> <!-- Base Element Module ........................................ --> <!ENTITY % xhtml-base.module "INCLUDE" > <![%xhtml-base.module;[ <!ENTITY % xhtml-base.mod PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-base-1.mod" > %xhtml-base.mod;]]> <!-- Scripting Module ........................................... --> <!ENTITY % xhtml-script.module "INCLUDE" > <![%xhtml-script.module;[ <!ENTITY % xhtml-script.mod PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-script-1.mod" > %xhtml-script.mod;]]> <!-- Style Sheets Module ......................................... --> <!ENTITY % xhtml-style.module "INCLUDE" > <![%xhtml-style.module;[ <!ENTITY % xhtml-style.mod PUBLIC "-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-style-1.mod" > %xhtml-style.mod;]]> <!-- Image Module ............................................... --> <!ENTITY % xhtml-image.module "INCLUDE" > <![%xhtml-image.module;[ <!ENTITY % xhtml-image.mod PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-image-1.mod" > %xhtml-image.mod;]]> <!-- Client-side Image Map Module ............................... --> <!ENTITY % area.attlist "IGNORE" > <!ENTITY % xhtml-csismap.module "INCLUDE" > <![%xhtml-csismap.module;[ <!ENTITY % xhtml-csismap.mod PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-csismap-1.mod" > %xhtml-csismap.mod;]]> <!ATTLIST %area.qname; %Common.attrib; shape %Shape.datatype; 'rect' coords %Coords.datatype; #IMPLIED nohref ( nohref ) #IMPLIED alt %Text.datatype; #REQUIRED tabindex %Number.datatype; #IMPLIED accesskey %Character.datatype; #IMPLIED > <!-- Server-side Image Map Module ............................... --> <!ENTITY % xhtml-ssismap.module "INCLUDE" > <![%xhtml-ssismap.module;[ <!ENTITY % xhtml-ssismap.mod PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-ssismap-1.mod" > %xhtml-ssismap.mod;]]> <!-- Param Element Module ....................................... --> <!ENTITY % xhtml-param.module "INCLUDE" > <![%xhtml-param.module;[ <!ENTITY % xhtml-param.mod PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-param-1.mod" > %xhtml-param.mod;]]> <!-- Embedded Object Module ..................................... --> <!ENTITY % xhtml-object.module "INCLUDE" > <![%xhtml-object.module;[ <!ENTITY % xhtml-object.mod PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-object-1.mod" > %xhtml-object.mod;]]> <!-- Tables Module ............................................... --> <!ENTITY % xhtml-table.module "INCLUDE" > <![%xhtml-table.module;[ <!ENTITY % xhtml-table.mod PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-table-1.mod" > %xhtml-table.mod;]]> <!-- Forms Module ............................................... --> <!ENTITY % xhtml-form.module "INCLUDE" > <![%xhtml-form.module;[ <!ENTITY % xhtml-form.mod PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-form-1.mod" > %xhtml-form.mod;]]> <!-- Target Attribute Module .................................... --> <!ENTITY % xhtml-target.module "INCLUDE" > <![%xhtml-target.module;[ <!ENTITY % xhtml-target.mod PUBLIC "-//W3C//ELEMENTS XHTML Target 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-target-1.mod" > %xhtml-target.mod;]]> <!-- Legacy Markup ............................................... --> <!ENTITY % xhtml-legacy.module "IGNORE" > <![%xhtml-legacy.module;[ <!ENTITY % xhtml-legacy.mod PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-legacy-1.mod" > %xhtml-legacy.mod;]]> <!-- Document Structure Module (required) ....................... --> <!ENTITY % xhtml-struct.module "INCLUDE" > <![%xhtml-struct.module;[ <!ENTITY % xhtml-struct.mod PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-struct-1.mod" > %xhtml-struct.mod;]]> <!-- end of XHTML 1.1 DTD ................................................. --> <!-- ....................................................................... -->
This appendix is normative.
This section is informative.
At the time of publication, the participants in the W3C HTML Working Group were: