mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-03-20 18:50:08 +03:00
- added xmlRemoveProp
- changed the way Windows socket stuff get included - removed an indetermination xmLDecl/PI(xml...) - xmlNewNs wasn't checking for double definition - fixed a problem with dist-hook duplicates - fixed the loading of external entities APIs, now xmlLoadExternalEntity() is used everywhere - now the xhtml spec validates with the xhtml DTD. - error.c: fixed crashes in case of no input stream - added the xhtml spec and dtds to the validation tests and results Daniel
This commit is contained in:
parent
5e5c62351f
commit
686d6b6ab1
19
ChangeLog
19
ChangeLog
@ -1,3 +1,22 @@
|
||||
Mon Jan 3 11:58:05 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org>
|
||||
|
||||
* tree.[ch]: added xmlRemoveProp
|
||||
* win32config.h.in nanohttp.c: avoid including the Windows
|
||||
socket stuff in every C files
|
||||
* parser.c: removed an indetermination xmLDecl/PI(xml...) in
|
||||
the XmL parser(s)
|
||||
* test/ns4 result/ns4 etc...: added test case for previous prob
|
||||
* tree.c: xmlNewNs wasn't checking for double definition
|
||||
* Makefile.in: fixed a problem with dist-hook duplicates
|
||||
* parser.[hc], xmlIO.c: fixed the loading of external entities
|
||||
APIs, now xmlLoadExternalEntity() is used everywhere and
|
||||
setting up an app specific front-end using the
|
||||
* SAX.c parser.c: some fixes, now the xhtml spec validates
|
||||
with the xhtml DTD.
|
||||
* error.c: fixed crashes in case of no input stream
|
||||
* test/valid/[dtds/]/xhtml* : added the xhtml spec and dtds
|
||||
to the validation tests and results
|
||||
|
||||
Wed Dec 29 15:29:52 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org>
|
||||
|
||||
* HTMLparser.[ch] testHTML.c: added push mode for the HTML parser
|
||||
|
19
SAX.c
19
SAX.c
@ -22,6 +22,7 @@
|
||||
#include "entities.h"
|
||||
#include "xml-error.h"
|
||||
#include "debugXML.h"
|
||||
#include "xmlIO.h"
|
||||
#include "SAX.h"
|
||||
|
||||
/* #define DEBUG_SAX */
|
||||
@ -145,7 +146,7 @@ hasExternalSubset(void *ctx)
|
||||
* internalSubset:
|
||||
* @ctx: the user data (XML parser context)
|
||||
*
|
||||
* Does this document has an internal subset
|
||||
* Callback on internal subset declaration.
|
||||
*/
|
||||
void
|
||||
internalSubset(void *ctx, const xmlChar *name,
|
||||
@ -226,11 +227,11 @@ internalSubset(void *ctx, const xmlChar *name,
|
||||
* @publicId: The public ID of the entity
|
||||
* @systemId: The system ID of the entity
|
||||
*
|
||||
* Special entity resolver, better left to the parser, it has
|
||||
* more context than the application layer.
|
||||
* The default behaviour is to NOT resolve the entities, in that case
|
||||
* the ENTITY_REF nodes are built in the structure (and the parameter
|
||||
* values).
|
||||
* The entity loader, to control the loading of external entities,
|
||||
* the application can either:
|
||||
* - override this resolveEntity() callback in the SAX block
|
||||
* - or better use the xmlSetExternalEntityLoader() function to
|
||||
* set up it's own entity resolution routine
|
||||
*
|
||||
* Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
|
||||
*/
|
||||
@ -243,10 +244,8 @@ resolveEntity(void *ctx, const xmlChar *publicId, const xmlChar *systemId)
|
||||
fprintf(stderr, "SAX.resolveEntity(%s, %s)\n", publicId, systemId);
|
||||
#endif
|
||||
|
||||
if (systemId != NULL) {
|
||||
return(xmlNewInputFromFile(ctxt, (char *) systemId));
|
||||
}
|
||||
return(NULL);
|
||||
return(xmlLoadExternalEntity((const char *) systemId,
|
||||
(const char *) publicId, ctxt));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,60 @@
|
||||
SAX.setDocumentLocator()
|
||||
SAX.startDocument()
|
||||
SAX.startElement(diagram, testattr='test', xml:lang='en', xml:link='simple', xml:space='preserve')
|
||||
SAX.endElement(diagram)
|
||||
SAX.processingInstruction(xml-stylesheet, type="text/xml"
|
||||
href="#style1")
|
||||
SAX.internalSubset(doc, (null), doc.dtd)
|
||||
SAX.startElement(doc)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(head)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(xsl:stylesheet, id='style1', version='1.0', xmlns:xsl='http://www.w3.org/1999/XSL/Transform', xmlns:fo='http://www.w3.org/1999/XSL/Format')
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(xsl:import, href='doc.xsl')
|
||||
SAX.endElement(xsl:import)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(xsl:template, match='id('foo')')
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(fo:block, font-weight='bold')
|
||||
SAX.startElement(xsl:apply-templates)
|
||||
SAX.endElement(xsl:apply-templates)
|
||||
SAX.endElement(fo:block)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.endElement(xsl:template)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(xsl:template, match='xsl:stylesheet')
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.comment( ignore )
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.endElement(xsl:template)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.endElement(xsl:stylesheet)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.endElement(head)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(body)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.startElement(para, id='foo')
|
||||
SAX.characters(
|
||||
...
|
||||
, 5)
|
||||
SAX.endElement(para)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.endElement(body)
|
||||
SAX.characters(
|
||||
, 1)
|
||||
SAX.endElement(doc)
|
||||
SAX.endDocument()
|
||||
|
5
error.c
5
error.c
@ -46,6 +46,7 @@ xmlParserPrintFileContext(xmlParserInputPtr input) {
|
||||
const xmlChar *cur, *base;
|
||||
int n;
|
||||
|
||||
if (input == NULL) return;
|
||||
cur = input->cur;
|
||||
base = input->base;
|
||||
while ((cur > base) && ((*cur == '\n') || (*cur == '\r'))) {
|
||||
@ -91,7 +92,7 @@ xmlParserError(void *ctx, const char *msg, ...)
|
||||
va_list args;
|
||||
|
||||
input = ctxt->input;
|
||||
if ((input->filename == NULL) && (ctxt->inputNr > 1)) {
|
||||
if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) {
|
||||
cur = input;
|
||||
input = ctxt->inputTab[ctxt->inputNr - 2];
|
||||
}
|
||||
@ -129,7 +130,7 @@ xmlParserWarning(void *ctx, const char *msg, ...)
|
||||
va_list args;
|
||||
|
||||
input = ctxt->input;
|
||||
if ((input->filename == NULL) && (ctxt->inputNr > 1)) {
|
||||
if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) {
|
||||
cur = input;
|
||||
input = ctxt->inputTab[ctxt->inputNr - 2];
|
||||
}
|
||||
|
@ -50,10 +50,6 @@ typedef struct xmlParserInput {
|
||||
} xmlParserInput;
|
||||
typedef xmlParserInput *xmlParserInputPtr;
|
||||
|
||||
typedef xmlParserInputPtr (*xmlExternalEntityLoader)(const char *URL,
|
||||
const char *ID,
|
||||
xmlParserInputPtr context);
|
||||
|
||||
/**
|
||||
* the parser can be asked to collect Node informations, i.e. at what
|
||||
* place in the file they were detected.
|
||||
@ -255,6 +251,13 @@ typedef struct xmlSAXHandler {
|
||||
} xmlSAXHandler;
|
||||
typedef xmlSAXHandler *xmlSAXHandlerPtr;
|
||||
|
||||
/**
|
||||
* External entity loaders types
|
||||
*/
|
||||
typedef xmlParserInputPtr (*xmlExternalEntityLoader)(const char *URL,
|
||||
const char *ID,
|
||||
xmlParserCtxtPtr context);
|
||||
|
||||
/**
|
||||
* Global variables: just the default SAX interface tables and XML
|
||||
* version infos.
|
||||
@ -407,7 +410,7 @@ xmlExternalEntityLoader
|
||||
xmlParserInputPtr
|
||||
xmlLoadExternalEntity (const char *URL,
|
||||
const char *ID,
|
||||
xmlParserInputPtr context);
|
||||
xmlParserCtxtPtr context);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -449,6 +449,7 @@ void xmlTextConcat (xmlNodePtr node,
|
||||
int len);
|
||||
void xmlFreeNodeList (xmlNodePtr cur);
|
||||
void xmlFreeNode (xmlNodePtr cur);
|
||||
int xmlRemoveProp (xmlAttrPtr cur);
|
||||
|
||||
/*
|
||||
* Namespaces
|
||||
|
@ -15,6 +15,7 @@
|
||||
fly with ZLIB if found at compile-time */
|
||||
|
||||
#ifdef WIN32
|
||||
#define INCLUDE_WINSOCKS
|
||||
#include "win32config.h"
|
||||
#else
|
||||
#include "config.h"
|
||||
|
25
parser.c
25
parser.c
@ -344,6 +344,8 @@ PUSH_AND_POP(extern, xmlChar*, name)
|
||||
#define SKIP_BLANKS \
|
||||
do { \
|
||||
while (IS_BLANK(CUR)) NEXT; \
|
||||
while ((CUR == 0) && (ctxt->inputNr > 1)) \
|
||||
xmlPopInput(ctxt); \
|
||||
if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \
|
||||
if (*ctxt->input->cur == '&') xmlParserHandleReference(ctxt); \
|
||||
} while (IS_BLANK(CUR));
|
||||
@ -494,7 +496,7 @@ xmlNewEntityInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
|
||||
case XML_EXTERNAL_GENERAL_PARSED_ENTITY:
|
||||
case XML_EXTERNAL_PARAMETER_ENTITY:
|
||||
return(xmlLoadExternalEntity((char *) entity->SystemID,
|
||||
(char *) entity->ExternalID, ctxt->input));
|
||||
(char *) entity->ExternalID, ctxt));
|
||||
case XML_INTERNAL_GENERAL_ENTITY:
|
||||
if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
|
||||
ctxt->sax->error(ctxt->userData,
|
||||
@ -584,7 +586,7 @@ xmlNewInputFromFile(xmlParserCtxtPtr ctxt, const char *filename) {
|
||||
buf = xmlParserInputBufferCreateFilename(name,
|
||||
XML_CHAR_ENCODING_NONE);
|
||||
if (buf != NULL)
|
||||
directory = xmlMemStrdup(ctxt->input->directory);
|
||||
directory = xmlParserGetDirectory(name);
|
||||
}
|
||||
if ((buf == NULL) && (ctxt->directory != NULL)) {
|
||||
#ifdef WIN32
|
||||
@ -595,7 +597,7 @@ xmlNewInputFromFile(xmlParserCtxtPtr ctxt, const char *filename) {
|
||||
buf = xmlParserInputBufferCreateFilename(name,
|
||||
XML_CHAR_ENCODING_NONE);
|
||||
if (buf != NULL)
|
||||
directory = xmlMemStrdup(ctxt->directory);
|
||||
directory = xmlParserGetDirectory(name);
|
||||
}
|
||||
if (buf == NULL)
|
||||
return(NULL);
|
||||
@ -4665,7 +4667,15 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) {
|
||||
if (name != NULL) xmlFree(name);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
SKIP_BLANKS;
|
||||
/*
|
||||
* Pop-up of finished entities.
|
||||
*/
|
||||
while ((CUR == 0) && (ctxt->inputNr > 1))
|
||||
xmlPopInput(ctxt);
|
||||
SKIP_BLANKS;
|
||||
|
||||
if (CUR != '>') {
|
||||
if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
|
||||
ctxt->sax->error(ctxt->userData,
|
||||
@ -6838,19 +6848,17 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
|
||||
GROW;
|
||||
if ((CUR == '<') && (NXT(1) == '?') &&
|
||||
(NXT(2) == 'x') && (NXT(3) == 'm') &&
|
||||
(NXT(4) == 'l')) {
|
||||
(NXT(4) == 'l') && (IS_BLANK(NXT(5)))) {
|
||||
xmlParseXMLDecl(ctxt);
|
||||
/* SKIP_EOL(cur); */
|
||||
SKIP_BLANKS;
|
||||
} else if ((CUR == '<') && (NXT(1) == '?') &&
|
||||
(NXT(2) == 'X') && (NXT(3) == 'M') &&
|
||||
(NXT(4) == 'L')) {
|
||||
(NXT(4) == 'L') && (IS_BLANK(NXT(5)))) {
|
||||
/*
|
||||
* The first drafts were using <?XML and the final W3C REC
|
||||
* now use <?xml ...
|
||||
*/
|
||||
xmlParseXMLDecl(ctxt);
|
||||
/* SKIP_EOL(cur); */
|
||||
SKIP_BLANKS;
|
||||
} else {
|
||||
ctxt->version = xmlCharStrdup(XML_DEFAULT_VERSION);
|
||||
@ -7127,7 +7135,8 @@ xmlParseTry(xmlParserCtxtPtr ctxt) {
|
||||
&xmlDefaultSAXLocator);
|
||||
if ((in->cur[2] == 'x') &&
|
||||
(in->cur[3] == 'm') &&
|
||||
(in->cur[4] == 'l')) {
|
||||
(in->cur[4] == 'l') &&
|
||||
(IS_BLANK(in->cur[5]))) {
|
||||
ret += 5;
|
||||
#ifdef DEBUG_PUSH
|
||||
fprintf(stderr, "PP: Parsing XML Decl\n");
|
||||
|
13
parser.h
13
parser.h
@ -50,10 +50,6 @@ typedef struct xmlParserInput {
|
||||
} xmlParserInput;
|
||||
typedef xmlParserInput *xmlParserInputPtr;
|
||||
|
||||
typedef xmlParserInputPtr (*xmlExternalEntityLoader)(const char *URL,
|
||||
const char *ID,
|
||||
xmlParserInputPtr context);
|
||||
|
||||
/**
|
||||
* the parser can be asked to collect Node informations, i.e. at what
|
||||
* place in the file they were detected.
|
||||
@ -255,6 +251,13 @@ typedef struct xmlSAXHandler {
|
||||
} xmlSAXHandler;
|
||||
typedef xmlSAXHandler *xmlSAXHandlerPtr;
|
||||
|
||||
/**
|
||||
* External entity loaders types
|
||||
*/
|
||||
typedef xmlParserInputPtr (*xmlExternalEntityLoader)(const char *URL,
|
||||
const char *ID,
|
||||
xmlParserCtxtPtr context);
|
||||
|
||||
/**
|
||||
* Global variables: just the default SAX interface tables and XML
|
||||
* version infos.
|
||||
@ -407,7 +410,7 @@ xmlExternalEntityLoader
|
||||
xmlParserInputPtr
|
||||
xmlLoadExternalEntity (const char *URL,
|
||||
const char *ID,
|
||||
xmlParserInputPtr context);
|
||||
xmlParserCtxtPtr context);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,2 +1,24 @@
|
||||
<?xml version="1.0"?>
|
||||
<diagram xml:lang="en" xml:link="simple" xml:space="preserve" testattr="test"/>
|
||||
<!DOCTYPE doc SYSTEM "doc.dtd">
|
||||
<?xml-stylesheet type="text/xml"
|
||||
href="#style1"?>
|
||||
<doc>
|
||||
<head>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" id="style1" version="1.0">
|
||||
<xsl:import href="doc.xsl"/>
|
||||
<xsl:template match="id('foo')">
|
||||
<fo:block font-weight="bold">
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
<xsl:template match="xsl:stylesheet">
|
||||
<!-- ignore -->
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
</head>
|
||||
<body>
|
||||
<para id="foo">
|
||||
...
|
||||
</para>
|
||||
</body>
|
||||
</doc>
|
||||
|
24
result/ns4
24
result/ns4
@ -1,2 +1,24 @@
|
||||
<?xml version="1.0"?>
|
||||
<diagram xml:lang="en" xml:link="simple" xml:space="preserve" testattr="test"/>
|
||||
<!DOCTYPE doc SYSTEM "doc.dtd">
|
||||
<?xml-stylesheet type="text/xml"
|
||||
href="#style1"?>
|
||||
<doc>
|
||||
<head>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" id="style1" version="1.0">
|
||||
<xsl:import href="doc.xsl"/>
|
||||
<xsl:template match="id('foo')">
|
||||
<fo:block font-weight="bold">
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
<xsl:template match="xsl:stylesheet">
|
||||
<!-- ignore -->
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
</head>
|
||||
<body>
|
||||
<para id="foo">
|
||||
...
|
||||
</para>
|
||||
</body>
|
||||
</doc>
|
||||
|
1287
result/valid/xhtml1.xhtml
Normal file
1287
result/valid/xhtml1.xhtml
Normal file
File diff suppressed because it is too large
Load Diff
0
result/valid/xhtml1.xhtml.err
Normal file
0
result/valid/xhtml1.xhtml.err
Normal file
26
test/ns4
26
test/ns4
@ -1,2 +1,24 @@
|
||||
<?xml version="1.0"?>
|
||||
<diagram testattr="test" xml:lang="en" xml:link="simple" xml:space="preserve"/>
|
||||
<?xml-stylesheet type="text/xml"
|
||||
href="#style1"?>
|
||||
<!DOCTYPE doc SYSTEM "doc.dtd">
|
||||
<doc>
|
||||
<head>
|
||||
<xsl:stylesheet id="style1"
|
||||
version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:import href="doc.xsl"/>
|
||||
<xsl:template match="id('foo')">
|
||||
<fo:block font-weight="bold"><xsl:apply-templates/></fo:block>
|
||||
</xsl:template>
|
||||
<xsl:template match="xsl:stylesheet">
|
||||
<!-- ignore -->
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
</head>
|
||||
<body>
|
||||
<para id="foo">
|
||||
...
|
||||
</para>
|
||||
</body>
|
||||
</doc>
|
||||
|
196
test/valid/dtds/xhtml-lat1.ent
Normal file
196
test/valid/dtds/xhtml-lat1.ent
Normal file
@ -0,0 +1,196 @@
|
||||
<!-- Portions (C) International Organization for Standardization 1986
|
||||
Permission to copy in any form is granted for use with
|
||||
conforming SGML systems and applications as defined in
|
||||
ISO 8879, provided this notice is included in all copies.
|
||||
-->
|
||||
<!-- Character entity set. Typical invocation:
|
||||
<!ENTITY % HTMLlat1 PUBLIC
|
||||
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
|
||||
%HTMLlat1;
|
||||
-->
|
||||
|
||||
<!ENTITY nbsp " "> <!-- no-break space = non-breaking space,
|
||||
U+00A0 ISOnum -->
|
||||
<!ENTITY iexcl "¡"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
|
||||
<!ENTITY cent "¢"> <!-- cent sign, U+00A2 ISOnum -->
|
||||
<!ENTITY pound "£"> <!-- pound sign, U+00A3 ISOnum -->
|
||||
<!ENTITY curren "¤"> <!-- currency sign, U+00A4 ISOnum -->
|
||||
<!ENTITY yen "¥"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
|
||||
<!ENTITY brvbar "¦"> <!-- broken bar = broken vertical bar,
|
||||
U+00A6 ISOnum -->
|
||||
<!ENTITY sect "§"> <!-- section sign, U+00A7 ISOnum -->
|
||||
<!ENTITY uml "¨"> <!-- diaeresis = spacing diaeresis,
|
||||
U+00A8 ISOdia -->
|
||||
<!ENTITY copy "©"> <!-- copyright sign, U+00A9 ISOnum -->
|
||||
<!ENTITY ordf "ª"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
|
||||
<!ENTITY laquo "«"> <!-- left-pointing double angle quotation mark
|
||||
= left pointing guillemet, U+00AB ISOnum -->
|
||||
<!ENTITY not "¬"> <!-- not sign = discretionary hyphen,
|
||||
U+00AC ISOnum -->
|
||||
<!ENTITY shy "­"> <!-- soft hyphen = discretionary hyphen,
|
||||
U+00AD ISOnum -->
|
||||
<!ENTITY reg "®"> <!-- registered sign = registered trade mark sign,
|
||||
U+00AE ISOnum -->
|
||||
<!ENTITY macr "¯"> <!-- macron = spacing macron = overline
|
||||
= APL overbar, U+00AF ISOdia -->
|
||||
<!ENTITY deg "°"> <!-- degree sign, U+00B0 ISOnum -->
|
||||
<!ENTITY plusmn "±"> <!-- plus-minus sign = plus-or-minus sign,
|
||||
U+00B1 ISOnum -->
|
||||
<!ENTITY sup2 "²"> <!-- superscript two = superscript digit two
|
||||
= squared, U+00B2 ISOnum -->
|
||||
<!ENTITY sup3 "³"> <!-- superscript three = superscript digit three
|
||||
= cubed, U+00B3 ISOnum -->
|
||||
<!ENTITY acute "´"> <!-- acute accent = spacing acute,
|
||||
U+00B4 ISOdia -->
|
||||
<!ENTITY micro "µ"> <!-- micro sign, U+00B5 ISOnum -->
|
||||
<!ENTITY para "¶"> <!-- pilcrow sign = paragraph sign,
|
||||
U+00B6 ISOnum -->
|
||||
<!ENTITY middot "·"> <!-- middle dot = Georgian comma
|
||||
= Greek middle dot, U+00B7 ISOnum -->
|
||||
<!ENTITY cedil "¸"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
|
||||
<!ENTITY sup1 "¹"> <!-- superscript one = superscript digit one,
|
||||
U+00B9 ISOnum -->
|
||||
<!ENTITY ordm "º"> <!-- masculine ordinal indicator,
|
||||
U+00BA ISOnum -->
|
||||
<!ENTITY raquo "»"> <!-- right-pointing double angle quotation mark
|
||||
= right pointing guillemet, U+00BB ISOnum -->
|
||||
<!ENTITY frac14 "¼"> <!-- vulgar fraction one quarter
|
||||
= fraction one quarter, U+00BC ISOnum -->
|
||||
<!ENTITY frac12 "½"> <!-- vulgar fraction one half
|
||||
= fraction one half, U+00BD ISOnum -->
|
||||
<!ENTITY frac34 "¾"> <!-- vulgar fraction three quarters
|
||||
= fraction three quarters, U+00BE ISOnum -->
|
||||
<!ENTITY iquest "¿"> <!-- inverted question mark
|
||||
= turned question mark, U+00BF ISOnum -->
|
||||
<!ENTITY Agrave "À"> <!-- latin capital letter A with grave
|
||||
= latin capital letter A grave,
|
||||
U+00C0 ISOlat1 -->
|
||||
<!ENTITY Aacute "Á"> <!-- latin capital letter A with acute,
|
||||
U+00C1 ISOlat1 -->
|
||||
<!ENTITY Acirc "Â"> <!-- latin capital letter A with circumflex,
|
||||
U+00C2 ISOlat1 -->
|
||||
<!ENTITY Atilde "Ã"> <!-- latin capital letter A with tilde,
|
||||
U+00C3 ISOlat1 -->
|
||||
<!ENTITY Auml "Ä"> <!-- latin capital letter A with diaeresis,
|
||||
U+00C4 ISOlat1 -->
|
||||
<!ENTITY Aring "Å"> <!-- latin capital letter A with ring above
|
||||
= latin capital letter A ring,
|
||||
U+00C5 ISOlat1 -->
|
||||
<!ENTITY AElig "Æ"> <!-- latin capital letter AE
|
||||
= latin capital ligature AE,
|
||||
U+00C6 ISOlat1 -->
|
||||
<!ENTITY Ccedil "Ç"> <!-- latin capital letter C with cedilla,
|
||||
U+00C7 ISOlat1 -->
|
||||
<!ENTITY Egrave "È"> <!-- latin capital letter E with grave,
|
||||
U+00C8 ISOlat1 -->
|
||||
<!ENTITY Eacute "É"> <!-- latin capital letter E with acute,
|
||||
U+00C9 ISOlat1 -->
|
||||
<!ENTITY Ecirc "Ê"> <!-- latin capital letter E with circumflex,
|
||||
U+00CA ISOlat1 -->
|
||||
<!ENTITY Euml "Ë"> <!-- latin capital letter E with diaeresis,
|
||||
U+00CB ISOlat1 -->
|
||||
<!ENTITY Igrave "Ì"> <!-- latin capital letter I with grave,
|
||||
U+00CC ISOlat1 -->
|
||||
<!ENTITY Iacute "Í"> <!-- latin capital letter I with acute,
|
||||
U+00CD ISOlat1 -->
|
||||
<!ENTITY Icirc "Î"> <!-- latin capital letter I with circumflex,
|
||||
U+00CE ISOlat1 -->
|
||||
<!ENTITY Iuml "Ï"> <!-- latin capital letter I with diaeresis,
|
||||
U+00CF ISOlat1 -->
|
||||
<!ENTITY ETH "Ð"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
|
||||
<!ENTITY Ntilde "Ñ"> <!-- latin capital letter N with tilde,
|
||||
U+00D1 ISOlat1 -->
|
||||
<!ENTITY Ograve "Ò"> <!-- latin capital letter O with grave,
|
||||
U+00D2 ISOlat1 -->
|
||||
<!ENTITY Oacute "Ó"> <!-- latin capital letter O with acute,
|
||||
U+00D3 ISOlat1 -->
|
||||
<!ENTITY Ocirc "Ô"> <!-- latin capital letter O with circumflex,
|
||||
U+00D4 ISOlat1 -->
|
||||
<!ENTITY Otilde "Õ"> <!-- latin capital letter O with tilde,
|
||||
U+00D5 ISOlat1 -->
|
||||
<!ENTITY Ouml "Ö"> <!-- latin capital letter O with diaeresis,
|
||||
U+00D6 ISOlat1 -->
|
||||
<!ENTITY times "×"> <!-- multiplication sign, U+00D7 ISOnum -->
|
||||
<!ENTITY Oslash "Ø"> <!-- latin capital letter O with stroke
|
||||
= latin capital letter O slash,
|
||||
U+00D8 ISOlat1 -->
|
||||
<!ENTITY Ugrave "Ù"> <!-- latin capital letter U with grave,
|
||||
U+00D9 ISOlat1 -->
|
||||
<!ENTITY Uacute "Ú"> <!-- latin capital letter U with acute,
|
||||
U+00DA ISOlat1 -->
|
||||
<!ENTITY Ucirc "Û"> <!-- latin capital letter U with circumflex,
|
||||
U+00DB ISOlat1 -->
|
||||
<!ENTITY Uuml "Ü"> <!-- latin capital letter U with diaeresis,
|
||||
U+00DC ISOlat1 -->
|
||||
<!ENTITY Yacute "Ý"> <!-- latin capital letter Y with acute,
|
||||
U+00DD ISOlat1 -->
|
||||
<!ENTITY THORN "Þ"> <!-- latin capital letter THORN,
|
||||
U+00DE ISOlat1 -->
|
||||
<!ENTITY szlig "ß"> <!-- latin small letter sharp s = ess-zed,
|
||||
U+00DF ISOlat1 -->
|
||||
<!ENTITY agrave "à"> <!-- latin small letter a with grave
|
||||
= latin small letter a grave,
|
||||
U+00E0 ISOlat1 -->
|
||||
<!ENTITY aacute "á"> <!-- latin small letter a with acute,
|
||||
U+00E1 ISOlat1 -->
|
||||
<!ENTITY acirc "â"> <!-- latin small letter a with circumflex,
|
||||
U+00E2 ISOlat1 -->
|
||||
<!ENTITY atilde "ã"> <!-- latin small letter a with tilde,
|
||||
U+00E3 ISOlat1 -->
|
||||
<!ENTITY auml "ä"> <!-- latin small letter a with diaeresis,
|
||||
U+00E4 ISOlat1 -->
|
||||
<!ENTITY aring "å"> <!-- latin small letter a with ring above
|
||||
= latin small letter a ring,
|
||||
U+00E5 ISOlat1 -->
|
||||
<!ENTITY aelig "æ"> <!-- latin small letter ae
|
||||
= latin small ligature ae, U+00E6 ISOlat1 -->
|
||||
<!ENTITY ccedil "ç"> <!-- latin small letter c with cedilla,
|
||||
U+00E7 ISOlat1 -->
|
||||
<!ENTITY egrave "è"> <!-- latin small letter e with grave,
|
||||
U+00E8 ISOlat1 -->
|
||||
<!ENTITY eacute "é"> <!-- latin small letter e with acute,
|
||||
U+00E9 ISOlat1 -->
|
||||
<!ENTITY ecirc "ê"> <!-- latin small letter e with circumflex,
|
||||
U+00EA ISOlat1 -->
|
||||
<!ENTITY euml "ë"> <!-- latin small letter e with diaeresis,
|
||||
U+00EB ISOlat1 -->
|
||||
<!ENTITY igrave "ì"> <!-- latin small letter i with grave,
|
||||
U+00EC ISOlat1 -->
|
||||
<!ENTITY iacute "í"> <!-- latin small letter i with acute,
|
||||
U+00ED ISOlat1 -->
|
||||
<!ENTITY icirc "î"> <!-- latin small letter i with circumflex,
|
||||
U+00EE ISOlat1 -->
|
||||
<!ENTITY iuml "ï"> <!-- latin small letter i with diaeresis,
|
||||
U+00EF ISOlat1 -->
|
||||
<!ENTITY eth "ð"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
|
||||
<!ENTITY ntilde "ñ"> <!-- latin small letter n with tilde,
|
||||
U+00F1 ISOlat1 -->
|
||||
<!ENTITY ograve "ò"> <!-- latin small letter o with grave,
|
||||
U+00F2 ISOlat1 -->
|
||||
<!ENTITY oacute "ó"> <!-- latin small letter o with acute,
|
||||
U+00F3 ISOlat1 -->
|
||||
<!ENTITY ocirc "ô"> <!-- latin small letter o with circumflex,
|
||||
U+00F4 ISOlat1 -->
|
||||
<!ENTITY otilde "õ"> <!-- latin small letter o with tilde,
|
||||
U+00F5 ISOlat1 -->
|
||||
<!ENTITY ouml "ö"> <!-- latin small letter o with diaeresis,
|
||||
U+00F6 ISOlat1 -->
|
||||
<!ENTITY divide "÷"> <!-- division sign, U+00F7 ISOnum -->
|
||||
<!ENTITY oslash "ø"> <!-- latin small letter o with stroke,
|
||||
= latin small letter o slash,
|
||||
U+00F8 ISOlat1 -->
|
||||
<!ENTITY ugrave "ù"> <!-- latin small letter u with grave,
|
||||
U+00F9 ISOlat1 -->
|
||||
<!ENTITY uacute "ú"> <!-- latin small letter u with acute,
|
||||
U+00FA ISOlat1 -->
|
||||
<!ENTITY ucirc "û"> <!-- latin small letter u with circumflex,
|
||||
U+00FB ISOlat1 -->
|
||||
<!ENTITY uuml "ü"> <!-- latin small letter u with diaeresis,
|
||||
U+00FC ISOlat1 -->
|
||||
<!ENTITY yacute "ý"> <!-- latin small letter y with acute,
|
||||
U+00FD ISOlat1 -->
|
||||
<!ENTITY thorn "þ"> <!-- latin small letter thorn with,
|
||||
U+00FE ISOlat1 -->
|
||||
<!ENTITY yuml "ÿ"> <!-- latin small letter y with diaeresis,
|
||||
U+00FF ISOlat1 -->
|
79
test/valid/dtds/xhtml-special.ent
Normal file
79
test/valid/dtds/xhtml-special.ent
Normal file
@ -0,0 +1,79 @@
|
||||
<!-- Special characters for HTML -->
|
||||
|
||||
<!-- Character entity set. Typical invocation:
|
||||
<!ENTITY % HTMLspecial PUBLIC
|
||||
"-//W3C//ENTITIES Special for XHTML//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
|
||||
%HTMLspecial;
|
||||
-->
|
||||
|
||||
<!-- Portions (C) International Organization for Standardization 1986:
|
||||
Permission to copy in any form is granted for use with
|
||||
conforming SGML systems and applications as defined in
|
||||
ISO 8879, provided this notice is included in all copies.
|
||||
-->
|
||||
|
||||
<!-- Relevant ISO entity set is given unless names are newly introduced.
|
||||
New names (i.e., not in ISO 8879 list) do not clash with any
|
||||
existing ISO 8879 entity names. ISO 10646 character numbers
|
||||
are given for each character, in hex. values are decimal
|
||||
conversions of the ISO 10646 values and refer to the document
|
||||
character set. Names are Unicode names.
|
||||
-->
|
||||
|
||||
<!-- C0 Controls and Basic Latin -->
|
||||
<!ENTITY quot """> <!-- quotation mark = APL quote,
|
||||
U+0022 ISOnum -->
|
||||
<!ENTITY amp "&#38;"> <!-- ampersand, U+0026 ISOnum -->
|
||||
<!ENTITY lt "&#60;"> <!-- less-than sign, U+003C ISOnum -->
|
||||
<!ENTITY gt ">"> <!-- greater-than sign, U+003E ISOnum -->
|
||||
<!ENTITY apos "'"> <!-- apostrophe mark, U+0027 ISOnum -->
|
||||
|
||||
<!-- Latin Extended-A -->
|
||||
<!ENTITY OElig "Œ"> <!-- latin capital ligature OE,
|
||||
U+0152 ISOlat2 -->
|
||||
<!ENTITY oelig "œ"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
|
||||
<!-- ligature is a misnomer, this is a separate character in some languages -->
|
||||
<!ENTITY Scaron "Š"> <!-- latin capital letter S with caron,
|
||||
U+0160 ISOlat2 -->
|
||||
<!ENTITY scaron "š"> <!-- latin small letter s with caron,
|
||||
U+0161 ISOlat2 -->
|
||||
<!ENTITY Yuml "Ÿ"> <!-- latin capital letter Y with diaeresis,
|
||||
U+0178 ISOlat2 -->
|
||||
|
||||
<!-- Spacing Modifier Letters -->
|
||||
<!ENTITY circ "ˆ"> <!-- modifier letter circumflex accent,
|
||||
U+02C6 ISOpub -->
|
||||
<!ENTITY tilde "˜"> <!-- small tilde, U+02DC ISOdia -->
|
||||
|
||||
<!-- General Punctuation -->
|
||||
<!ENTITY ensp " "> <!-- en space, U+2002 ISOpub -->
|
||||
<!ENTITY emsp " "> <!-- em space, U+2003 ISOpub -->
|
||||
<!ENTITY thinsp " "> <!-- thin space, U+2009 ISOpub -->
|
||||
<!ENTITY zwnj "‌"> <!-- zero width non-joiner,
|
||||
U+200C NEW RFC 2070 -->
|
||||
<!ENTITY zwj "‍"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
|
||||
<!ENTITY lrm "‎"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
|
||||
<!ENTITY rlm "‏"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
|
||||
<!ENTITY ndash "–"> <!-- en dash, U+2013 ISOpub -->
|
||||
<!ENTITY mdash "—"> <!-- em dash, U+2014 ISOpub -->
|
||||
<!ENTITY lsquo "‘"> <!-- left single quotation mark,
|
||||
U+2018 ISOnum -->
|
||||
<!ENTITY rsquo "’"> <!-- right single quotation mark,
|
||||
U+2019 ISOnum -->
|
||||
<!ENTITY sbquo "‚"> <!-- single low-9 quotation mark, U+201A NEW -->
|
||||
<!ENTITY ldquo "“"> <!-- left double quotation mark,
|
||||
U+201C ISOnum -->
|
||||
<!ENTITY rdquo "”"> <!-- right double quotation mark,
|
||||
U+201D ISOnum -->
|
||||
<!ENTITY bdquo "„"> <!-- double low-9 quotation mark, U+201E NEW -->
|
||||
<!ENTITY dagger "†"> <!-- dagger, U+2020 ISOpub -->
|
||||
<!ENTITY Dagger "‡"> <!-- double dagger, U+2021 ISOpub -->
|
||||
<!ENTITY permil "‰"> <!-- per mille sign, U+2030 ISOtech -->
|
||||
<!ENTITY lsaquo "‹"> <!-- single left-pointing angle quotation mark,
|
||||
U+2039 ISO proposed -->
|
||||
<!-- lsaquo is proposed but not yet ISO standardized -->
|
||||
<!ENTITY rsaquo "›"> <!-- single right-pointing angle quotation mark,
|
||||
U+203A ISO proposed -->
|
||||
<!-- rsaquo is proposed but not yet ISO standardized -->
|
||||
<!ENTITY euro "€"> <!-- euro sign, U+20AC NEW -->
|
242
test/valid/dtds/xhtml-symbol.ent
Normal file
242
test/valid/dtds/xhtml-symbol.ent
Normal file
@ -0,0 +1,242 @@
|
||||
<!-- Mathematical, Greek and Symbolic characters for HTML -->
|
||||
|
||||
<!-- Character entity set. Typical invocation:
|
||||
<!ENTITY % HTMLsymbol PUBLIC
|
||||
"-//W3C//ENTITIES Symbols for XHTML//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
|
||||
%HTMLsymbol;
|
||||
-->
|
||||
|
||||
<!-- Portions (C) International Organization for Standardization 1986:
|
||||
Permission to copy in any form is granted for use with
|
||||
conforming SGML systems and applications as defined in
|
||||
ISO 8879, provided this notice is included in all copies.
|
||||
-->
|
||||
|
||||
<!-- Relevant ISO entity set is given unless names are newly introduced.
|
||||
New names (i.e., not in ISO 8879 list) do not clash with any
|
||||
existing ISO 8879 entity names. ISO 10646 character numbers
|
||||
are given for each character, in hex. values are decimal
|
||||
conversions of the ISO 10646 values and refer to the document
|
||||
character set. Names are Unicode names.
|
||||
-->
|
||||
|
||||
<!-- Latin Extended-B -->
|
||||
<!ENTITY fnof "ƒ"> <!-- latin small f with hook = function
|
||||
= florin, U+0192 ISOtech -->
|
||||
|
||||
<!-- Greek -->
|
||||
<!ENTITY Alpha "Α"> <!-- greek capital letter alpha, U+0391 -->
|
||||
<!ENTITY Beta "Β"> <!-- greek capital letter beta, U+0392 -->
|
||||
<!ENTITY Gamma "Γ"> <!-- greek capital letter gamma,
|
||||
U+0393 ISOgrk3 -->
|
||||
<!ENTITY Delta "Δ"> <!-- greek capital letter delta,
|
||||
U+0394 ISOgrk3 -->
|
||||
<!ENTITY Epsilon "Ε"> <!-- greek capital letter epsilon, U+0395 -->
|
||||
<!ENTITY Zeta "Ζ"> <!-- greek capital letter zeta, U+0396 -->
|
||||
<!ENTITY Eta "Η"> <!-- greek capital letter eta, U+0397 -->
|
||||
<!ENTITY Theta "Θ"> <!-- greek capital letter theta,
|
||||
U+0398 ISOgrk3 -->
|
||||
<!ENTITY Iota "Ι"> <!-- greek capital letter iota, U+0399 -->
|
||||
<!ENTITY Kappa "Κ"> <!-- greek capital letter kappa, U+039A -->
|
||||
<!ENTITY Lambda "Λ"> <!-- greek capital letter lambda,
|
||||
U+039B ISOgrk3 -->
|
||||
<!ENTITY Mu "Μ"> <!-- greek capital letter mu, U+039C -->
|
||||
<!ENTITY Nu "Ν"> <!-- greek capital letter nu, U+039D -->
|
||||
<!ENTITY Xi "Ξ"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
|
||||
<!ENTITY Omicron "Ο"> <!-- greek capital letter omicron, U+039F -->
|
||||
<!ENTITY Pi "Π"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
|
||||
<!ENTITY Rho "Ρ"> <!-- greek capital letter rho, U+03A1 -->
|
||||
<!-- there is no Sigmaf, and no U+03A2 character either -->
|
||||
<!ENTITY Sigma "Σ"> <!-- greek capital letter sigma,
|
||||
U+03A3 ISOgrk3 -->
|
||||
<!ENTITY Tau "Τ"> <!-- greek capital letter tau, U+03A4 -->
|
||||
<!ENTITY Upsilon "Υ"> <!-- greek capital letter upsilon,
|
||||
U+03A5 ISOgrk3 -->
|
||||
<!ENTITY Phi "Φ"> <!-- greek capital letter phi,
|
||||
U+03A6 ISOgrk3 -->
|
||||
<!ENTITY Chi "Χ"> <!-- greek capital letter chi, U+03A7 -->
|
||||
<!ENTITY Psi "Ψ"> <!-- greek capital letter psi,
|
||||
U+03A8 ISOgrk3 -->
|
||||
<!ENTITY Omega "Ω"> <!-- greek capital letter omega,
|
||||
U+03A9 ISOgrk3 -->
|
||||
|
||||
<!ENTITY alpha "α"> <!-- greek small letter alpha,
|
||||
U+03B1 ISOgrk3 -->
|
||||
<!ENTITY beta "β"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
|
||||
<!ENTITY gamma "γ"> <!-- greek small letter gamma,
|
||||
U+03B3 ISOgrk3 -->
|
||||
<!ENTITY delta "δ"> <!-- greek small letter delta,
|
||||
U+03B4 ISOgrk3 -->
|
||||
<!ENTITY epsilon "ε"> <!-- greek small letter epsilon,
|
||||
U+03B5 ISOgrk3 -->
|
||||
<!ENTITY zeta "ζ"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
|
||||
<!ENTITY eta "η"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
|
||||
<!ENTITY theta "θ"> <!-- greek small letter theta,
|
||||
U+03B8 ISOgrk3 -->
|
||||
<!ENTITY iota "ι"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
|
||||
<!ENTITY kappa "κ"> <!-- greek small letter kappa,
|
||||
U+03BA ISOgrk3 -->
|
||||
<!ENTITY lambda "λ"> <!-- greek small letter lambda,
|
||||
U+03BB ISOgrk3 -->
|
||||
<!ENTITY mu "μ"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
|
||||
<!ENTITY nu "ν"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
|
||||
<!ENTITY xi "ξ"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
|
||||
<!ENTITY omicron "ο"> <!-- greek small letter omicron, U+03BF NEW -->
|
||||
<!ENTITY pi "π"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
|
||||
<!ENTITY rho "ρ"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
|
||||
<!ENTITY sigmaf "ς"> <!-- greek small letter final sigma,
|
||||
U+03C2 ISOgrk3 -->
|
||||
<!ENTITY sigma "σ"> <!-- greek small letter sigma,
|
||||
U+03C3 ISOgrk3 -->
|
||||
<!ENTITY tau "τ"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
|
||||
<!ENTITY upsilon "υ"> <!-- greek small letter upsilon,
|
||||
U+03C5 ISOgrk3 -->
|
||||
<!ENTITY phi "φ"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
|
||||
<!ENTITY chi "χ"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
|
||||
<!ENTITY psi "ψ"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
|
||||
<!ENTITY omega "ω"> <!-- greek small letter omega,
|
||||
U+03C9 ISOgrk3 -->
|
||||
<!ENTITY thetasym "ϑ"> <!-- greek small letter theta symbol,
|
||||
U+03D1 NEW -->
|
||||
<!ENTITY upsih "ϒ"> <!-- greek upsilon with hook symbol,
|
||||
U+03D2 NEW -->
|
||||
<!ENTITY piv "ϖ"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
|
||||
|
||||
<!-- General Punctuation -->
|
||||
<!ENTITY bull "•"> <!-- bullet = black small circle,
|
||||
U+2022 ISOpub -->
|
||||
<!-- bullet is NOT the same as bullet operator, U+2219 -->
|
||||
<!ENTITY hellip "…"> <!-- horizontal ellipsis = three dot leader,
|
||||
U+2026 ISOpub -->
|
||||
<!ENTITY prime "′"> <!-- prime = minutes = feet, U+2032 ISOtech -->
|
||||
<!ENTITY Prime "″"> <!-- double prime = seconds = inches,
|
||||
U+2033 ISOtech -->
|
||||
<!ENTITY oline "‾"> <!-- overline = spacing overscore,
|
||||
U+203E NEW -->
|
||||
<!ENTITY frasl "⁄"> <!-- fraction slash, U+2044 NEW -->
|
||||
|
||||
<!-- Letterlike Symbols -->
|
||||
<!ENTITY weierp "℘"> <!-- script capital P = power set
|
||||
= Weierstrass p, U+2118 ISOamso -->
|
||||
<!ENTITY image "ℑ"> <!-- blackletter capital I = imaginary part,
|
||||
U+2111 ISOamso -->
|
||||
<!ENTITY real "ℜ"> <!-- blackletter capital R = real part symbol,
|
||||
U+211C ISOamso -->
|
||||
<!ENTITY trade "™"> <!-- trade mark sign, U+2122 ISOnum -->
|
||||
<!ENTITY alefsym "ℵ"> <!-- alef symbol = first transfinite cardinal,
|
||||
U+2135 NEW -->
|
||||
<!-- alef symbol is NOT the same as hebrew letter alef,
|
||||
U+05D0 although the same glyph could be used to depict both characters -->
|
||||
|
||||
<!-- Arrows -->
|
||||
<!ENTITY larr "←"> <!-- leftwards arrow, U+2190 ISOnum -->
|
||||
<!ENTITY uarr "↑"> <!-- upwards arrow, U+2191 ISOnum-->
|
||||
<!ENTITY rarr "→"> <!-- rightwards arrow, U+2192 ISOnum -->
|
||||
<!ENTITY darr "↓"> <!-- downwards arrow, U+2193 ISOnum -->
|
||||
<!ENTITY harr "↔"> <!-- left right arrow, U+2194 ISOamsa -->
|
||||
<!ENTITY crarr "↵"> <!-- downwards arrow with corner leftwards
|
||||
= carriage return, U+21B5 NEW -->
|
||||
<!ENTITY lArr "⇐"> <!-- leftwards double arrow, U+21D0 ISOtech -->
|
||||
<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
|
||||
but also does not have any other character for that function. So ? lArr can
|
||||
be used for 'is implied by' as ISOtech suggests -->
|
||||
<!ENTITY uArr "⇑"> <!-- upwards double arrow, U+21D1 ISOamsa -->
|
||||
<!ENTITY rArr "⇒"> <!-- rightwards double arrow,
|
||||
U+21D2 ISOtech -->
|
||||
<!-- Unicode does not say this is the 'implies' character but does not have
|
||||
another character with this function so ?
|
||||
rArr can be used for 'implies' as ISOtech suggests -->
|
||||
<!ENTITY dArr "⇓"> <!-- downwards double arrow, U+21D3 ISOamsa -->
|
||||
<!ENTITY hArr "⇔"> <!-- left right double arrow,
|
||||
U+21D4 ISOamsa -->
|
||||
|
||||
<!-- Mathematical Operators -->
|
||||
<!ENTITY forall "∀"> <!-- for all, U+2200 ISOtech -->
|
||||
<!ENTITY part "∂"> <!-- partial differential, U+2202 ISOtech -->
|
||||
<!ENTITY exist "∃"> <!-- there exists, U+2203 ISOtech -->
|
||||
<!ENTITY empty "∅"> <!-- empty set = null set = diameter,
|
||||
U+2205 ISOamso -->
|
||||
<!ENTITY nabla "∇"> <!-- nabla = backward difference,
|
||||
U+2207 ISOtech -->
|
||||
<!ENTITY isin "∈"> <!-- element of, U+2208 ISOtech -->
|
||||
<!ENTITY notin "∉"> <!-- not an element of, U+2209 ISOtech -->
|
||||
<!ENTITY ni "∋"> <!-- contains as member, U+220B ISOtech -->
|
||||
<!-- should there be a more memorable name than 'ni'? -->
|
||||
<!ENTITY prod "∏"> <!-- n-ary product = product sign,
|
||||
U+220F ISOamsb -->
|
||||
<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
|
||||
the same glyph might be used for both -->
|
||||
<!ENTITY sum "∑"> <!-- n-ary sumation, U+2211 ISOamsb -->
|
||||
<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
|
||||
though the same glyph might be used for both -->
|
||||
<!ENTITY minus "−"> <!-- minus sign, U+2212 ISOtech -->
|
||||
<!ENTITY lowast "∗"> <!-- asterisk operator, U+2217 ISOtech -->
|
||||
<!ENTITY radic "√"> <!-- square root = radical sign,
|
||||
U+221A ISOtech -->
|
||||
<!ENTITY prop "∝"> <!-- proportional to, U+221D ISOtech -->
|
||||
<!ENTITY infin "∞"> <!-- infinity, U+221E ISOtech -->
|
||||
<!ENTITY ang "∠"> <!-- angle, U+2220 ISOamso -->
|
||||
<!ENTITY and "∧"> <!-- logical and = wedge, U+2227 ISOtech -->
|
||||
<!ENTITY or "∨"> <!-- logical or = vee, U+2228 ISOtech -->
|
||||
<!ENTITY cap "∩"> <!-- intersection = cap, U+2229 ISOtech -->
|
||||
<!ENTITY cup "∪"> <!-- union = cup, U+222A ISOtech -->
|
||||
<!ENTITY int "∫"> <!-- integral, U+222B ISOtech -->
|
||||
<!ENTITY there4 "∴"> <!-- therefore, U+2234 ISOtech -->
|
||||
<!ENTITY sim "∼"> <!-- tilde operator = varies with = similar to,
|
||||
U+223C ISOtech -->
|
||||
<!-- tilde operator is NOT the same character as the tilde, U+007E,
|
||||
although the same glyph might be used to represent both -->
|
||||
<!ENTITY cong "≅"> <!-- approximately equal to, U+2245 ISOtech -->
|
||||
<!ENTITY asymp "≈"> <!-- almost equal to = asymptotic to,
|
||||
U+2248 ISOamsr -->
|
||||
<!ENTITY ne "≠"> <!-- not equal to, U+2260 ISOtech -->
|
||||
<!ENTITY equiv "≡"> <!-- identical to, U+2261 ISOtech -->
|
||||
<!ENTITY le "≤"> <!-- less-than or equal to, U+2264 ISOtech -->
|
||||
<!ENTITY ge "≥"> <!-- greater-than or equal to,
|
||||
U+2265 ISOtech -->
|
||||
<!ENTITY sub "⊂"> <!-- subset of, U+2282 ISOtech -->
|
||||
<!ENTITY sup "⊃"> <!-- superset of, U+2283 ISOtech -->
|
||||
<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
|
||||
font encoding and is not included. Should it be, for symmetry?
|
||||
It is in ISOamsn -->
|
||||
<!ENTITY nsub "⊄"> <!-- not a subset of, U+2284 ISOamsn -->
|
||||
<!ENTITY sube "⊆"> <!-- subset of or equal to, U+2286 ISOtech -->
|
||||
<!ENTITY supe "⊇"> <!-- superset of or equal to,
|
||||
U+2287 ISOtech -->
|
||||
<!ENTITY oplus "⊕"> <!-- circled plus = direct sum,
|
||||
U+2295 ISOamsb -->
|
||||
<!ENTITY otimes "⊗"> <!-- circled times = vector product,
|
||||
U+2297 ISOamsb -->
|
||||
<!ENTITY perp "⊥"> <!-- up tack = orthogonal to = perpendicular,
|
||||
U+22A5 ISOtech -->
|
||||
<!ENTITY sdot "⋅"> <!-- dot operator, U+22C5 ISOamsb -->
|
||||
<!-- dot operator is NOT the same character as U+00B7 middle dot -->
|
||||
|
||||
<!-- Miscellaneous Technical -->
|
||||
<!ENTITY lceil "⌈"> <!-- left ceiling = apl upstile,
|
||||
U+2308 ISOamsc -->
|
||||
<!ENTITY rceil "⌉"> <!-- right ceiling, U+2309 ISOamsc -->
|
||||
<!ENTITY lfloor "⌊"> <!-- left floor = apl downstile,
|
||||
U+230A ISOamsc -->
|
||||
<!ENTITY rfloor "⌋"> <!-- right floor, U+230B ISOamsc -->
|
||||
<!ENTITY lang "〈"> <!-- left-pointing angle bracket = bra,
|
||||
U+2329 ISOtech -->
|
||||
<!-- lang is NOT the same character as U+003C 'less than'
|
||||
or U+2039 'single left-pointing angle quotation mark' -->
|
||||
<!ENTITY rang "〉"> <!-- right-pointing angle bracket = ket,
|
||||
U+232A ISOtech -->
|
||||
<!-- rang is NOT the same character as U+003E 'greater than'
|
||||
or U+203A 'single right-pointing angle quotation mark' -->
|
||||
|
||||
<!-- Geometric Shapes -->
|
||||
<!ENTITY loz "◊"> <!-- lozenge, U+25CA ISOpub -->
|
||||
|
||||
<!-- Miscellaneous Symbols -->
|
||||
<!ENTITY spades "♠"> <!-- black spade suit, U+2660 ISOpub -->
|
||||
<!-- black here seems to mean filled as opposed to hollow -->
|
||||
<!ENTITY clubs "♣"> <!-- black club suit = shamrock,
|
||||
U+2663 ISOpub -->
|
||||
<!ENTITY hearts "♥"> <!-- black heart suit = valentine,
|
||||
U+2665 ISOpub -->
|
||||
<!ENTITY diams "♦"> <!-- black diamond suit, U+2666 ISOpub -->
|
14
test/valid/dtds/xhtml.cat
Normal file
14
test/valid/dtds/xhtml.cat
Normal file
@ -0,0 +1,14 @@
|
||||
OVERRIDE YES
|
||||
-- Oasis entity catalog for Extensible HTML 1.0 --
|
||||
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "xhtml1-strict.dtd"
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd"
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "xhtml1-frameset.dtd"
|
||||
|
||||
-- ISO latin 1 entity set for Extensible HTML (XML 1.0 format) --
|
||||
|
||||
PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "xhtml-lat1.ent"
|
||||
PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "xhtml-symbol.ent"
|
||||
PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "xhtml-special.ent"
|
||||
|
||||
SGMLDECL "xhtml1.dcl"
|
1225
test/valid/dtds/xhtml1-frameset.dtd
Normal file
1225
test/valid/dtds/xhtml1-frameset.dtd
Normal file
File diff suppressed because it is too large
Load Diff
988
test/valid/dtds/xhtml1-strict.dtd
Normal file
988
test/valid/dtds/xhtml1-strict.dtd
Normal file
@ -0,0 +1,988 @@
|
||||
<!--
|
||||
Extensible HTML version 1.0 Strict DTD
|
||||
|
||||
This is the same as HTML 4.0 Strict except for
|
||||
changes due to the differences between XML and SGML.
|
||||
|
||||
Namespace = http://www.w3.org/1999/xhtml
|
||||
|
||||
For further information, see: http://www.w3.org/TR/xhtml1
|
||||
|
||||
Copyright (c) 1998-1999 W3C (MIT, INRIA, Keio),
|
||||
All Rights Reserved.
|
||||
|
||||
This DTD module is identified by the PUBLIC and SYSTEM identifiers:
|
||||
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
|
||||
|
||||
$Revision: 1.12 $
|
||||
$Date: 1999/11/17 23:36:32 $
|
||||
|
||||
-->
|
||||
|
||||
<!--================ Character mnemonic entities =========================-->
|
||||
|
||||
<!ENTITY % HTMLlat1 PUBLIC
|
||||
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
|
||||
"xhtml-lat1.ent">
|
||||
%HTMLlat1;
|
||||
|
||||
<!ENTITY % HTMLsymbol PUBLIC
|
||||
"-//W3C//ENTITIES Symbols for XHTML//EN"
|
||||
"xhtml-symbol.ent">
|
||||
%HTMLsymbol;
|
||||
|
||||
<!ENTITY % HTMLspecial PUBLIC
|
||||
"-//W3C//ENTITIES Special for XHTML//EN"
|
||||
"xhtml-special.ent">
|
||||
%HTMLspecial;
|
||||
|
||||
<!--================== Imported Names ====================================-->
|
||||
|
||||
<!ENTITY % ContentType "CDATA">
|
||||
<!-- media type, as per [RFC2045] -->
|
||||
|
||||
<!ENTITY % ContentTypes "CDATA">
|
||||
<!-- comma-separated list of media types, as per [RFC2045] -->
|
||||
|
||||
<!ENTITY % Charset "CDATA">
|
||||
<!-- a character encoding, as per [RFC2045] -->
|
||||
|
||||
<!ENTITY % Charsets "CDATA">
|
||||
<!-- a space separated list of character encodings, as per [RFC2045] -->
|
||||
|
||||
<!ENTITY % LanguageCode "NMTOKEN">
|
||||
<!-- a language code, as per [RFC1766] -->
|
||||
|
||||
<!ENTITY % Character "CDATA">
|
||||
<!-- a single character from [ISO10646] -->
|
||||
|
||||
<!ENTITY % Number "CDATA">
|
||||
<!-- one or more digits -->
|
||||
|
||||
<!ENTITY % LinkTypes "CDATA">
|
||||
<!-- space-separated list of link types -->
|
||||
|
||||
<!ENTITY % MediaDesc "CDATA">
|
||||
<!-- single or comma-separated list of media descriptors -->
|
||||
|
||||
<!ENTITY % URI "CDATA">
|
||||
<!-- a Uniform Resource Identifier, see [RFC2396] -->
|
||||
|
||||
<!ENTITY % UriList "CDATA">
|
||||
<!-- a space separated list of Uniform Resource Identifiers -->
|
||||
|
||||
<!ENTITY % Datetime "CDATA">
|
||||
<!-- date and time information. ISO date format -->
|
||||
|
||||
<!ENTITY % Script "CDATA">
|
||||
<!-- script expression -->
|
||||
|
||||
<!ENTITY % StyleSheet "CDATA">
|
||||
<!-- style sheet data -->
|
||||
|
||||
<!ENTITY % Text "CDATA">
|
||||
<!-- used for titles etc. -->
|
||||
|
||||
<!ENTITY % FrameTarget "NMTOKEN">
|
||||
<!-- render in this frame -->
|
||||
|
||||
<!ENTITY % Length "CDATA">
|
||||
<!-- nn for pixels or nn% for percentage length -->
|
||||
|
||||
<!ENTITY % MultiLength "CDATA">
|
||||
<!-- pixel, percentage, or relative -->
|
||||
|
||||
<!ENTITY % MultiLengths "CDATA">
|
||||
<!-- comma-separated list of MultiLength -->
|
||||
|
||||
<!ENTITY % Pixels "CDATA">
|
||||
<!-- integer representing length in pixels -->
|
||||
|
||||
<!-- these are used for image maps -->
|
||||
|
||||
<!ENTITY % Shape "(rect|circle|poly|default)">
|
||||
|
||||
<!ENTITY % Coords "CDATA">
|
||||
<!-- comma separated list of lengths -->
|
||||
|
||||
<!--=================== Generic Attributes ===============================-->
|
||||
|
||||
<!-- core attributes common to most elements
|
||||
id document-wide unique id
|
||||
class space separated list of classes
|
||||
style associated style info
|
||||
title advisory title/amplification
|
||||
-->
|
||||
<!ENTITY % coreattrs
|
||||
"id ID #IMPLIED
|
||||
class CDATA #IMPLIED
|
||||
style %StyleSheet; #IMPLIED
|
||||
title %Text; #IMPLIED"
|
||||
>
|
||||
|
||||
<!-- internationalization attributes
|
||||
lang language code (backwards compatible)
|
||||
xml:lang language code (as per XML 1.0 spec)
|
||||
dir direction for weak/neutral text
|
||||
-->
|
||||
<!ENTITY % i18n
|
||||
"lang %LanguageCode; #IMPLIED
|
||||
xml:lang %LanguageCode; #IMPLIED
|
||||
dir (ltr|rtl) #IMPLIED"
|
||||
>
|
||||
|
||||
<!-- attributes for common UI events
|
||||
onclick a pointer button was clicked
|
||||
ondblclick a pointer button was double clicked
|
||||
onmousedown a pointer button was pressed down
|
||||
onmouseup a pointer button was released
|
||||
onmousemove a pointer was moved onto the element
|
||||
onmouseout a pointer was moved away from the element
|
||||
onkeypress a key was pressed and released
|
||||
onkeydown a key was pressed down
|
||||
onkeyup a key was released
|
||||
-->
|
||||
<!ENTITY % events
|
||||
"onclick %Script; #IMPLIED
|
||||
ondblclick %Script; #IMPLIED
|
||||
onmousedown %Script; #IMPLIED
|
||||
onmouseup %Script; #IMPLIED
|
||||
onmouseover %Script; #IMPLIED
|
||||
onmousemove %Script; #IMPLIED
|
||||
onmouseout %Script; #IMPLIED
|
||||
onkeypress %Script; #IMPLIED
|
||||
onkeydown %Script; #IMPLIED
|
||||
onkeyup %Script; #IMPLIED"
|
||||
>
|
||||
|
||||
<!-- attributes for elements that can get the focus
|
||||
accesskey accessibility key character
|
||||
tabindex position in tabbing order
|
||||
onfocus the element got the focus
|
||||
onblur the element lost the focus
|
||||
-->
|
||||
<!ENTITY % focus
|
||||
"accesskey %Character; #IMPLIED
|
||||
tabindex %Number; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED"
|
||||
>
|
||||
|
||||
<!ENTITY % attrs "%coreattrs; %i18n; %events;">
|
||||
|
||||
<!--=================== Text Elements ====================================-->
|
||||
|
||||
<!ENTITY % special
|
||||
"br | span | bdo | object | img | map">
|
||||
|
||||
<!ENTITY % fontstyle "tt | i | b | big | small">
|
||||
|
||||
<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
|
||||
samp | kbd | var | cite | abbr | acronym">
|
||||
|
||||
<!ENTITY % inline.forms "input | select | textarea | label | button">
|
||||
|
||||
<!-- these can occur at block or inline level -->
|
||||
<!ENTITY % misc "ins | del | script | noscript">
|
||||
|
||||
<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
|
||||
|
||||
<!-- %Inline; covers inline or "text-level" elements -->
|
||||
<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
|
||||
|
||||
<!--================== Block level elements ==============================-->
|
||||
|
||||
<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
|
||||
<!ENTITY % lists "ul | ol | dl">
|
||||
<!ENTITY % blocktext "pre | hr | blockquote | address">
|
||||
|
||||
<!ENTITY % block
|
||||
"p | %heading; | div | %lists; | %blocktext; | fieldset | table">
|
||||
|
||||
<!ENTITY % Block "(%block; | form | %misc;)*">
|
||||
|
||||
<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
|
||||
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
|
||||
|
||||
<!--================== Content models for exclusions =====================-->
|
||||
|
||||
<!-- a elements use %Inline; excluding a -->
|
||||
|
||||
<!ENTITY % a.content
|
||||
"(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
|
||||
|
||||
<!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
|
||||
|
||||
<!ENTITY % pre.content
|
||||
"(#PCDATA | a | br | span | bdo | map | tt | i | b |
|
||||
%phrase; | %inline.forms;)*">
|
||||
|
||||
<!-- form uses %Block; excluding form -->
|
||||
|
||||
<!ENTITY % form.content "(%block; | %misc;)*">
|
||||
|
||||
<!-- button uses %Flow; but excludes a, form and form controls -->
|
||||
|
||||
<!ENTITY % button.content
|
||||
"(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
|
||||
table | %special; | %fontstyle; | %phrase; | %misc;)*">
|
||||
|
||||
<!--================ Document Structure ==================================-->
|
||||
|
||||
<!-- the namespace URI designates the document profile -->
|
||||
|
||||
<!ELEMENT html (head, body)>
|
||||
<!ATTLIST html
|
||||
%i18n;
|
||||
xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
|
||||
>
|
||||
|
||||
<!--================ Document Head =======================================-->
|
||||
|
||||
<!ENTITY % head.misc "(script|style|meta|link|object)*">
|
||||
|
||||
<!-- content model is %head.misc; combined with a single
|
||||
title and an optional base element in any order -->
|
||||
|
||||
<!ELEMENT head (%head.misc;,
|
||||
((title, %head.misc;, (base, %head.misc;)?) |
|
||||
(base, %head.misc;, (title, %head.misc;))))>
|
||||
|
||||
<!ATTLIST head
|
||||
%i18n;
|
||||
profile %URI; #IMPLIED
|
||||
>
|
||||
|
||||
<!-- The title element is not considered part of the flow of text.
|
||||
It should be displayed, for example as the page header or
|
||||
window title. Exactly one title is required per document.
|
||||
-->
|
||||
<!ELEMENT title (#PCDATA)>
|
||||
<!ATTLIST title %i18n;>
|
||||
|
||||
<!-- document base URI -->
|
||||
|
||||
<!ELEMENT base EMPTY>
|
||||
<!ATTLIST base
|
||||
href %URI; #IMPLIED
|
||||
>
|
||||
|
||||
<!-- generic metainformation -->
|
||||
<!ELEMENT meta EMPTY>
|
||||
<!ATTLIST meta
|
||||
%i18n;
|
||||
http-equiv CDATA #IMPLIED
|
||||
name CDATA #IMPLIED
|
||||
content CDATA #REQUIRED
|
||||
scheme CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!--
|
||||
Relationship values can be used in principle:
|
||||
|
||||
a) for document specific toolbars/menus when used
|
||||
with the link element in document head e.g.
|
||||
start, contents, previous, next, index, end, help
|
||||
b) to link to a separate style sheet (rel="stylesheet")
|
||||
c) to make a link to a script (rel="script")
|
||||
d) by stylesheets to control how collections of
|
||||
html nodes are rendered into printed documents
|
||||
e) to make a link to a printable version of this document
|
||||
e.g. a PostScript or PDF version (rel="alternate" media="print")
|
||||
-->
|
||||
|
||||
<!ELEMENT link EMPTY>
|
||||
<!ATTLIST link
|
||||
%attrs;
|
||||
charset %Charset; #IMPLIED
|
||||
href %URI; #IMPLIED
|
||||
hreflang %LanguageCode; #IMPLIED
|
||||
type %ContentType; #IMPLIED
|
||||
rel %LinkTypes; #IMPLIED
|
||||
rev %LinkTypes; #IMPLIED
|
||||
media %MediaDesc; #IMPLIED
|
||||
>
|
||||
|
||||
<!-- style info, which may include CDATA sections -->
|
||||
<!ELEMENT style (#PCDATA)>
|
||||
<!ATTLIST style
|
||||
%i18n;
|
||||
type %ContentType; #REQUIRED
|
||||
media %MediaDesc; #IMPLIED
|
||||
title %Text; #IMPLIED
|
||||
xml:space (preserve) #FIXED 'preserve'
|
||||
>
|
||||
|
||||
<!-- script statements, which may include CDATA sections -->
|
||||
<!ELEMENT script (#PCDATA)>
|
||||
<!ATTLIST script
|
||||
charset %Charset; #IMPLIED
|
||||
type %ContentType; #REQUIRED
|
||||
src %URI; #IMPLIED
|
||||
defer (defer) #IMPLIED
|
||||
xml:space (preserve) #FIXED 'preserve'
|
||||
>
|
||||
|
||||
<!-- alternate content container for non script-based rendering -->
|
||||
|
||||
<!ELEMENT noscript %Block;>
|
||||
<!ATTLIST noscript
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--=================== Document Body ====================================-->
|
||||
|
||||
<!ELEMENT body %Block;>
|
||||
<!ATTLIST body
|
||||
%attrs;
|
||||
onload %Script; #IMPLIED
|
||||
onunload %Script; #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT div %Flow;> <!-- generic language/style container -->
|
||||
<!ATTLIST div
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--=================== Paragraphs =======================================-->
|
||||
|
||||
<!ELEMENT p %Inline;>
|
||||
<!ATTLIST p
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--=================== Headings =========================================-->
|
||||
|
||||
<!--
|
||||
There are six levels of headings from h1 (the most important)
|
||||
to h6 (the least important).
|
||||
-->
|
||||
|
||||
<!ELEMENT h1 %Inline;>
|
||||
<!ATTLIST h1
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT h2 %Inline;>
|
||||
<!ATTLIST h2
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT h3 %Inline;>
|
||||
<!ATTLIST h3
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT h4 %Inline;>
|
||||
<!ATTLIST h4
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT h5 %Inline;>
|
||||
<!ATTLIST h5
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT h6 %Inline;>
|
||||
<!ATTLIST h6
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--=================== Lists ============================================-->
|
||||
|
||||
<!-- Unordered list -->
|
||||
|
||||
<!ELEMENT ul (li)+>
|
||||
<!ATTLIST ul
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!-- Ordered (numbered) list -->
|
||||
|
||||
<!ELEMENT ol (li)+>
|
||||
<!ATTLIST ol
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!-- list item -->
|
||||
|
||||
<!ELEMENT li %Flow;>
|
||||
<!ATTLIST li
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!-- definition lists - dt for term, dd for its definition -->
|
||||
|
||||
<!ELEMENT dl (dt|dd)+>
|
||||
<!ATTLIST dl
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT dt %Inline;>
|
||||
<!ATTLIST dt
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT dd %Flow;>
|
||||
<!ATTLIST dd
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--=================== Address ==========================================-->
|
||||
|
||||
<!-- information on author -->
|
||||
|
||||
<!ELEMENT address %Inline;>
|
||||
<!ATTLIST address
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--=================== Horizontal Rule ==================================-->
|
||||
|
||||
<!ELEMENT hr EMPTY>
|
||||
<!ATTLIST hr
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--=================== Preformatted Text ================================-->
|
||||
|
||||
<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
|
||||
|
||||
<!ELEMENT pre %pre.content;>
|
||||
<!ATTLIST pre
|
||||
%attrs;
|
||||
xml:space (preserve) #FIXED 'preserve'
|
||||
>
|
||||
|
||||
<!--=================== Block-like Quotes ================================-->
|
||||
|
||||
<!ELEMENT blockquote %Block;>
|
||||
<!ATTLIST blockquote
|
||||
%attrs;
|
||||
cite %URI; #IMPLIED
|
||||
>
|
||||
|
||||
<!--=================== Inserted/Deleted Text ============================-->
|
||||
|
||||
<!--
|
||||
ins/del are allowed in block and inline content, but its
|
||||
inappropriate to include block content within an ins element
|
||||
occurring in inline content.
|
||||
-->
|
||||
<!ELEMENT ins %Flow;>
|
||||
<!ATTLIST ins
|
||||
%attrs;
|
||||
cite %URI; #IMPLIED
|
||||
datetime %Datetime; #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT del %Flow;>
|
||||
<!ATTLIST del
|
||||
%attrs;
|
||||
cite %URI; #IMPLIED
|
||||
datetime %Datetime; #IMPLIED
|
||||
>
|
||||
|
||||
<!--================== The Anchor Element ================================-->
|
||||
|
||||
<!-- content is %Inline; except that anchors shouldn't be nested -->
|
||||
|
||||
<!ELEMENT a %a.content;>
|
||||
<!ATTLIST a
|
||||
%attrs;
|
||||
charset %Charset; #IMPLIED
|
||||
type %ContentType; #IMPLIED
|
||||
name NMTOKEN #IMPLIED
|
||||
href %URI; #IMPLIED
|
||||
hreflang %LanguageCode; #IMPLIED
|
||||
rel %LinkTypes; #IMPLIED
|
||||
rev %LinkTypes; #IMPLIED
|
||||
accesskey %Character; #IMPLIED
|
||||
shape %Shape; "rect"
|
||||
coords %Coords; #IMPLIED
|
||||
tabindex %Number; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED
|
||||
>
|
||||
|
||||
<!--===================== Inline Elements ================================-->
|
||||
|
||||
<!ELEMENT span %Inline;> <!-- generic language/style container -->
|
||||
<!ATTLIST span
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
|
||||
<!ATTLIST bdo
|
||||
%coreattrs;
|
||||
%events;
|
||||
lang %LanguageCode; #IMPLIED
|
||||
xml:lang %LanguageCode; #IMPLIED
|
||||
dir (ltr|rtl) #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT br EMPTY> <!-- forced line break -->
|
||||
<!ATTLIST br
|
||||
%coreattrs;
|
||||
>
|
||||
|
||||
<!ELEMENT em %Inline;> <!-- emphasis -->
|
||||
<!ATTLIST em %attrs;>
|
||||
|
||||
<!ELEMENT strong %Inline;> <!-- strong emphasis -->
|
||||
<!ATTLIST strong %attrs;>
|
||||
|
||||
<!ELEMENT dfn %Inline;> <!-- definitional -->
|
||||
<!ATTLIST dfn %attrs;>
|
||||
|
||||
<!ELEMENT code %Inline;> <!-- program code -->
|
||||
<!ATTLIST code %attrs;>
|
||||
|
||||
<!ELEMENT samp %Inline;> <!-- sample -->
|
||||
<!ATTLIST samp %attrs;>
|
||||
|
||||
<!ELEMENT kbd %Inline;> <!-- something user would type -->
|
||||
<!ATTLIST kbd %attrs;>
|
||||
|
||||
<!ELEMENT var %Inline;> <!-- variable -->
|
||||
<!ATTLIST var %attrs;>
|
||||
|
||||
<!ELEMENT cite %Inline;> <!-- citation -->
|
||||
<!ATTLIST cite %attrs;>
|
||||
|
||||
<!ELEMENT abbr %Inline;> <!-- abbreviation -->
|
||||
<!ATTLIST abbr %attrs;>
|
||||
|
||||
<!ELEMENT acronym %Inline;> <!-- acronym -->
|
||||
<!ATTLIST acronym %attrs;>
|
||||
|
||||
<!ELEMENT q %Inline;> <!-- inlined quote -->
|
||||
<!ATTLIST q
|
||||
%attrs;
|
||||
cite %URI; #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT sub %Inline;> <!-- subscript -->
|
||||
<!ATTLIST sub %attrs;>
|
||||
|
||||
<!ELEMENT sup %Inline;> <!-- superscript -->
|
||||
<!ATTLIST sup %attrs;>
|
||||
|
||||
<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
|
||||
<!ATTLIST tt %attrs;>
|
||||
|
||||
<!ELEMENT i %Inline;> <!-- italic font -->
|
||||
<!ATTLIST i %attrs;>
|
||||
|
||||
<!ELEMENT b %Inline;> <!-- bold font -->
|
||||
<!ATTLIST b %attrs;>
|
||||
|
||||
<!ELEMENT big %Inline;> <!-- bigger font -->
|
||||
<!ATTLIST big %attrs;>
|
||||
|
||||
<!ELEMENT small %Inline;> <!-- smaller font -->
|
||||
<!ATTLIST small %attrs;>
|
||||
|
||||
<!--==================== Object ======================================-->
|
||||
<!--
|
||||
object is used to embed objects as part of HTML pages.
|
||||
param elements should precede other content. Parameters
|
||||
can also be expressed as attribute/value pairs on the
|
||||
object element itself when brevity is desired.
|
||||
-->
|
||||
|
||||
<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
|
||||
<!ATTLIST object
|
||||
%attrs;
|
||||
declare (declare) #IMPLIED
|
||||
classid %URI; #IMPLIED
|
||||
codebase %URI; #IMPLIED
|
||||
data %URI; #IMPLIED
|
||||
type %ContentType; #IMPLIED
|
||||
codetype %ContentType; #IMPLIED
|
||||
archive %UriList; #IMPLIED
|
||||
standby %Text; #IMPLIED
|
||||
height %Length; #IMPLIED
|
||||
width %Length; #IMPLIED
|
||||
usemap %URI; #IMPLIED
|
||||
name NMTOKEN #IMPLIED
|
||||
tabindex %Number; #IMPLIED
|
||||
>
|
||||
|
||||
<!--
|
||||
param is used to supply a named property value.
|
||||
In XML it would seem natural to follow RDF and support an
|
||||
abbreviated syntax where the param elements are replaced
|
||||
by attribute value pairs on the object start tag.
|
||||
-->
|
||||
<!ELEMENT param EMPTY>
|
||||
<!ATTLIST param
|
||||
id ID #IMPLIED
|
||||
name CDATA #IMPLIED
|
||||
value CDATA #IMPLIED
|
||||
valuetype (data|ref|object) "data"
|
||||
type %ContentType; #IMPLIED
|
||||
>
|
||||
|
||||
<!--=================== Images ===========================================-->
|
||||
|
||||
<!--
|
||||
To avoid accessibility problems for people who aren't
|
||||
able to see the image, you should provide a text
|
||||
description using the alt and longdesc attributes.
|
||||
In addition, avoid the use of server-side image maps.
|
||||
Note that in this DTD there is no name attribute. That
|
||||
is only available in the transitional and frameset DTD.
|
||||
-->
|
||||
|
||||
<!ELEMENT img EMPTY>
|
||||
<!ATTLIST img
|
||||
%attrs;
|
||||
src %URI; #REQUIRED
|
||||
alt %Text; #REQUIRED
|
||||
longdesc %URI; #IMPLIED
|
||||
height %Length; #IMPLIED
|
||||
width %Length; #IMPLIED
|
||||
usemap %URI; #IMPLIED
|
||||
ismap (ismap) #IMPLIED
|
||||
>
|
||||
|
||||
<!-- usemap points to a map element which may be in this document
|
||||
or an external document, although the latter is not widely supported -->
|
||||
|
||||
<!--================== Client-side image maps ============================-->
|
||||
|
||||
<!-- These can be placed in the same document or grouped in a
|
||||
separate document although this isn't yet widely supported -->
|
||||
|
||||
<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
|
||||
<!ATTLIST map
|
||||
%i18n;
|
||||
%events;
|
||||
id ID #REQUIRED
|
||||
class CDATA #IMPLIED
|
||||
style %StyleSheet; #IMPLIED
|
||||
title %Text; #IMPLIED
|
||||
name NMTOKEN #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT area EMPTY>
|
||||
<!ATTLIST area
|
||||
%attrs;
|
||||
shape %Shape; "rect"
|
||||
coords %Coords; #IMPLIED
|
||||
href %URI; #IMPLIED
|
||||
nohref (nohref) #IMPLIED
|
||||
alt %Text; #REQUIRED
|
||||
tabindex %Number; #IMPLIED
|
||||
accesskey %Character; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED
|
||||
>
|
||||
|
||||
<!--================ Forms ===============================================-->
|
||||
<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
|
||||
|
||||
<!ATTLIST form
|
||||
%attrs;
|
||||
action %URI; #REQUIRED
|
||||
method (get|post) "get"
|
||||
enctype %ContentType; "application/x-www-form-urlencoded"
|
||||
onsubmit %Script; #IMPLIED
|
||||
onreset %Script; #IMPLIED
|
||||
accept %ContentTypes; #IMPLIED
|
||||
accept-charset %Charsets; #IMPLIED
|
||||
>
|
||||
|
||||
<!--
|
||||
Each label must not contain more than ONE field
|
||||
Label elements shouldn't be nested.
|
||||
-->
|
||||
<!ELEMENT label %Inline;>
|
||||
<!ATTLIST label
|
||||
%attrs;
|
||||
for IDREF #IMPLIED
|
||||
accesskey %Character; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED
|
||||
>
|
||||
|
||||
<!ENTITY % InputType
|
||||
"(text | password | checkbox |
|
||||
radio | submit | reset |
|
||||
file | hidden | image | button)"
|
||||
>
|
||||
|
||||
<!-- the name attribute is required for all but submit & reset -->
|
||||
|
||||
<!ELEMENT input EMPTY> <!-- form control -->
|
||||
<!ATTLIST input
|
||||
%attrs;
|
||||
type %InputType; "text"
|
||||
name CDATA #IMPLIED
|
||||
value CDATA #IMPLIED
|
||||
checked (checked) #IMPLIED
|
||||
disabled (disabled) #IMPLIED
|
||||
readonly (readonly) #IMPLIED
|
||||
size CDATA #IMPLIED
|
||||
maxlength %Number; #IMPLIED
|
||||
src %URI; #IMPLIED
|
||||
alt CDATA #IMPLIED
|
||||
usemap %URI; #IMPLIED
|
||||
tabindex %Number; #IMPLIED
|
||||
accesskey %Character; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED
|
||||
onselect %Script; #IMPLIED
|
||||
onchange %Script; #IMPLIED
|
||||
accept %ContentTypes; #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT select (optgroup|option)+> <!-- option selector -->
|
||||
<!ATTLIST select
|
||||
%attrs;
|
||||
name CDATA #IMPLIED
|
||||
size %Number; #IMPLIED
|
||||
multiple (multiple) #IMPLIED
|
||||
disabled (disabled) #IMPLIED
|
||||
tabindex %Number; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED
|
||||
onchange %Script; #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT optgroup (option)+> <!-- option group -->
|
||||
<!ATTLIST optgroup
|
||||
%attrs;
|
||||
disabled (disabled) #IMPLIED
|
||||
label %Text; #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
|
||||
<!ATTLIST option
|
||||
%attrs;
|
||||
selected (selected) #IMPLIED
|
||||
disabled (disabled) #IMPLIED
|
||||
label %Text; #IMPLIED
|
||||
value CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
|
||||
<!ATTLIST textarea
|
||||
%attrs;
|
||||
name CDATA #IMPLIED
|
||||
rows %Number; #REQUIRED
|
||||
cols %Number; #REQUIRED
|
||||
disabled (disabled) #IMPLIED
|
||||
readonly (readonly) #IMPLIED
|
||||
tabindex %Number; #IMPLIED
|
||||
accesskey %Character; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED
|
||||
onselect %Script; #IMPLIED
|
||||
onchange %Script; #IMPLIED
|
||||
>
|
||||
|
||||
<!--
|
||||
The fieldset element is used to group form fields.
|
||||
Only one legend element should occur in the content
|
||||
and if present should only be preceded by whitespace.
|
||||
-->
|
||||
<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
|
||||
<!ATTLIST fieldset
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!ELEMENT legend %Inline;> <!-- fieldset label -->
|
||||
<!ATTLIST legend
|
||||
%attrs;
|
||||
accesskey %Character; #IMPLIED
|
||||
>
|
||||
|
||||
<!--
|
||||
Content is %Flow; excluding a, form and form controls
|
||||
-->
|
||||
<!ELEMENT button %button.content;> <!-- push button -->
|
||||
<!ATTLIST button
|
||||
%attrs;
|
||||
name CDATA #IMPLIED
|
||||
value CDATA #IMPLIED
|
||||
type (button|submit|reset) "submit"
|
||||
disabled (disabled) #IMPLIED
|
||||
tabindex %Number; #IMPLIED
|
||||
accesskey %Character; #IMPLIED
|
||||
onfocus %Script; #IMPLIED
|
||||
onblur %Script; #IMPLIED
|
||||
>
|
||||
|
||||
<!--======================= Tables =======================================-->
|
||||
|
||||
<!-- Derived from IETF HTML table standard, see [RFC1942] -->
|
||||
|
||||
<!--
|
||||
The border attribute sets the thickness of the frame around the
|
||||
table. The default units are screen pixels.
|
||||
|
||||
The frame attribute specifies which parts of the frame around
|
||||
the table should be rendered. The values are not the same as
|
||||
CALS to avoid a name clash with the valign attribute.
|
||||
-->
|
||||
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
|
||||
|
||||
<!--
|
||||
The rules attribute defines which rules to draw between cells:
|
||||
|
||||
If rules is absent then assume:
|
||||
"none" if border is absent or border="0" otherwise "all"
|
||||
-->
|
||||
|
||||
<!ENTITY % TRules "(none | groups | rows | cols | all)">
|
||||
|
||||
<!-- horizontal placement of table relative to document -->
|
||||
<!ENTITY % TAlign "(left|center|right)">
|
||||
|
||||
<!-- horizontal alignment attributes for cell contents
|
||||
|
||||
char alignment char, e.g. char=':'
|
||||
charoff offset for alignment char
|
||||
-->
|
||||
<!ENTITY % cellhalign
|
||||
"align (left|center|right|justify|char) #IMPLIED
|
||||
char %Character; #IMPLIED
|
||||
charoff %Length; #IMPLIED"
|
||||
>
|
||||
|
||||
<!-- vertical alignment attributes for cell contents -->
|
||||
<!ENTITY % cellvalign
|
||||
"valign (top|middle|bottom|baseline) #IMPLIED"
|
||||
>
|
||||
|
||||
<!ELEMENT table
|
||||
(caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
|
||||
<!ELEMENT caption %Inline;>
|
||||
<!ELEMENT thead (tr)+>
|
||||
<!ELEMENT tfoot (tr)+>
|
||||
<!ELEMENT tbody (tr)+>
|
||||
<!ELEMENT colgroup (col)*>
|
||||
<!ELEMENT col EMPTY>
|
||||
<!ELEMENT tr (th|td)+>
|
||||
<!ELEMENT th %Flow;>
|
||||
<!ELEMENT td %Flow;>
|
||||
|
||||
<!ATTLIST table
|
||||
%attrs;
|
||||
summary %Text; #IMPLIED
|
||||
width %Length; #IMPLIED
|
||||
border %Pixels; #IMPLIED
|
||||
frame %TFrame; #IMPLIED
|
||||
rules %TRules; #IMPLIED
|
||||
cellspacing %Length; #IMPLIED
|
||||
cellpadding %Length; #IMPLIED
|
||||
>
|
||||
|
||||
<!ENTITY % CAlign "(top|bottom|left|right)">
|
||||
|
||||
<!ATTLIST caption
|
||||
%attrs;
|
||||
>
|
||||
|
||||
<!--
|
||||
colgroup groups a set of col elements. It allows you to group
|
||||
several semantically related columns together.
|
||||
-->
|
||||
<!ATTLIST colgroup
|
||||
%attrs;
|
||||
span %Number; "1"
|
||||
width %MultiLength; #IMPLIED
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
||||
<!--
|
||||
col elements define the alignment properties for cells in
|
||||
one or more columns.
|
||||
|
||||
The width attribute specifies the width of the columns, e.g.
|
||||
|
||||
width=64 width in screen pixels
|
||||
width=0.5* relative width of 0.5
|
||||
|
||||
The span attribute causes the attributes of one
|
||||
col element to apply to more than one column.
|
||||
-->
|
||||
<!ATTLIST col
|
||||
%attrs;
|
||||
span %Number; "1"
|
||||
width %MultiLength; #IMPLIED
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
||||
<!--
|
||||
Use thead to duplicate headers when breaking table
|
||||
across page boundaries, or for static headers when
|
||||
tbody sections are rendered in scrolling panel.
|
||||
|
||||
Use tfoot to duplicate footers when breaking table
|
||||
across page boundaries, or for static footers when
|
||||
tbody sections are rendered in scrolling panel.
|
||||
|
||||
Use multiple tbody sections when rules are needed
|
||||
between groups of table rows.
|
||||
-->
|
||||
<!ATTLIST thead
|
||||
%attrs;
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
||||
<!ATTLIST tfoot
|
||||
%attrs;
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
||||
<!ATTLIST tbody
|
||||
%attrs;
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
||||
<!ATTLIST tr
|
||||
%attrs;
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
||||
|
||||
<!-- Scope is simpler than headers attribute for common tables -->
|
||||
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
|
||||
|
||||
<!-- th is for headers, td for data and for cells acting as both -->
|
||||
|
||||
<!ATTLIST th
|
||||
%attrs;
|
||||
abbr %Text; #IMPLIED
|
||||
axis CDATA #IMPLIED
|
||||
headers IDREFS #IMPLIED
|
||||
scope %Scope; #IMPLIED
|
||||
rowspan %Number; "1"
|
||||
colspan %Number; "1"
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
||||
<!ATTLIST td
|
||||
%attrs;
|
||||
abbr %Text; #IMPLIED
|
||||
axis CDATA #IMPLIED
|
||||
headers IDREFS #IMPLIED
|
||||
scope %Scope; #IMPLIED
|
||||
rowspan %Number; "1"
|
||||
colspan %Number; "1"
|
||||
%cellhalign;
|
||||
%cellvalign;
|
||||
>
|
||||
|
1196
test/valid/dtds/xhtml1-transitional.dtd
Normal file
1196
test/valid/dtds/xhtml1-transitional.dtd
Normal file
File diff suppressed because it is too large
Load Diff
179
test/valid/dtds/xhtml1.dcl
Normal file
179
test/valid/dtds/xhtml1.dcl
Normal file
@ -0,0 +1,179 @@
|
||||
<!SGML -- SGML Declaration for valid XML documents --
|
||||
"ISO 8879:1986 (WWW)"
|
||||
|
||||
CHARSET
|
||||
BASESET
|
||||
"ISO Registration Number 176//CHARSET
|
||||
ISO/IEC 10646-1:1993 UCS-4 with implementation
|
||||
level 3//ESC 2/5 2/15 4/6"
|
||||
DESCSET
|
||||
0 9 UNUSED
|
||||
9 2 9
|
||||
11 2 UNUSED
|
||||
13 1 13
|
||||
14 18 UNUSED
|
||||
32 95 32
|
||||
127 1 UNUSED
|
||||
128 32 UNUSED
|
||||
-- use this instead of the official declaration because SP only
|
||||
supports 16-bit characters --
|
||||
160 65374 160
|
||||
65534 2 UNUSED
|
||||
-- 55296 2048 UNUSED
|
||||
57344 8190 57344
|
||||
65534 2 UNUSED
|
||||
65536 1048576 65536 --
|
||||
CAPACITY NONE
|
||||
|
||||
SCOPE DOCUMENT
|
||||
|
||||
SYNTAX
|
||||
SHUNCHAR NONE
|
||||
BASESET "ISO Registration Number 176//CHARSET
|
||||
ISO/IEC 10646-1:1993 UCS-4 with implementation
|
||||
level 3//ESC 2/5 2/15 4/6"
|
||||
DESCSET
|
||||
0 1114112 0
|
||||
FUNCTION
|
||||
RE 13
|
||||
RS 10
|
||||
SPACE 32
|
||||
TAB SEPCHAR 9
|
||||
|
||||
NAMING
|
||||
LCNMSTRT ""
|
||||
UCNMSTRT ""
|
||||
NAMESTRT
|
||||
58 95 192-214 216-246 248-305 308-318 321-328
|
||||
330-382 384-451 461-496 500-501 506-535 592-680
|
||||
699-705 902 904-906 908 910-929 931-974 976-982
|
||||
986 988 990 992 994-1011 1025-1036 1038-1103
|
||||
1105-1116 1118-1153 1168-1220 1223-1224
|
||||
1227-1228 1232-1259 1262-1269 1272-1273
|
||||
1329-1366 1369 1377-1414 1488-1514 1520-1522
|
||||
1569-1594 1601-1610 1649-1719 1722-1726
|
||||
1728-1742 1744-1747 1749 1765-1766 2309-2361
|
||||
2365 2392-2401 2437-2444 2447-2448 2451-2472
|
||||
2474-2480 2482 2486-2489 2524-2525 2527-2529
|
||||
2544-2545 2565-2570 2575-2576 2579-2600
|
||||
2602-2608 2610-2611 2613-2614 2616-2617
|
||||
2649-2652 2654 2674-2676 2693-2699 2701
|
||||
2703-2705 2707-2728 2730-2736 2738-2739
|
||||
2741-2745 2749 2784 2821-2828 2831-2832
|
||||
2835-2856 2858-2864 2866-2867 2870-2873 2877
|
||||
2908-2909 2911-2913 2949-2954 2958-2960
|
||||
2962-2965 2969-2970 2972 2974-2975 2979-2980
|
||||
2984-2986 2990-2997 2999-3001 3077-3084
|
||||
3086-3088 3090-3112 3114-3123 3125-3129
|
||||
3168-3169 3205-3212 3214-3216 3218-3240
|
||||
3242-3251 3253-3257 3294 3296-3297 3333-3340
|
||||
3342-3344 3346-3368 3370-3385 3424-3425
|
||||
3585-3630 3632 3634-3635 3648-3653 3713-3714
|
||||
3716 3719-3720 3722 3725 3732-3735 3737-3743
|
||||
3745-3747 3749 3751 3754-3755 3757-3758 3760
|
||||
3762-3763 3773 3776-3780 3904-3911 3913-3945
|
||||
4256-4293 4304-4342 4352 4354-4355 4357-4359
|
||||
4361 4363-4364 4366-4370 4412 4414 4416 4428
|
||||
4430 4432 4436-4437 4441 4447-4449 4451 4453
|
||||
4455 4457 4461-4462 4466-4467 4469 4510 4520
|
||||
4523 4526-4527 4535-4536 4538 4540-4546 4587
|
||||
4592 4601 7680-7835 7840-7929 7936-7957
|
||||
7960-7965 7968-8005 8008-8013 8016-8023 8025
|
||||
8027 8029 8031-8061 8064-8116 8118-8124 8126
|
||||
8130-8132 8134-8140 8144-8147 8150-8155
|
||||
8160-8172 8178-8180 8182-8188 8486 8490-8491
|
||||
8494 8576-8578 12295 12321-12329 12353-12436
|
||||
12449-12538 12549-12588 19968-40869 44032-55203
|
||||
|
||||
LCNMCHAR ""
|
||||
UCNMCHAR ""
|
||||
NAMECHAR
|
||||
45-46 183 720-721 768-837 864-865 903 1155-1158
|
||||
1425-1441 1443-1465 1467-1469 1471 1473-1474
|
||||
1476 1600 1611-1618 1632-1641 1648 1750-1764
|
||||
1767-1768 1770-1773 1776-1785 2305-2307 2364
|
||||
2366-2381 2385-2388 2402-2403 2406-2415
|
||||
2433-2435 2492 2494-2500 2503-2504 2507-2509
|
||||
2519 2530-2531 2534-2543 2562 2620 2622-2626
|
||||
2631-2632 2635-2637 2662-2673 2689-2691 2748
|
||||
2750-2757 2759-2761 2763-2765 2790-2799
|
||||
2817-2819 2876 2878-2883 2887-2888 2891-2893
|
||||
2902-2903 2918-2927 2946-2947 3006-3010
|
||||
3014-3016 3018-3021 3031 3047-3055 3073-3075
|
||||
3134-3140 3142-3144 3146-3149 3157-3158
|
||||
3174-3183 3202-3203 3262-3268 3270-3272
|
||||
3274-3277 3285-3286 3302-3311 3330-3331
|
||||
3390-3395 3398-3400 3402-3405 3415 3430-3439
|
||||
3633 3636-3642 3654-3662 3664-3673 3761
|
||||
3764-3769 3771-3772 3782 3784-3789 3792-3801
|
||||
3864-3865 3872-3881 3893 3895 3897 3902-3903
|
||||
3953-3972 3974-3979 3984-3989 3991 3993-4013
|
||||
4017-4023 4025 8400-8412 8417 12293 12330-12335
|
||||
12337-12341 12441-12442 12445-12446 12540-12542
|
||||
|
||||
NAMECASE
|
||||
GENERAL NO
|
||||
ENTITY NO
|
||||
|
||||
DELIM
|
||||
GENERAL SGMLREF
|
||||
HCRO "&#x" -- 38 is the number for ampersand --
|
||||
NESTC "/"
|
||||
NET ">"
|
||||
PIC "?>"
|
||||
SHORTREF NONE
|
||||
|
||||
NAMES
|
||||
SGMLREF
|
||||
|
||||
QUANTITY NONE
|
||||
|
||||
ENTITIES
|
||||
"amp" 38
|
||||
"lt" 60
|
||||
"gt" 62
|
||||
"quot" 34
|
||||
"apos" 39
|
||||
|
||||
FEATURES
|
||||
MINIMIZE
|
||||
DATATAG NO
|
||||
OMITTAG NO
|
||||
RANK NO
|
||||
SHORTTAG
|
||||
STARTTAG
|
||||
EMPTY NO
|
||||
UNCLOSED NO
|
||||
NETENABL IMMEDNET
|
||||
ENDTAG
|
||||
EMPTY NO
|
||||
UNCLOSED NO
|
||||
ATTRIB
|
||||
DEFAULT YES
|
||||
OMITNAME NO
|
||||
VALUE NO
|
||||
EMPTYNRM YES
|
||||
IMPLYDEF
|
||||
ATTLIST NO
|
||||
DOCTYPE NO
|
||||
ELEMENT NO
|
||||
ENTITY NO
|
||||
NOTATION NO
|
||||
LINK
|
||||
SIMPLE NO
|
||||
IMPLICIT NO
|
||||
EXPLICIT NO
|
||||
OTHER
|
||||
CONCUR NO
|
||||
SUBDOC NO
|
||||
FORMAL NO
|
||||
URN NO
|
||||
KEEPRSRE YES
|
||||
VALIDITY TYPE
|
||||
ENTITIES
|
||||
REF ANY
|
||||
INTEGRAL YES
|
||||
APPINFO NONE
|
||||
SEEALSO "ISO 8879:1986//NOTATION
|
||||
Extensible Markup Language (XML) 1.0//EN"
|
||||
>
|
1505
test/valid/xhtml1.xhtml
Normal file
1505
test/valid/xhtml1.xhtml
Normal file
File diff suppressed because it is too large
Load Diff
103
tree.c
103
tree.c
@ -116,8 +116,10 @@ xmlUpgradeOldNs(xmlDocPtr doc) {
|
||||
* @href: the URI associated
|
||||
* @prefix: the prefix for the namespace
|
||||
*
|
||||
* Creation of a new Namespace.
|
||||
* Returns returns a new namespace pointer
|
||||
* Creation of a new Namespace. This function will refuse to create
|
||||
* a namespace with a similar prefix than an existing one present on this
|
||||
* node.
|
||||
* Returns returns a new namespace pointer or NULL
|
||||
*/
|
||||
xmlNsPtr
|
||||
xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
||||
@ -149,6 +151,7 @@ xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
||||
|
||||
/*
|
||||
* Add it at the end to preserve parsing order ...
|
||||
* and checks for existing use of the prefix
|
||||
*/
|
||||
cur->next = NULL;
|
||||
if (node != NULL) {
|
||||
@ -157,11 +160,17 @@ xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
||||
} else {
|
||||
xmlNsPtr prev = node->nsDef;
|
||||
|
||||
while (prev->next != NULL) prev = prev->next;
|
||||
while (prev->next != NULL) {
|
||||
if (((prev->prefix == NULL) && (cur->prefix == NULL)) ||
|
||||
(!xmlStrcmp(prev->prefix, cur->prefix))) {
|
||||
xmlFreeNs(cur);
|
||||
return(NULL);
|
||||
}
|
||||
prev = prev->next;
|
||||
}
|
||||
prev->next = cur;
|
||||
}
|
||||
}
|
||||
|
||||
return(cur);
|
||||
}
|
||||
|
||||
@ -171,48 +180,14 @@ xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
||||
* @href: the URI associated
|
||||
* @prefix: the prefix for the namespace
|
||||
*
|
||||
* Creation of a Namespace, the old way using PI and without scoping, to AVOID.
|
||||
* Returns returns a new namespace pointer
|
||||
* Creation of a Namespace, the old way using PI and without scoping
|
||||
* DEPRECATED !!!
|
||||
* Will be removed at next major release !
|
||||
* Returns NULL this functionnality had been removed
|
||||
*/
|
||||
xmlNsPtr
|
||||
xmlNewGlobalNs(xmlDocPtr doc, const xmlChar *href, const xmlChar *prefix) {
|
||||
xmlNsPtr cur;
|
||||
|
||||
/*
|
||||
* Allocate a new DTD and fill the fields.
|
||||
*/
|
||||
cur = (xmlNsPtr) xmlMalloc(sizeof(xmlNs));
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlNewGlobalNs : malloc failed\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
cur->type = XML_GLOBAL_NAMESPACE;
|
||||
if (href != NULL)
|
||||
cur->href = xmlStrdup(href);
|
||||
else
|
||||
cur->href = NULL;
|
||||
if (prefix != NULL)
|
||||
cur->prefix = xmlStrdup(prefix);
|
||||
else
|
||||
cur->prefix = NULL;
|
||||
|
||||
/*
|
||||
* Add it at the end to preserve parsing order ...
|
||||
*/
|
||||
cur->next = NULL;
|
||||
if (doc != NULL) {
|
||||
if (doc->oldNs == NULL) {
|
||||
doc->oldNs = cur;
|
||||
} else {
|
||||
xmlNsPtr prev = doc->oldNs;
|
||||
|
||||
while (prev->next != NULL) prev = prev->next;
|
||||
prev->next = cur;
|
||||
}
|
||||
}
|
||||
|
||||
return(cur);
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -956,9 +931,9 @@ xmlFreePropList(xmlAttrPtr cur) {
|
||||
|
||||
/**
|
||||
* xmlFreeProp:
|
||||
* @cur: the first property in the list
|
||||
* @cur: an attribute
|
||||
*
|
||||
* Free one property, all the childs are freed too.
|
||||
* Free one attribute, all the content is freed too
|
||||
*/
|
||||
void
|
||||
xmlFreeProp(xmlAttrPtr cur) {
|
||||
@ -972,6 +947,44 @@ xmlFreeProp(xmlAttrPtr cur) {
|
||||
xmlFree(cur);
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlRemoveProp:
|
||||
* @cur: an attribute
|
||||
*
|
||||
* Unlink and free one attribute, all the content is freed too
|
||||
* Note this doesn't work for namespace definition attributes
|
||||
*
|
||||
* Returns 0 if success and -1 in case of error.
|
||||
*/
|
||||
int
|
||||
xmlRemoveProp(xmlAttrPtr cur) {
|
||||
xmlAttrPtr tmp;
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr, "xmlRemoveProp : cur == NULL\n");
|
||||
return(-1);
|
||||
}
|
||||
if (cur->node == NULL) {
|
||||
fprintf(stderr, "xmlRemoveProp : cur->node == NULL\n");
|
||||
return(-1);
|
||||
}
|
||||
tmp = cur->node->properties;
|
||||
if (tmp == cur) {
|
||||
cur->node->properties = cur->next;
|
||||
xmlFreeProp(cur);
|
||||
return(0);
|
||||
}
|
||||
while (tmp != NULL) {
|
||||
if (tmp->next == cur) {
|
||||
tmp->next = cur->next;
|
||||
xmlFreeProp(cur);
|
||||
return(0);
|
||||
}
|
||||
tmp = tmp->next;
|
||||
}
|
||||
fprintf(stderr, "xmlRemoveProp : attribute not owned by its node\n");
|
||||
return(-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlNewPI:
|
||||
* @name: the processing instruction name
|
||||
|
1
tree.h
1
tree.h
@ -449,6 +449,7 @@ void xmlTextConcat (xmlNodePtr node,
|
||||
int len);
|
||||
void xmlFreeNodeList (xmlNodePtr cur);
|
||||
void xmlFreeNode (xmlNodePtr cur);
|
||||
int xmlRemoveProp (xmlAttrPtr cur);
|
||||
|
||||
/*
|
||||
* Namespaces
|
||||
|
@ -7,6 +7,8 @@
|
||||
#define LIBXML_VERSION "@LIBXML_VERSION@"
|
||||
|
||||
#include <io.h>
|
||||
|
||||
#ifdef INCLUDE_WINSOCK
|
||||
#include <winsock2.h>
|
||||
|
||||
#define EWOULDBLOCK WSAEWOULDBLOCK
|
||||
@ -46,6 +48,7 @@
|
||||
#define EDQUOT WSAEDQUOT
|
||||
#define ESTALE WSAESTALE
|
||||
#define EREMOTE WSAEREMOTE
|
||||
#endif /* INCLUDE_WINSOCK */
|
||||
|
||||
#include <math.h>
|
||||
static int isinf (double d) {
|
||||
|
28
xmlIO.c
28
xmlIO.c
@ -36,6 +36,7 @@
|
||||
|
||||
#include "xmlmemory.h"
|
||||
#include "parser.h"
|
||||
#include "parserInternals.h"
|
||||
#include "xmlIO.h"
|
||||
#include "nanohttp.h"
|
||||
|
||||
@ -464,22 +465,33 @@ xmlParserGetDirectory(const char *filename) {
|
||||
* xmlDefaultExternalEntityLoader:
|
||||
* @URL: the URL for the entity to load
|
||||
* @ID: the System ID for the entity to load
|
||||
* @context: the context in which the entity is called or NULL
|
||||
* @ctxt: the context in which the entity is called or NULL
|
||||
*
|
||||
* By default we don't load external entitites, yet.
|
||||
* TODO: get a sample http implementation and scan for existing one
|
||||
* at compile time.
|
||||
*
|
||||
* Returns a new allocated xmlParserInputPtr, or NULL.
|
||||
*/
|
||||
static
|
||||
xmlParserInputPtr
|
||||
xmlDefaultExternalEntityLoader(const char *URL, const char *ID,
|
||||
xmlParserInputPtr context) {
|
||||
xmlParserCtxtPtr ctxt) {
|
||||
xmlParserInputPtr ret = NULL;
|
||||
#ifdef DEBUG_EXTERNAL_ENTITIES
|
||||
fprintf(stderr, "xmlDefaultExternalEntityLoader(%s, xxx)\n", URL);
|
||||
#endif
|
||||
return(NULL);
|
||||
if (URL == NULL) {
|
||||
if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
|
||||
ctxt->sax->warning(ctxt, "failed to load external entity \"%s\"\n",
|
||||
ID);
|
||||
return(NULL);
|
||||
}
|
||||
ret = xmlNewInputFromFile(ctxt, URL);
|
||||
if (ret == NULL) {
|
||||
if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
|
||||
ctxt->sax->warning(ctxt, "failed to load external entity \"%s\"\n",
|
||||
URL);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
static xmlExternalEntityLoader xmlCurrentExternalEntityLoader =
|
||||
@ -512,7 +524,7 @@ xmlGetExternalEntityLoader(void) {
|
||||
* xmlLoadExternalEntity:
|
||||
* @URL: the URL for the entity to load
|
||||
* @ID: the System ID for the entity to load
|
||||
* @context: the context in which the entity is called or NULL
|
||||
* @ctxt: the context in which the entity is called or NULL
|
||||
*
|
||||
* Load an external entity, note that the use of this function for
|
||||
* unparsed entities may generate problems
|
||||
@ -522,7 +534,7 @@ xmlGetExternalEntityLoader(void) {
|
||||
*/
|
||||
xmlParserInputPtr
|
||||
xmlLoadExternalEntity(const char *URL, const char *ID,
|
||||
xmlParserInputPtr context) {
|
||||
return(xmlCurrentExternalEntityLoader(URL, ID, context));
|
||||
xmlParserCtxtPtr ctxt) {
|
||||
return(xmlCurrentExternalEntityLoader(URL, ID, ctxt));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user