mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-30 22:43:14 +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:
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>
|
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
|
* 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 "entities.h"
|
||||||
#include "xml-error.h"
|
#include "xml-error.h"
|
||||||
#include "debugXML.h"
|
#include "debugXML.h"
|
||||||
|
#include "xmlIO.h"
|
||||||
#include "SAX.h"
|
#include "SAX.h"
|
||||||
|
|
||||||
/* #define DEBUG_SAX */
|
/* #define DEBUG_SAX */
|
||||||
@ -145,7 +146,7 @@ hasExternalSubset(void *ctx)
|
|||||||
* internalSubset:
|
* internalSubset:
|
||||||
* @ctx: the user data (XML parser context)
|
* @ctx: the user data (XML parser context)
|
||||||
*
|
*
|
||||||
* Does this document has an internal subset
|
* Callback on internal subset declaration.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
internalSubset(void *ctx, const xmlChar *name,
|
internalSubset(void *ctx, const xmlChar *name,
|
||||||
@ -226,11 +227,11 @@ internalSubset(void *ctx, const xmlChar *name,
|
|||||||
* @publicId: The public ID of the entity
|
* @publicId: The public ID of the entity
|
||||||
* @systemId: The system ID of the entity
|
* @systemId: The system ID of the entity
|
||||||
*
|
*
|
||||||
* Special entity resolver, better left to the parser, it has
|
* The entity loader, to control the loading of external entities,
|
||||||
* more context than the application layer.
|
* the application can either:
|
||||||
* The default behaviour is to NOT resolve the entities, in that case
|
* - override this resolveEntity() callback in the SAX block
|
||||||
* the ENTITY_REF nodes are built in the structure (and the parameter
|
* - or better use the xmlSetExternalEntityLoader() function to
|
||||||
* values).
|
* set up it's own entity resolution routine
|
||||||
*
|
*
|
||||||
* Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
|
* 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);
|
fprintf(stderr, "SAX.resolveEntity(%s, %s)\n", publicId, systemId);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (systemId != NULL) {
|
return(xmlLoadExternalEntity((const char *) systemId,
|
||||||
return(xmlNewInputFromFile(ctxt, (char *) systemId));
|
(const char *) publicId, ctxt));
|
||||||
}
|
|
||||||
return(NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,60 @@
|
|||||||
SAX.setDocumentLocator()
|
SAX.setDocumentLocator()
|
||||||
SAX.startDocument()
|
SAX.startDocument()
|
||||||
SAX.startElement(diagram, testattr='test', xml:lang='en', xml:link='simple', xml:space='preserve')
|
SAX.processingInstruction(xml-stylesheet, type="text/xml"
|
||||||
SAX.endElement(diagram)
|
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()
|
SAX.endDocument()
|
||||||
|
5
error.c
5
error.c
@ -46,6 +46,7 @@ xmlParserPrintFileContext(xmlParserInputPtr input) {
|
|||||||
const xmlChar *cur, *base;
|
const xmlChar *cur, *base;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
|
if (input == NULL) return;
|
||||||
cur = input->cur;
|
cur = input->cur;
|
||||||
base = input->base;
|
base = input->base;
|
||||||
while ((cur > base) && ((*cur == '\n') || (*cur == '\r'))) {
|
while ((cur > base) && ((*cur == '\n') || (*cur == '\r'))) {
|
||||||
@ -91,7 +92,7 @@ xmlParserError(void *ctx, const char *msg, ...)
|
|||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
input = ctxt->input;
|
input = ctxt->input;
|
||||||
if ((input->filename == NULL) && (ctxt->inputNr > 1)) {
|
if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) {
|
||||||
cur = input;
|
cur = input;
|
||||||
input = ctxt->inputTab[ctxt->inputNr - 2];
|
input = ctxt->inputTab[ctxt->inputNr - 2];
|
||||||
}
|
}
|
||||||
@ -129,7 +130,7 @@ xmlParserWarning(void *ctx, const char *msg, ...)
|
|||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
input = ctxt->input;
|
input = ctxt->input;
|
||||||
if ((input->filename == NULL) && (ctxt->inputNr > 1)) {
|
if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) {
|
||||||
cur = input;
|
cur = input;
|
||||||
input = ctxt->inputTab[ctxt->inputNr - 2];
|
input = ctxt->inputTab[ctxt->inputNr - 2];
|
||||||
}
|
}
|
||||||
|
@ -50,10 +50,6 @@ typedef struct xmlParserInput {
|
|||||||
} xmlParserInput;
|
} xmlParserInput;
|
||||||
typedef xmlParserInput *xmlParserInputPtr;
|
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
|
* the parser can be asked to collect Node informations, i.e. at what
|
||||||
* place in the file they were detected.
|
* place in the file they were detected.
|
||||||
@ -255,6 +251,13 @@ typedef struct xmlSAXHandler {
|
|||||||
} xmlSAXHandler;
|
} xmlSAXHandler;
|
||||||
typedef xmlSAXHandler *xmlSAXHandlerPtr;
|
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
|
* Global variables: just the default SAX interface tables and XML
|
||||||
* version infos.
|
* version infos.
|
||||||
@ -407,7 +410,7 @@ xmlExternalEntityLoader
|
|||||||
xmlParserInputPtr
|
xmlParserInputPtr
|
||||||
xmlLoadExternalEntity (const char *URL,
|
xmlLoadExternalEntity (const char *URL,
|
||||||
const char *ID,
|
const char *ID,
|
||||||
xmlParserInputPtr context);
|
xmlParserCtxtPtr context);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -449,6 +449,7 @@ void xmlTextConcat (xmlNodePtr node,
|
|||||||
int len);
|
int len);
|
||||||
void xmlFreeNodeList (xmlNodePtr cur);
|
void xmlFreeNodeList (xmlNodePtr cur);
|
||||||
void xmlFreeNode (xmlNodePtr cur);
|
void xmlFreeNode (xmlNodePtr cur);
|
||||||
|
int xmlRemoveProp (xmlAttrPtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Namespaces
|
* Namespaces
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
fly with ZLIB if found at compile-time */
|
fly with ZLIB if found at compile-time */
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
#define INCLUDE_WINSOCKS
|
||||||
#include "win32config.h"
|
#include "win32config.h"
|
||||||
#else
|
#else
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
25
parser.c
25
parser.c
@ -344,6 +344,8 @@ PUSH_AND_POP(extern, xmlChar*, name)
|
|||||||
#define SKIP_BLANKS \
|
#define SKIP_BLANKS \
|
||||||
do { \
|
do { \
|
||||||
while (IS_BLANK(CUR)) NEXT; \
|
while (IS_BLANK(CUR)) NEXT; \
|
||||||
|
while ((CUR == 0) && (ctxt->inputNr > 1)) \
|
||||||
|
xmlPopInput(ctxt); \
|
||||||
if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \
|
if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \
|
||||||
if (*ctxt->input->cur == '&') xmlParserHandleReference(ctxt); \
|
if (*ctxt->input->cur == '&') xmlParserHandleReference(ctxt); \
|
||||||
} while (IS_BLANK(CUR));
|
} while (IS_BLANK(CUR));
|
||||||
@ -494,7 +496,7 @@ xmlNewEntityInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
|
|||||||
case XML_EXTERNAL_GENERAL_PARSED_ENTITY:
|
case XML_EXTERNAL_GENERAL_PARSED_ENTITY:
|
||||||
case XML_EXTERNAL_PARAMETER_ENTITY:
|
case XML_EXTERNAL_PARAMETER_ENTITY:
|
||||||
return(xmlLoadExternalEntity((char *) entity->SystemID,
|
return(xmlLoadExternalEntity((char *) entity->SystemID,
|
||||||
(char *) entity->ExternalID, ctxt->input));
|
(char *) entity->ExternalID, ctxt));
|
||||||
case XML_INTERNAL_GENERAL_ENTITY:
|
case XML_INTERNAL_GENERAL_ENTITY:
|
||||||
if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
|
if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
|
||||||
ctxt->sax->error(ctxt->userData,
|
ctxt->sax->error(ctxt->userData,
|
||||||
@ -584,7 +586,7 @@ xmlNewInputFromFile(xmlParserCtxtPtr ctxt, const char *filename) {
|
|||||||
buf = xmlParserInputBufferCreateFilename(name,
|
buf = xmlParserInputBufferCreateFilename(name,
|
||||||
XML_CHAR_ENCODING_NONE);
|
XML_CHAR_ENCODING_NONE);
|
||||||
if (buf != NULL)
|
if (buf != NULL)
|
||||||
directory = xmlMemStrdup(ctxt->input->directory);
|
directory = xmlParserGetDirectory(name);
|
||||||
}
|
}
|
||||||
if ((buf == NULL) && (ctxt->directory != NULL)) {
|
if ((buf == NULL) && (ctxt->directory != NULL)) {
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
@ -595,7 +597,7 @@ xmlNewInputFromFile(xmlParserCtxtPtr ctxt, const char *filename) {
|
|||||||
buf = xmlParserInputBufferCreateFilename(name,
|
buf = xmlParserInputBufferCreateFilename(name,
|
||||||
XML_CHAR_ENCODING_NONE);
|
XML_CHAR_ENCODING_NONE);
|
||||||
if (buf != NULL)
|
if (buf != NULL)
|
||||||
directory = xmlMemStrdup(ctxt->directory);
|
directory = xmlParserGetDirectory(name);
|
||||||
}
|
}
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
return(NULL);
|
return(NULL);
|
||||||
@ -4665,7 +4667,15 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) {
|
|||||||
if (name != NULL) xmlFree(name);
|
if (name != NULL) xmlFree(name);
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
SKIP_BLANKS;
|
SKIP_BLANKS;
|
||||||
|
/*
|
||||||
|
* Pop-up of finished entities.
|
||||||
|
*/
|
||||||
|
while ((CUR == 0) && (ctxt->inputNr > 1))
|
||||||
|
xmlPopInput(ctxt);
|
||||||
|
SKIP_BLANKS;
|
||||||
|
|
||||||
if (CUR != '>') {
|
if (CUR != '>') {
|
||||||
if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
|
if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
|
||||||
ctxt->sax->error(ctxt->userData,
|
ctxt->sax->error(ctxt->userData,
|
||||||
@ -6838,19 +6848,17 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
|
|||||||
GROW;
|
GROW;
|
||||||
if ((CUR == '<') && (NXT(1) == '?') &&
|
if ((CUR == '<') && (NXT(1) == '?') &&
|
||||||
(NXT(2) == 'x') && (NXT(3) == 'm') &&
|
(NXT(2) == 'x') && (NXT(3) == 'm') &&
|
||||||
(NXT(4) == 'l')) {
|
(NXT(4) == 'l') && (IS_BLANK(NXT(5)))) {
|
||||||
xmlParseXMLDecl(ctxt);
|
xmlParseXMLDecl(ctxt);
|
||||||
/* SKIP_EOL(cur); */
|
|
||||||
SKIP_BLANKS;
|
SKIP_BLANKS;
|
||||||
} else if ((CUR == '<') && (NXT(1) == '?') &&
|
} else if ((CUR == '<') && (NXT(1) == '?') &&
|
||||||
(NXT(2) == 'X') && (NXT(3) == 'M') &&
|
(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
|
* The first drafts were using <?XML and the final W3C REC
|
||||||
* now use <?xml ...
|
* now use <?xml ...
|
||||||
*/
|
*/
|
||||||
xmlParseXMLDecl(ctxt);
|
xmlParseXMLDecl(ctxt);
|
||||||
/* SKIP_EOL(cur); */
|
|
||||||
SKIP_BLANKS;
|
SKIP_BLANKS;
|
||||||
} else {
|
} else {
|
||||||
ctxt->version = xmlCharStrdup(XML_DEFAULT_VERSION);
|
ctxt->version = xmlCharStrdup(XML_DEFAULT_VERSION);
|
||||||
@ -7127,7 +7135,8 @@ xmlParseTry(xmlParserCtxtPtr ctxt) {
|
|||||||
&xmlDefaultSAXLocator);
|
&xmlDefaultSAXLocator);
|
||||||
if ((in->cur[2] == 'x') &&
|
if ((in->cur[2] == 'x') &&
|
||||||
(in->cur[3] == 'm') &&
|
(in->cur[3] == 'm') &&
|
||||||
(in->cur[4] == 'l')) {
|
(in->cur[4] == 'l') &&
|
||||||
|
(IS_BLANK(in->cur[5]))) {
|
||||||
ret += 5;
|
ret += 5;
|
||||||
#ifdef DEBUG_PUSH
|
#ifdef DEBUG_PUSH
|
||||||
fprintf(stderr, "PP: Parsing XML Decl\n");
|
fprintf(stderr, "PP: Parsing XML Decl\n");
|
||||||
|
13
parser.h
13
parser.h
@ -50,10 +50,6 @@ typedef struct xmlParserInput {
|
|||||||
} xmlParserInput;
|
} xmlParserInput;
|
||||||
typedef xmlParserInput *xmlParserInputPtr;
|
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
|
* the parser can be asked to collect Node informations, i.e. at what
|
||||||
* place in the file they were detected.
|
* place in the file they were detected.
|
||||||
@ -255,6 +251,13 @@ typedef struct xmlSAXHandler {
|
|||||||
} xmlSAXHandler;
|
} xmlSAXHandler;
|
||||||
typedef xmlSAXHandler *xmlSAXHandlerPtr;
|
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
|
* Global variables: just the default SAX interface tables and XML
|
||||||
* version infos.
|
* version infos.
|
||||||
@ -407,7 +410,7 @@ xmlExternalEntityLoader
|
|||||||
xmlParserInputPtr
|
xmlParserInputPtr
|
||||||
xmlLoadExternalEntity (const char *URL,
|
xmlLoadExternalEntity (const char *URL,
|
||||||
const char *ID,
|
const char *ID,
|
||||||
xmlParserInputPtr context);
|
xmlParserCtxtPtr context);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,24 @@
|
|||||||
<?xml version="1.0"?>
|
<?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"?>
|
<?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"?>
|
<?xml-stylesheet type="text/xml"
|
||||||
<diagram testattr="test" xml:lang="en" xml:link="simple" xml:space="preserve"/>
|
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
|
* @href: the URI associated
|
||||||
* @prefix: the prefix for the namespace
|
* @prefix: the prefix for the namespace
|
||||||
*
|
*
|
||||||
* Creation of a new Namespace.
|
* Creation of a new Namespace. This function will refuse to create
|
||||||
* Returns returns a new namespace pointer
|
* a namespace with a similar prefix than an existing one present on this
|
||||||
|
* node.
|
||||||
|
* Returns returns a new namespace pointer or NULL
|
||||||
*/
|
*/
|
||||||
xmlNsPtr
|
xmlNsPtr
|
||||||
xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
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 ...
|
* Add it at the end to preserve parsing order ...
|
||||||
|
* and checks for existing use of the prefix
|
||||||
*/
|
*/
|
||||||
cur->next = NULL;
|
cur->next = NULL;
|
||||||
if (node != NULL) {
|
if (node != NULL) {
|
||||||
@ -157,11 +160,17 @@ xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
|||||||
} else {
|
} else {
|
||||||
xmlNsPtr prev = node->nsDef;
|
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;
|
prev->next = cur;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,48 +180,14 @@ xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
|
|||||||
* @href: the URI associated
|
* @href: the URI associated
|
||||||
* @prefix: the prefix for the namespace
|
* @prefix: the prefix for the namespace
|
||||||
*
|
*
|
||||||
* Creation of a Namespace, the old way using PI and without scoping, to AVOID.
|
* Creation of a Namespace, the old way using PI and without scoping
|
||||||
* Returns returns a new namespace pointer
|
* DEPRECATED !!!
|
||||||
|
* Will be removed at next major release !
|
||||||
|
* Returns NULL this functionnality had been removed
|
||||||
*/
|
*/
|
||||||
xmlNsPtr
|
xmlNsPtr
|
||||||
xmlNewGlobalNs(xmlDocPtr doc, const xmlChar *href, const xmlChar *prefix) {
|
xmlNewGlobalNs(xmlDocPtr doc, const xmlChar *href, const xmlChar *prefix) {
|
||||||
xmlNsPtr cur;
|
return(NULL);
|
||||||
|
|
||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -956,9 +931,9 @@ xmlFreePropList(xmlAttrPtr cur) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* xmlFreeProp:
|
* 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
|
void
|
||||||
xmlFreeProp(xmlAttrPtr cur) {
|
xmlFreeProp(xmlAttrPtr cur) {
|
||||||
@ -972,6 +947,44 @@ xmlFreeProp(xmlAttrPtr cur) {
|
|||||||
xmlFree(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:
|
* xmlNewPI:
|
||||||
* @name: the processing instruction name
|
* @name: the processing instruction name
|
||||||
|
1
tree.h
1
tree.h
@ -449,6 +449,7 @@ void xmlTextConcat (xmlNodePtr node,
|
|||||||
int len);
|
int len);
|
||||||
void xmlFreeNodeList (xmlNodePtr cur);
|
void xmlFreeNodeList (xmlNodePtr cur);
|
||||||
void xmlFreeNode (xmlNodePtr cur);
|
void xmlFreeNode (xmlNodePtr cur);
|
||||||
|
int xmlRemoveProp (xmlAttrPtr cur);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Namespaces
|
* Namespaces
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
#define LIBXML_VERSION "@LIBXML_VERSION@"
|
#define LIBXML_VERSION "@LIBXML_VERSION@"
|
||||||
|
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
|
|
||||||
|
#ifdef INCLUDE_WINSOCK
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
|
|
||||||
#define EWOULDBLOCK WSAEWOULDBLOCK
|
#define EWOULDBLOCK WSAEWOULDBLOCK
|
||||||
@ -46,6 +48,7 @@
|
|||||||
#define EDQUOT WSAEDQUOT
|
#define EDQUOT WSAEDQUOT
|
||||||
#define ESTALE WSAESTALE
|
#define ESTALE WSAESTALE
|
||||||
#define EREMOTE WSAEREMOTE
|
#define EREMOTE WSAEREMOTE
|
||||||
|
#endif /* INCLUDE_WINSOCK */
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
static int isinf (double d) {
|
static int isinf (double d) {
|
||||||
|
28
xmlIO.c
28
xmlIO.c
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "xmlmemory.h"
|
#include "xmlmemory.h"
|
||||||
#include "parser.h"
|
#include "parser.h"
|
||||||
|
#include "parserInternals.h"
|
||||||
#include "xmlIO.h"
|
#include "xmlIO.h"
|
||||||
#include "nanohttp.h"
|
#include "nanohttp.h"
|
||||||
|
|
||||||
@ -464,22 +465,33 @@ xmlParserGetDirectory(const char *filename) {
|
|||||||
* xmlDefaultExternalEntityLoader:
|
* xmlDefaultExternalEntityLoader:
|
||||||
* @URL: the URL for the entity to load
|
* @URL: the URL for the entity to load
|
||||||
* @ID: the System ID 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.
|
* 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.
|
* Returns a new allocated xmlParserInputPtr, or NULL.
|
||||||
*/
|
*/
|
||||||
static
|
static
|
||||||
xmlParserInputPtr
|
xmlParserInputPtr
|
||||||
xmlDefaultExternalEntityLoader(const char *URL, const char *ID,
|
xmlDefaultExternalEntityLoader(const char *URL, const char *ID,
|
||||||
xmlParserInputPtr context) {
|
xmlParserCtxtPtr ctxt) {
|
||||||
|
xmlParserInputPtr ret = NULL;
|
||||||
#ifdef DEBUG_EXTERNAL_ENTITIES
|
#ifdef DEBUG_EXTERNAL_ENTITIES
|
||||||
fprintf(stderr, "xmlDefaultExternalEntityLoader(%s, xxx)\n", URL);
|
fprintf(stderr, "xmlDefaultExternalEntityLoader(%s, xxx)\n", URL);
|
||||||
#endif
|
#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 =
|
static xmlExternalEntityLoader xmlCurrentExternalEntityLoader =
|
||||||
@ -512,7 +524,7 @@ xmlGetExternalEntityLoader(void) {
|
|||||||
* xmlLoadExternalEntity:
|
* xmlLoadExternalEntity:
|
||||||
* @URL: the URL for the entity to load
|
* @URL: the URL for the entity to load
|
||||||
* @ID: the System ID 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
|
* Load an external entity, note that the use of this function for
|
||||||
* unparsed entities may generate problems
|
* unparsed entities may generate problems
|
||||||
@ -522,7 +534,7 @@ xmlGetExternalEntityLoader(void) {
|
|||||||
*/
|
*/
|
||||||
xmlParserInputPtr
|
xmlParserInputPtr
|
||||||
xmlLoadExternalEntity(const char *URL, const char *ID,
|
xmlLoadExternalEntity(const char *URL, const char *ID,
|
||||||
xmlParserInputPtr context) {
|
xmlParserCtxtPtr ctxt) {
|
||||||
return(xmlCurrentExternalEntityLoader(URL, ID, context));
|
return(xmlCurrentExternalEntityLoader(URL, ID, ctxt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user