<http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work>
<http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc>
<http://suika.fam.cx/www/markup/xml/xmlcc/xmlcc-work>
<http://suika.fam.cx/gate/cvs/markup/xml/xmlcc/xmlcc-work.en.html>
© Wakaba.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front‐Cover Texts, and no Back‐Cover
Texts. A copy of the license is
available at <http://www.gnu.org/copyleft/fdl.html>
.
This section describes the status of this document at the time of its publication. Other documents might supersede this document.
This document is a working draft, produced as part of the
Whatpm
subproject of the
manakai
project. It might be updated, replaced, or obsoleted by
other documents at any time. It is inappropriate to
cite this document as other than work in progress
.
Comments on this document are welcome and may be sent to the author.
Translations of thie document might be available. The English version of the document is the only normative version.
This section is non‐normative.
The key words MUST
,
MUST NOT
,
SHOULD
,
SHOULD NOT
, and
MAY
in this
document are to be interpreted as described in
RFC
2119
[KEYWORDS].
All examples and notes in this specification are non‐normative, as are all sections explicitly marked non‐normative. Everything else in this specification is normative.
Algorithm is normative but non-normative. In addition, the order in which errors are raised is undefined.
If a Document
node has no
xml-well-formedness-error, entity-error, and unknown-error,
then it is well-formed. If a well-formed Document
node has no xml-validity-error, it is valid.
A well‐formed Document
can be safely serialized
into a well‐formed XML document. A valid Document
can be easily serialized into a valid XML document.
Errors are classified into these error categories:
entity-error
@@
This algorithm does not support
DOM tree with one or more EntityReference
nodes. It is expected that any entity references are expanded
at the parse time and any unexpandable entity references
make parse time errors raised so that never result in
DOM tree with EntityReference
nodes.
round-trip-error
round-trip-warning
A round-trip-warning
will be raised when a construct, which might not be restored to the same
construct when it is serialized and then re-parsed by a conforming
processor, is encountered.
For a Comment
node a
round-trip-warning
will
be raised, since XML processors are not required to
report texts of comments for applications.
unknown-error
?xml-misc-error
xml-misc-fatal-error
xml-misc-recommendation
An
xml-misc-recommendation
will be raised if a SHOULD‐level requirement
in XML specification is not met.
xml-validity-error
xml-well-formedness-error
If an xml-well-formedness-error
is raised,
it would not be possible to generate an XML serialization that
would match to the appropriate production rule and that would not
violate to any well‐formedness constraint in XML
specification [XML10,
XML11].
@@ TODO: #dt-atuseroption at user option (MAY or MUST), #dt-compat for compatibility, #dt-interop for interoperability
xml-misc-recommendation
.<
, then raise an
xml-misc-warning
.Name
is
xml:space
has declared type different from
(default|preserve), (default), or (preserve), then raise an
xml-misc-error
.
@@ duplication with
#xml-at-xml-space.The following algorithms and definitions are applied to XML documents; especially, they are not applied to HTML documents.
The XML version of a node is
the XML version of the document to which the node belongs.
For a Documemt
node, the XML version
of the document is the value of the xmlVersion
attribute of the node. For a DocumentType
node whose
ownerDocument
attribute is set to null
,
the XML version of the document is 1.0
.
For any other node, the XML version of the document
is that of the Document
node contained in the
ownerDocument
attribute of the node.
The algorithm to validate an XML character data (s) is defined as following:
Char10
,
then raise an
xml-well-formedness-error
.CompatChar10
,
then raise an
xml-misc-warning
.ControlChar10
,
then raise an
xml-misc-warning
.U+000D
CARRIAGE RETURN
character, then
raise a
round-trip-error
.
@@ We should not raise duplicate errors for U+000D
in attribute values. In addition, we should support a mode where
U+000D will be serialized as
(so that no round-trip-error
will be raised).The algorithm
to validate a
Name
(s) is defined
as following:
xml
(in any
case combination), then raise an
xml-misc-warning
.
@@ except for attribute names xml:lang
,
xml:space
, xml:base
, xml:id
,
xmlns
, xmlns:*
,
pi name xml-stylesheet
.The algorithm
to
validate an NCName
(name)
is defined as following:
To validate a public identifier (pid), the algorithm below MUST be used:
#x20 | #xD | #xA |
[a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
,
then it is an
xml-well-formedness-error
.U+0009
CHARACTER TABULATION
,
U+000A
CARRIAGE RETURN
,
and U+000D
LINE FEED
characters, if the first character of pid is
U+0020
SPACE
character,
if the last character of pid is U+0020
SPACE
character, or if there is a
U+0020
SPACE
character
immediately followed by another U+0020
SPACE
character in pid, then it is a
round-trip-error
.Node
The algorithm to check a node (n) is defined as following:
Attr
nodelocalName
attribute value as an NCName
.prefix
attribute value is different from
null
, then validate
the prefix
attribute value as an NCName
.childNodes
list of n,
Text
or EntityReference
node, then it is an
xml-well-formedness-error
.EntityReference
node, then it is an
entity-error
.nodeName
attribute of n is
xml:space
@@ or {xml namespace}:space ?
and value
attribute of n is neither
default
nor preserve
, then it is an
xml-misc-error
.specified
,
manakaiAttributeType
AttributeDefinition
nodenodeName
attribute of n is
xml:space
@@ or {xml namespace}:space ?
and its declared type is different from (default|preserve),
(default), or (preserve), then raise an
xml-misc-error
.childNodes
list of n,
Text
or EntityReference
node, then it is an
xml-well-formedness-error
.EntityReference
node, then it is an
entity-error
.CDATASection
nodedata
attribute value as an XML character
data.data
attribute value contains
a string ]]>
, then raise an
xml-well-formedness-error
.childNodes
list of n contains
any nodes, they are in
xml-well-formedness-error
.Comment
noderound-trip-warning
.data
attribute value as an XML character
data.data
attribute value contains
a string --
, or if it ends with a character
-
, then raise an
xml-well-formedness-error
.childNodes
list of n contains
any nodes, they are in
xml-well-formedness-error
.Document
node1.0
or 1.1
,
then it is an unknown-error?
.xmlEncoding
attribute value does not
match to [A-Za-z] ([A-Za-z0-9._] | '-')*
@@ formal def, then it is an
xml-well-formedness-error
.childNodes
list of n have to
consist of zero or more Comment
and/or
ProcessingInstruction
nodes, followed by
an optional DocumentType
node, followed
by zero or more Comment
and/or
ProcessingInstruction
nodes, followed by
an Element
node, followed
by zero or more Comment
and/or
ProcessingInstruction
nodes. Any violation to this is an
xml-well-formedness-error
.childNodes
list of n,
EntityReference
node, then
check
nc recursively.allDeclarationsProcessed
DocumentFragment
nodechildNodes
list of n,
Element
, Text
, CDATASection
,
Comment
, ProcessingInstruction
, or
EntityReference
node, then it is an
xml-well-formedness-error
.EntityReference
node, then it is an
entity-error
.DocumentType
nodenodeName
attribute value as an NCName
.ownerDocument
attribute of n is
null
, then abort these substeps.documentElement
attribute of the node
set to ownerDocument
attribute of n is
null
, then abort these substeps.nodeName
attribute of the node set to
documentElement
attribute of the node set to
ownerDocument
attribute of n is
different from nodeName
of n,
then raise an
xml-validity-error
.publicId
attribute value as a public identifier.systemId
attribute value contains
both "
and '
characters, it is a
xml-well-formedness-error
.childNodes
list of n,
ProcessingInstruction
node, then it is an
xml-well-formedness-error
.
@@ ref to manakai's extensionsentities
, notations
,
elementTypes
, externally declared?Element
nodelocalName
attribute value as an NCName
.prefix
attribute value is different from
null
, then validate
the prefix
attribute value as an NCName
.childNodes
list of n,
Element
,
Text
, CDATASection
, Comment
,
ProcessingInstruction
, or
EntityReference
node, then it is an
xml-well-formedness-error
.EntityReference
node, then it is an
entity-error
.ElementTypeDefinition
nodechildNodes
list of n contains
any nodes, they are in
xml-well-formedness-error
.Entity
nodeentity-error
@@ if !notationName.nodeName
attribute value as an NCName
.publicId
attribute value as a public identifier.systemId
attribute value contains
both "
and '
characters, it is a
xml-well-formedness-error
.notationName
childNodes
list of n,
Element
,
Text
, CDATASection
, Comment
,
ProcessingInstruction
, or EntityReference
node, then it is an
xml-well-formedness-error
.EntityReference
node, then it is an
entity-error
.EntityReference
nodeentity-error
.nodeName
attribute value as an NCName
.childNodes
list of n,
Element
,
Text
, CDATASection
, Comment
,
ProcessingInstruction
, or EntityReference
node, then it is an
xml-well-formedness-error
.EntityReference
node, then it is an
entity-error
.Notation
nodenodeName
attribute value as an NCName
.publicId
attribute value as a public identifier.systemId
attribute value contains
both "
and '
characters, it is a
xml-well-formedness-error
.childNodes
list of n contains
any nodes, they are in
xml-well-formedness-error
.ProcessingInstruction
nodetarget
attribute value matches to the string
xml
in any case combination, then raise a
xml-well-formedness-error
.target
attribute value as an NCName
.data
attribute value as an XML character
data.data
attribute value contains a string
?>
, then raise a
xml-well-formedness-error
.data
attribute value starts with either
U+0009
CHARACTER
TABULATION
, U+000A
LINE
FEED
, U+000D
CARRIAGE
RETURN
, or U+0020
SPACE
character, then raise a
round-trip-error
.childNodes
list of n contains
any nodes, then raise an
xml-well-formedness-error
.Text
nodedata
attribute value as an XML character
data.childNodes
list of n contains
any nodes, they are in
xml-well-formedness-error
.This section defines a couple of character classes. These classes are referred to by algorithms specified above.
Character class Char10
contains the following characters:
U+0009
CHARACTER
TABULATION
U+000A
LINE FEED
U+000D
CARRIAGE
RETURN
U+0020
SPACE
.. U+D7FF
U+E000
.. U+FFFD
REPLACEMENT CHARACTER
U+10000
.. U+10FFFF
This character class contains all characters allowed in the production rule
Char
of XML 1.0
[XML10].
Character class CompatChar10
contains the following characters:
Document authors are encouraged to avoid "compatibility characters", as defined in section 6.8 of [Unicode @@ Unicode 2.0 @@] (see also D21 in section 3.6 of [Unicode3]).
Character class ControlChar10
contains the following characters:
U+007F
DELETE
..
U+0084
INDEX
U+0086
START OF SELECTED
AREA
.. U+009F
APPLICATION
PROGRAM COMMAND
U+FDD0
.. U+FDEF
U+1FFFE
.. U+1FFFF
U+2FFFE
.. U+2FFFF
U+3FFFE
.. U+3FFFF
U+4FFFE
.. U+4FFFF
U+5FFFE
.. U+5FFFF
U+6FFFE
.. U+6FFFF
U+7FFFE
.. U+7FFFF
U+8FFFE
.. U+8FFFF
U+9FFFE
.. U+9FFFF
U+AFFFE
.. U+AFFFF
U+BFFFE
.. U+BFFFF
U+CFFFE
.. U+CFFFF
U+DFFFE
.. U+DFFFF
U+EFFFE
.. U+EFFFF
U+FFFFE
.. U+FFFFF
U+10FFFE
.. U+10FFFF
This character class contains the characters listed in the Note in Section 2.2 of XML 1.0 [XML10], as amended by errata.
<http://www.w3.org/TR/xml>
.
This version of the specification is referenced.<http://www.w3.org/TR/CSS21>
.<http://dev.w3.org/csswg/cssom/Overview.html>
.<http://dev.w3.org/2006/webapi/selectors-api/Overview.html>
.
The latest published version of the specification is available at
<http://www.w3.org/TR/selectors-api/>
.<http://www.w3.org/TR/xbl/>
.