Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/libraries/HaXml/tests/xml-conformance/japanese/pr-xml-little-endian.xml

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


�?xml version="1.0"?>

<!DOCTYPE spec SYSTEM "spec.dtd" [



<!-- �g�3�0_0�n0㉐g��SO�0K0�	�->



<!ENTITY TR-or-Rec             "���>

<!-- <!ENTITY TR-or-Rec             "j��1X(TR)"> -->

<!ENTITY eTR-or-Rec            "specification">

<!-- <!ENTITY eTR-or-Rec             "technical report(TR)"> -->

<!ENTITY application           "���0��0">

<!ENTITY error                 "��0">

<!ENTITY fatal-error           "����0">

<!ENTITY parsed-data           "㉐gU0����">

<!ENTITY unparsed-data         "㉐gU0�j0D0��">

<!ENTITY parsed-entity         "㉐g��SO">

<!ENTITY parser                "��">

<!ENTITY unparsed-entity       "㉐g�Y�SO">

<!ENTITY well-formed           "teb__">

<!ENTITY valid                 "�S_">

<!ENTITY validity              "�S_'`">

<!ENTITY escape                "%RqbD0">

<!ENTITY prolog                "�">

<!ENTITY surrogate-blocks      "��0���0�">

<!ENTITY letter                "W[">

<!ENTITY ideographic           "q}T"oW[">

<!ENTITY markup                "���Q0">

<!ENTITY left-angle-bracket    "
NI{�\j0�)">

<!ENTITY right-angle-bracket   "
NI{�'Yj0�)">

<!ENTITY string                "�W[R">

<!ENTITY char-string           "�W[R"><!-- string of chararacters, 

                                          character strings, strings, 

                                          characters o0Y0y0f0�W[Rh0Y0� -->

<!ENTITY replacement-text      "n�����">

<!ENTITY single-quote          "N͑_(u&{">

<!ENTITY double-quote          "�͑_(u&{">

<!ENTITY adaptations-annex     "i�uD�\�>

<!ENTITY root                  "�0�">

<!ENTITY base-character        "��W[">

<!ENTITY diacritical-mark      "zv�"><!--(�����0���0�)�R�h0M0܈F0-->

<!ENTITY composed-form         "Tbb__">

<!ENTITY standalone            "�����0">

<!ENTITY double-hyphen         "�#�0���>

<!--<!ENTITY case-fold             "'Y�W[K0\�W[x0n0q}N">-->

<!-- <!ENTITY case-fold             "��0h0M0�eW[h0\�W[n0TN�">-->

<!ENTITY parameter             "��0�">

<!ENTITY stream                "���0�>

<!ENTITY validating            "�S_'`�i<�0�">

<!ENTITY non-validating        "�S_'`�i<�0j0D0">

<!ENTITY user                  "�0�">

<!--<!ENTITY at-user-option        "�0�L0����0�c�W0_0h0M0">-->

<!ENTITY at-user-option    "�0�n0����0c�k0�c0f0o0">

<!ENTITY content-particle     "�� }P[">

<!ENTITY processor            "��0�">

<!ENTITY default              "����0">

<!ENTITY default-value        "����0$P">

<!ENTITY header               "���">

<!ENTITY target               "����">

<!ENTITY mixed-content        "���">

<!ENTITY country-code         "��">

<!ENTITY language-code        "��0�">

<!ENTITY version              "Hr"> <!-- version 1.0o0,{1.0Hr -->

<!ENTITY match                "���">

<!ENTITY character-value      "�W[ju�>

<!ENTITY byte-order-mark      "����0�">

<!ENTITY bypass               "�tW0j0D0">

<!ENTITY identifier           "X�RP[">

<!-- <!ENTITY identify             "X�RY0�"> -->

<!ENTITY identify        "yr�Y0�">

<!-- <!ENTITY identified           "X�RU0��"> -->

<!ENTITY identified      "yr�U0��">

<!ENTITY combining-character  "P}T�W[">

<!ENTITY subset               "�����">

<!ENTITY token                "���>

<!ENTITY literal              "�0�0">



<!ENTITY parenthesis          "K0c0S0">

<!ENTITY left-parenthesis     "�M0K0c0S0">

<!ENTITY right-parenthesis    "�X0K0c0S0">



<!-- B0h0g0lL0d0D0_0�n0 JIS X0221�����B0� -->



<!ENTITY extender             "�����">

<!ENTITY property             "��0��">

<!ENTITY property-list        "��0���0�">

<!ENTITY property-file        "��0������>

<!ENTITY font-decomposition   "���R�>

<!ENTITY compatibility-decomposition  "��'`R�>

<!ENTITY compatibility-area   "��'`�W">



<!ENTITY language-identification "���R">



<!ENTITY space-character "����W[">

<!ENTITY space           "���">

<!ENTITY code-value      "��$P">

<!ENTITY normative       "��n0">

<!ENTITY hueristics      "��0�0����">

<!ENTITY informative     "">



<!ENTITY WebSGML 'ISO 8879x0n0WebSGML&adaptations-annex;'>

<!ENTITY XML.version "1.0">

<!ENTITY doc.date "1997t^12g8�>

<!ENTITY iso6.doc.date "971208">

<!ENTITY w3c.doc.date "97t^12g3�>

<!ENTITY draft.day '8�>

<!ENTITY draft.month '12g'>

<!ENTITY draft.year '1997t^'>



<!-- �g�3�0_0�n0㉐g��SO�0~0g0	�->



<!-- LAST TOUCHED BY: Tim Bray, 3 Dec 1997 -->



<!-- The words 'FINAL EDIT' in comments mark places where changes

need to be made after approval of the document by the ERB, before

publication.  -->



<!ENTITY XML.version "1.0">

<!ENTITY doc.date "8 December 1997">

<!ENTITY iso6.doc.date "971208">

<!ENTITY w3c.doc.date "03-Dec-97">

<!ENTITY draft.day '8'>

<!ENTITY draft.month 'December'>

<!ENTITY draft.year '1997'>



<!ENTITY WebSGML 

 'WebSGML Adaptations Annex to ISO 8879'>



<!ENTITY newline " ">

<!-- old: <!ENTITY newline "&#8232;"> -->

<!ENTITY gt     ">"> 

<!--<!ENTITY amp    "&"> -->

<!ENTITY xmlpio "'&lt;?xml'">

<!ENTITY pic    "'?>'">

<!ENTITY br     "\n">

<!ENTITY cellback '#c0d9c0'>

<!ENTITY mdash  "--"> <!-- was: <!ENTITY mdash  "&#38;#151;"> -->

<!ENTITY com    "--">

<!ENTITY como   "--">

<!ENTITY comc   "--">

<!ENTITY hcro   "&amp;#x">

<!-- <!ENTITY nbsp ""> -->

<!ENTITY nbsp   "&#160;">

<!ENTITY magicents "<code>amp</code>,

<code>lt</code>,

<code>gt</code>,

<code>apos</code>,

<code>quot</code>">



<!--�g�3�0d0D0f0: ��0�o0��K0�YW0~0W0_004�g�+Y -->

<!-- audience and distribution status:  for use at publication time -->

<!--  -->

<!ENTITY doc.audience "lQ��0�0�s0p��>

<!ENTITY doc.distribution "�����s0��
Nn0�a�9e	YW0j0D0P�0��uk0M�^W0f0��D0">



]>



<!-- for Panorama *-->

<?VERBATIM "eg" ?>



<spec>

<header>

<title>�_��0&markup;��(XML)</title>

<version>,{1.0&version;</version>

<w3c-designation>PR-xml-&iso6.doc.date;</w3c-designation>

<w3c-doctype>World Wide Web Consortium</w3c-doctype>

<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>

<notice><p>S0n0I�ho0�L WG�s0�n0���0���0�0n0_0�n0�n0g0B0c0f0��0p��0_0�n0�n0g0o0j0D00

<!-- FINAL EDIT:  FIX --></p></notice>

<publoc>

<loc  href="http://www.w3.org/TR/PR-xml-&iso6.doc.date;">

http://www.w3.org/TR/PR-xml-&iso6.doc.date;</loc></publoc>

<prevlocs>

<loc  href='http://www.w3.org/TR/WD-xml-961114'>

http://www.w3.org/TR/WD-xml-961114</loc>

<loc  href='http://www.w3.org/TR/WD-xml-lang-970331'>

http://www.w3.org/TR/WD-xml-lang-970331</loc>

<loc  href='http://www.w3.org/TR/WD-xml-lang-970630'>

http://www.w3.org/TR/WD-xml-lang-970630</loc>

<loc  href='http://www.w3.org/TR/WD-xml-970807'>

http://www.w3.org/TR/WD-xml-970807</loc>

<loc  href='http://www.w3.org/TR/WD-xml-971117'>

http://www.w3.org/TR/WD-xml-971117</loc>

</prevlocs>

<authlist>

<author><name>Tim Bray</name>

<affiliation>Textuality and Netscape</affiliation>

<email 

href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>

<author><name>Jean Paoli</name>

<affiliation>Microsoft</affiliation>

<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>

<author><name>C. M. Sperberg-McQueen</name>

<affiliation>University of Illinois at Chicago</affiliation>

<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>

</authlist>

<status>

      <p>S0n0&TR-or-Rec;o0, 1997t^12gk0World Wide Web ConsortiumK0�

lQh�0�_0�THhExtensible Markup Language version,{1.0Hr��W0, �

S�v���	Y��S0h0j0O0\ObW0_0&TR-or-Rec;g0B0�0This &eTR-or-Rec; 

is a translation of the XML proposed recommendation 1.0

published by the World Wide Web Consortium in December 1997.  It is

intended that &eTR-or-Rec; is technically identical to the original.</p>



<p>��k0B0�0W�O)jk0�W0f0n0��0!kk0:yY00The

original copyright notice is shown below:</p>



<p>S0n0Hrn0XMLn0��o0��0��0�s0p��0

�vh0Y0�0�����s0��
Nn0�a�9e	YW0j0D0P�0�uk0

M�^W0f0��D00This version of the XML specification is for

public review and discussion. It may be distributed freely,

as long as all text and legal notices remain intact.</p>



<p>S0n0&TR-or-Rec;n0CQh0j0c0_0XML�THho0�98t^2gk0World

Wide Web ConsortiumK0�lQh�0�_0XML�Tk0�c0f0Y0g0k0nM0�

H0��f0D0�0S0n0j��1Xo0�L�Tk0�c0f0�kY0�S0h0�

��W0f0D0�0The XML Proposed Recommendation is superseded

by the XML Recommendation which was published by the World

Wide Web Consortium in February 1998.  It is intended that 

this &eTR-or-Rec; be revised accordingly in the near future.</p>



<p>S0n0&TR-or-Rec;o0�[W0_0�n0g0B0c0f0�^egn0<loc

href='http://www.w3.org/XML'>XML;m�</loc>��0f0\ObU0�_0��0\O

miI�h�CQh0Y0�0��{�O(uU0�f0D0���j0�����tn0j

�(j�N,�S&markup;���andard Generalized Markup Language, ISO

8879:1986k0��s0�k��H0_0�n0)n0�W
Ng0n0O(un0_0�k0&subset;

SW0_0��0�0&TR-or-Rec;o0�[Y0�0ISO 8879n0i0n0_j�S0n0

&subset;k0�Y0K0�0F0zl�k0d0D0f0n0s�}o0�oc

href='http://www.w3.org/XML/#WG-decisions'>%R�uaY0�</loc>0XMLo0��0D0O0d0K0n0FU�g0���U0��L����Y0�<loc

href='http://www.w3.org/XML/#software'>��0���</loc>n0pe��H0f0

D0�0XMLk0�Y0�lQ�n0֊p�0�0�0�<loc

href='http://www.w3.org/XML/#discussion'>eQKbg0M0�</loc>0It is a

stable document derived from a series of working drafts produced over

the last year as deliverables of the <loc

href='http://www.w3.org/XML'>XML activity</loc>.  It specifies a

language created by subsetting an existing, widely used international

text processing standard (Standard Generalized Markup Language, ISO

8879:1986 as amended and corrected) for use on the World Wide Web.

Details of the decisions regarding which features of ISO 8879 to

retain in the subset <loc

href='http://www.w3.org/XML/#WG-decisions'>are available

separately</loc>.  XML is already supported by some commercial

products, and there are a growing number of <loc

href='http://www.w3.org/XML/#software'>free implementations</loc>.

Public discussions of XML <loc

href='http://www.w3.org/XML/#discussion'>are accessible

online</loc>.</p>



<p>S0n0&TR-or-Rec;g0o0�ibref ref="Berners-Lee"/>k0��Y0�

URI(Uniform Resource Identifier)�O(uY0�0URIn06R�\Omio02��Ng0B0c0

f0�ibref ref="RFC1738"/>�s0<bibref ref="RFC1808"/>��Y0���h0

j0c0f0D0�0S0n0\OmiL0RFCh0W0f0�Q0eQ���j0D04XTo0�0�z�n0URI

x0n0�gqo0�L(Uniform Resource Locator)x0n0�gqk0�0�0This

specification uses the term URI, which is defined by <bibref

ref="Berners-Lee"/>, a work in progress expected to update <bibref

ref="RFC1738"/> and <bibref ref="RFC1808"/>.  Should the work not be

accepted as an RFC, the references to uniform resource identifiers

(URIs) in this specification will become references to uniform

resource locators (URLs).</p>



      <p>XMLn0��k0��0f0D0�K0i0F0K0n0�h0j0�o0W3Cn0���k0B0

���g0B0�0The normative version of the specification is

the English version found at the W3C site.</p>



      <p>S0n0j��1Xo0���h0�S�vk0TNg0B0�S0h0�a�f0D0�L00

�
Nn0��o0B0���0Although this technical report is

intended to be technically identical to the original, it may

contain errors from the translation.</p>



      <p>�� ���h0n0���@bn0����f�K0k0Y0�_0�0S0n0

&TR-or-Rec;n0��b�s0�ju�0���n0]0���g0M0�`0Q0�X[W0f0D0

�0S0n0&TR-or-Rec;n0WebHro00���n0HTML���]0n0~0~0�X[W0f0D0�0

</p>

</status>

<!-- out of date

<statusp>This is a W3C Working Draft for review by W3C members and other

interested parties. It is a draft document and may be updated,

replaced, or obsoleted by other documents at any time. It is

inappropriate to use W3C Working Drafts as reference material or to

cite them as other than "work in progress". A list of current W3C

working drafts can be found at 

<loc  href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.</statusp>

<statusp><emph>Note:</emph> Since working drafts are subject to frequent

change, you are advised to reference the above URL, rather than the

URLs for working drafts themselves.</statusp>

<statusp>This work is part of the W3C SGML Activity (for current

status, see <loc href="http://www.w3.org/MarkUp/SGML/Activity"

>http://www.w3.org/MarkUp/SGML/Activity</loc>).</statusp>

<p>The current

draft of this specification 

presupposes the successful completion of the current

work on the &WebSGML;, being prepared by ISO/IEC JTC1 

at the time this draft specification was drafted.

If it is not

adopted in the expected form, some clauses of this specification 

may change,  and some

recommendations now labeled "<termref def="dt-interop">for

interoperability</termref>" will become requirements labeled

"<termref def="dt-compat">for compatibility</termref>".

</p>

<p>The current draft of this specification uses the term 

URI, which is defined by 

<bibref ref="Berners-Lee"/>,

which is work in progress expected to update 

<bibref ref="RFC1738"/> and <bibref ref="RFC1808"/>.

Should the work in this draft not be accepted as an RFC, the

references to uniform resource identifiers (URIs) in this

specification will become references to uniform resource

locators (URLs).</p>

</status> -->

<abstract>

<p>�_��0&markup;��XML)o0SGMLn0!|XSj0��0B0c0f0�0&TR-or-Rec;g0�0Y0y0f0���Y0�0XMLn0�jo0�Wn0HTMLh0T�k0��`n0B0�SGML����
Ng0M�^�O�s0�tg0M0�S0h0h0Y0�0XMLo0�ňL0�fg0B0c0f0�ML�s0HTMLn0i0a0�k0�f0��K�u'`��d0-��0j0U0�f0D0�0</p>

</abstract>

<pubstmt>

<p>Chicago, Vancouver, Mountain View, et al.:

World-Wide Web Consortium, XML\Omi��0�, 1996, 1997.</p>

</pubstmt>

<sourcedesc>

<p>Created in electronic form.</p>

</sourcedesc>

<langusage>

<language id='EN'>English</language>

<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>

</langusage>

<revisiondesc>

<slist>

<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>

<sitem>1997-12-02 : TB : further changes (see TB to XML WG,

2 December 1997)</sitem>

<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and

comments from the proofreaders as possible:

entify hard-coded document date in pubdate element,

change expansion of entity WebSGML,

update status description as per Dan Connolly (am not sure

about refernece to Berners-Lee et al.),

add 'The' to abstract as per WG decision,

move Relationship to Existing Standards to back matter and

combine with References,

re-order back matter so normative appendices come first,

re-tag back matter so informative appendices are tagged informdiv1,

remove XXX XXX from list of 'normative' specs in prose,

move some references from Other References to Normative References,

add RFC 1738, 1808, and 2141 to Other References (they are not

normative since we do not require the processor to enforce any 

rules based on them),

add reference to 'Fielding draft' (Berners-Lee et al.),

move notation section to end of body,

drop URIchar non-terminal and use SkipLit instead,

lose stray reference to defunct nonterminal 'markupdecls',

move reference to Aho et al. into appendix (Tim's right),

add prose note saying that hash marks and fragment identifiers are

NOT part of the URI formally speaking, and are NOT legal in 

system identifiers (processor 'may' signal an error).

Work through:

Tim Bray reacting to James Clark,

Tim Bray on his own,

Eve Maler,



NOT DONE YET:

change binary / text to unparsed / parsed.

handle James's suggestion about &lt; in attriubte values

uppercase hex characters,

namechar list,

</sitem>

<sitem>1997-12-01 : JB : add some column-width parameters</sitem>

<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate

recent WG decisions and other corrections:

binding sources of character encoding info (27 Aug / 3 Sept),

correct wording of Faust quotation (restore dropped line),

drop SDD from EncodingDecl,

change text at version number 1.0,

drop misleading (wrong!) sentence about ignorables and extenders,

modify definition of PCData to make bar on msc grammatical,

change grammar's handling of internal subset (drop non-terminal markupdecls),

change definition of includeSect to allow conditional sections,

add integral-declaration constraint on internal subset,

drop misleading / dangerous sentence about relationship of

entities with system storage objects,

change table body tag to htbody as per EM change to DTD,

add rule about space normalization in public identifiers,

add description of how to generate our name-space rules from 

Unicode character database (needs further work!).

</sitem>

<sitem>1997-10-08 : TB : Removed %-constructs again, new rules

for PE appearance.</sitem>

<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up

element-type defs, lotsa little edits for style</sitem>

<sitem>1997-09-25 : TB : Change to elm's new DTD, with

substantial detail cleanup as a side-effect</sitem>

<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition 

of ignoreSectContents (thanks to Makoto Murata)</sitem>

<sitem>Allow all empty elements to have end-tags, consistent with

SGML TC (as per JJC).</sitem>

<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:

introduce the term 'empty-element tag', note that all empty elements

may use it, and elements declared EMPTY must use it.

Add WFC requiring encoding decl to come first in an entity.

Redefine notations to point to PIs as well as binary entities.

Change autodetection table by removing bytes 3 and 4 from 

examples with Byte Order Mark.

Add content model as a term and clarify that it applies to both

mixed and element content.

</sitem>

<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,

changes to productions for choice, seq, Mixed, NotationType,

Enumeration.  Follow James Clark's suggestion and prohibit 

conditional sections in internal subset.  TO DO:  simplify

production for ignored sections as a result, since we don't 

need to worry about parsers which don't expand PErefs finding

a conditional section.</sitem>

<sitem>1997-06-29 : TB : various edits</sitem>

<sitem>1997-06-29 : CMSMcQ : further changes:

Suppress old FINAL EDIT comments and some dead material.

Revise occurrences of % in grammar to exploit Henry Thompson's pun,

especially markupdecl and attdef.

Remove RMD requirement relating to element content (?).

</sitem>

<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:

Add text for draconian error handling (introduce

the term Fatal Error).

RE deleta est (changing wording from 

original announcement to restrict the requirement to validating

parsers).

Tag definition of validating processor and link to it.

Add colon as name character.

Change def of %operator.

Change standard definitions of lt, gt, amp.

Strip leading zeros from #x00nn forms.</sitem>

<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors

found in last night's proofreading.  Reverse course once more on

well-formed:   Webster's Second hyphenates it, and that's enough

for me.</sitem>

<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>

<sitem>1997-03-31 : Tim Bray : many changes</sitem>

<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),

some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous

declarations.  Changed Ident element to accept def attribute.

Allow normalization of Unicode characters.  move def of systemliteral

into section on literals.</sitem>

<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from

Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,

Paul Grosso, and self.  Among other things:  give in on "well formed"

(Terry is right), tentatively rename QuotedCData as AttValue

and Literal as EntityValue to be more informative, since attribute

values are the <emph>only</emph> place QuotedCData was used, and

vice versa for entity text and Literal. (I'd call it Entity Text, 

but 8879 uses that name for both internal and external entities.)</sitem>

<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply

my changes dated 03-20 and 03-21.  Normalize old 'may not' to 'must not'

except in the one case where it meant 'may or may not'.</sitem>

<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago

to Vancouver</sitem>

<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.

</sitem>

<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>

<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for

WWW conference April 1997:  restore some of the internal entity 

references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;

and define nbsp as &amp;#160;, and refill a lot of paragraphs for

legibility.</sitem>

<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:

Add list type of NUMBERED and change most lists either to

BULLETS or to NUMBERED.

Suppress QuotedNames, Names (not used).

Correct trivial-grammar doc type decl.

Rename 'marked section' as 'CDATA section' passim.

Also edits from James Clark:

Define the set of characters from which [^abc] subtracts.

Charref should use just [0-9] not Digit.

Location info needs cleaner treatment:  remove?  (ERB

question).

One example of a PI has wrong pic.

Clarify discussion of encoding names.

Encoding failure should lead to unspecified results; don't

prescribe error recovery.

Don't require exposure of entity boundaries.

Ignore white space in element content.

Reserve entity names of the form u-NNNN.

Clarify relative URLs.

And some of my own:

Correct productions for content model:  model cannot

consist of a name, so "elements ::= cp" is no good.

</sitem>

<sitem>1996-11-11 : CMSMcQ : revise for style.

Add new rhs to entity declaration, for parameter entities.</sitem>

<sitem>1996-11-10 : CMSMcQ : revise for style.

Fix / complete section on names, characters.

Add sections on parameter entities, conditional sections.

Still to do:  Add compatibility note on deterministic content models.

Finish stylistic revision.</sitem>

<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>

<sitem>1996-10-30 : TB : Clean up term &amp; termdef.  Slip in

ERB decision re EMPTY.</sitem>

<sitem>1996-10-28 : TB : Change DTD.  Implement some of Michael's

suggestions.  Change comments back to //.  Introduce language for

XML namespace reservation.  Add section on white-space handling.

Lots more cleanup.</sitem>

<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB

decisions.  Characters are not integers.  Comments are /* */ not //.

Add bibliographic refs to 10646, HyTime, Unicode.

Rename old Cdata as MsData since it's <emph>only</emph> seen

in marked sections.  Call them attribute-value pairs not

name-value pairs, except once.  Internal subset is optional, needs

'?'.  Implied attributes should be signaled to the app, not

have values supplied by processor.</sitem>

<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;

introduce some EBNF for entity declarations.</sitem>

<sitem>1996-10-?? : TB : consistency check, fix up scraps so

they all parse, get formatter working, correct a few productions.</sitem>

<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and

organizational changes:

Replace a few literals with xmlpio and

pic entities, to make them consistent and ensure we can change pic

reliably when the ERB votes.

Drop paragraph on recognizers from notation section.

Add match, exact match to terminology.

Move old 2.2 XML Processors and Apps into intro.

Mention comments, PIs, and marked sections in discussion of

delimiter escaping.

Streamline discussion of doctype decl syntax.

Drop old section of 'PI syntax' for doctype decl, and add

section on partial-DTD summary PIs to end of Logical Structures

section.

Revise DSD syntax section to use Tim's subset-in-a-PI

mechanism.</sitem>

<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>

<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3

(Characters)</sitem>

<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,

at least temporarily, and revise quickly</sitem>

<sitem>1996-10-08 : TB : first major homogenization pass</sitem>

<sitem>1996-10-08 : TB : turn "current" attribute on div type into 

CDATA</sitem>

<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>

<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange

                            with Tim.</sitem>

<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>

<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>

<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,

do some housekeeping</sitem>

</slist>

</revisiondesc>

</header>

<body> 

<div1 id='sec-intro'>

<head>N,�N�/head>

<!--	    <div2 id='sec-scope'>

	      <head>i�u��/head> -->

<p>�_��0&markup;��ML(eXtensible Markup Language)o0�ermref def="dt-xml-doc">XML��/termref>h0D0F0��������n0��0���W0�L���tY0���0�0n0�\On0N萒0��Y0�0XMLo0�ML(j�N,�S&markup;���andard Generalized Markup Language)<bibref ref='ISO8879'/>n06RP�0_0&subset;h0Y0�0� �N�L���0�Z0SGML�<hk0i�TY0�0</p>

<p>XML���ermref def="dt-entity">�SO</termref>h0D0F0�aXSMOK0�j0��Oo0�arsed-data;�o0&unparsed-data;K0�j0�0&parsed-data;o0�ermref def="dt-character">�W[</termref>K0�j0��0N�0�fn0<termref def="dt-chardata">�W[��</termref>��bW0��0�ermref def="dt-markup">&markup;</termref>��bY0�0&markup;o0�fn0�a�0����s0֊t� �0d0D0f0n0��0h�0&{�Y0�0XMLo0�a�0����s0֊t� �0d0D0f0n06R}ag���0�_j����Y0�0</p>

<p><termdef id="dt-xml-proc" term="XML&processor;"><term>XML&processor;</term>h0D0F0�������0�0�0�L���0�0�0���s0� �0n0�������Y0�_0�k0(uD0�0 </termdef> <termdef id="dt-app" term="&application;">XML&processor;o0�0�0�0�0_0�k0�\OY0�S0h0�MR�h0W0�0�0�0�0<term>&application;</term>h0D0F00</termdef>S0n0&TR-or-Rec;o0�L&processor;L0L�0j0Q0�p0j0�j0D0/c�0���Y0�0d0~0��L��n0��0�����W0�pplication;k0��Y0��1X���Y0�0</p>

<!--	    </div2> -->

<div2 id='sec-origin-goals'>

<head>L}�Ss0�j</head>

<p>1996t^k0World Wide Web Consortium(W3C)n0-Nk0-�zW0_0XML\Omi��0�(�Ro0�GML��0��0��Oh0|Tp0�_0)L0�L��zvW0_00S0n0\Omi��0�n0p��0�n Microsystemsn0Jon BosakL0�0�0W3CL0D}T~W0�Ro0SGML\Omi��0�h0|Tp0�_0XML SIG(Special Interest Group)��Ln06R�k0^�^k0;mzvk0�;uW0_00

<!--JISg0o0? XML\Omi��0�n0�0���2�0:yY00-->Dan Connollyo0�i��0�n0W3Ck0J0Q0�#�}����_00</p>

<p>XMLn0-��vj��0:yY00<ulist>

<item><p>a) XMLo0�ternet
Ng0]0n0~0~0O(ug0M0�0</p></item>

<item><p>b) XMLo0�{�&application;�/e��0</p></item>

<item><p>c) XMLo0�MLh0��'`��d00</p></item>

<item><p>d) XML���tY0���0�0��S0h0o0�fg0j0Q0�p0j0�j0D00</p></item>

<item><p>e) XMLg0o0�0��0n0_j�g0M0�`0Q0\j0O0W0�0�X[(WW0j0D0S0h0��cY00</p></item>

<item><p>f) XML����0h0c0f0�0�Y0O0�Rk0t�0�Y0D00</p></item>

<item><p>g) XMLn0-��0�0�K0k0L�0j0Q0�p0j0�j0D00</p></item>

<item><p>h) XMLn0-��0�[�s0!|Tog0j0Q0�p0j0�j0D00</p></item>

<item><p>i) XML���fk0\Obg0M0�0</p></item>

<item><p>j) XMLg0o0�arkup;n0pe�n�Y0S0h0o0��0o0j0D00</p></item></ulist>

</p>

<p>XML,{&XML.version;&version;�t�0�0��tY0��{_j��0�0��_0�k0ASRj0�1Xo0�0&TR-or-Rec;�s0�#�0��<h(�W[(uh0W0f0�icode�s0ISO/IEC 10646�--* XXX for Uniform Resource Identifiers, *-->&language-identification;��(uh0W0f0�0���� RFC 1766�anguage-code;(uh0W0f0�O 639�0k0&country-code;(uh0W0f0�O 3166)g0�0f0:yY00</p>

<p>S0n0&version;n0XMLn0��<!-- (&doc.date;) -->o0��0��0�s0p��0�vh0Y0�0�����s0��
Nn0�a�9e	YW0j0D0P�0�uk0M�^W0f0��D00</p>

</div2>

<div2 id='sec-terminology'>

<head>��</head>

<p>XML����n0_0�k0O(uY0�(u�o0�0&TR-or-Rec;�g0��Y0�0!kk0:yY0��0�0�n0(u����Y0�_0��0XML&processor;n0�M0���Y0�_0�k0O(uY0�0

<glist>

<gitem>

<label>1.2.1 W0f0��D0(may)</label>

<def><p><termdef id="dt-may" term="W0f0��D0">i�TY0���o0XML&processor;o0��0�_0h0J0�k0�\OW0f0��D0L0�0h0J0�k0Y0���o0j0D00</termdef></p></def>

</gitem>

<gitem>

<label>1.2.2 W0j0Q0�p0j0�j0D0(must)</label>

<def><p>i�TY0���o0XML&processor;o0��0�_0h0J0�k0�\OY0�S0h0L0�BlU0��0]0F0g0j0Q0�p0�rror;h0Y0�0<!-- do NOT change this! this is what defines a violation ofa 'must' clause as 'an error'. -MSM -->

</p></def>

</gitem>

<gitem>

<label>1.2.3 &error;(error)</label>

<def><p><termdef id="dt-error" term="&error;">S0n0&TR-or-Rec;L0����GRk0��U�S0P}�o0��W0j0D00i�TY0�������o0�rror;�i�f01XJTW0f0��O0�rror;K0���W0f0��D00</termdef></p></def>

</gitem>

<gitem>

<label>1.2.4 &fatal-error;(fatal error)</label>

<def><p><termdef id="dt-fatal" term="&fatal-error;">i�TY0�<termref def="dt-xml-proc">XML&processor;</termref>L0i�j0Q0�p0j0�Z0�pplication;k01XJTW0j0Q0�p0j0�j0D0&error;0&fatal-error;�zv�W0_0B0h0�rocessor;o0�0��0&error;��Y0_0�k0���t��L�0f0��O0�rror;�zv�W0_04XTo0�0&error;�&application;k01XJTW0f0��D00&error;�k����Y0�_0�k0�rocessor;o0�Qt��(�W[���s0&markup;n0�W0_0�n0)��������pplication;k0!nW0f0��D00W0K0W0�^�atal-error;�i�_0��rocessor;o0�^n0�t��L�0f0o0j0�j0D00d0~0��rocessor;o0�[���s0��֊t� �0d0D0f0n0�1X��^n0��g0&application;k0!nW0�Q0f0o0j0�j0D00</termdef></p></def>

</gitem>

<gitem>

<label>1.2.5 &at-user-option;(at user option)</label>

<def><p>i�TY0�������o0��0�_0h0J0�k0/c��0f0��D0(may)�0/c��0j0O0f0o0j0�j0D0(must)(��Nn0��^�0��0)0]0n0h0J0�k0/c��04XTo0��0�_0/c�0�x�b�o0�&TY0�Kb��&user;k0��W0j0Q0�p0j0�j0D00</p></def>

</gitem>

<gitem>

<label>1.2.6 &validity;6R}(validity constraint)</label>

<def><p>Y0y0f0n0<termref def="dt-valid">&valid;j0</termref>XML��i�uY0��GR0&validity;6R}n0U�So0�rror;h0Y0�0&at-user-option;�ermref def="dt-validating">i<�0L�0XML&processor;</termref>o0�0&error;�1XJTW0j0Q0�p0j0�j0D00</p></def>

</gitem>

<gitem>

<label>1.2.7 &well-formed;6R}(well-formedness constraint)</label>

<def><p>Y0y0f0n0<termref def="dt-wellformed">&well-formed;</termref>n0XML��i�uY0��GR0&well-formed;6R}n0U�So0�ermref def="dt-fatal">&fatal-error;</termref>h0Y0�0</p></def>

</gitem>

<gitem>

<label>1.2.8 &match;(match)</label>

<def><p>a) <termdef id="dt-match" term="&match;">&string;�o0
TMRn0&match;0��0��d0n0&string;�o0
TMRo0�Ng0j0Q0�p0j0�j0D00ISO/IEC 10646k0J0D0f0�en0h�sL0��0�W[;�0p0�omposed-form;�s0�+&diacritical-mark;(�����0���0�)b__=��0�n0&string;�TX0h�sn0h0M0k0P�0�atch;Y0�0&at-user-option;�rocessor;o0�0�W[�j�b_k0ck�SW0f0��D00��0h0M00'Y�W[h0\�W[h0n0:S%R�Y0�0<!-- Note that no processing of characters with respect to case is part of the matching process. -->&lt;BR>b) &string;h0��-Nn0�GRh0n0&match;0B0�ub�GRK0�ubY0���0�0&string;L0^\Y0�h0M0�0&string;o0�0ub�GRk0&match;Y0�h0D0F00&lt;BR>c) ��h0���0�0n0&match;0B0�� }L0�itleref href='elementvalid'>� }n0&validity;</titleref>n06R}k0:yY0asTg0i�TY0�h0M0�0� }o0�0��0&match;Y0�h0D0F00</termdef></p></def>

</gitem>

<gitem>

<label>1.2.9 ��'`n0_0�(for compatibility)</label>

<def><p><termdef id="dt-compat" term="��'`n0_0�">XMLn0_j�B0c0f0�LL0SGMLh0��g0B0�S0h0��<�0�_0�`0Q0k0\eQU0���n00</termdef></p></def>

</gitem>

<gitem>

<label>1.2.10 �K�u'`n0_0�(for interoperability)</label>

<def><p><termdef id="dt-interop" term="�K�u'`n0_0�">�_g�o0�_0j0D0�hY��0&WebSGML;�RK0�X[(WY0�SGML&processor;L0�L���tg0M0���`�ؚ��_0�k0��eQ���n00</termdef></p></def>

</gitem>

</glist>

</p>

</div2>

</div1>

<!-- &Docs; -->

<div1 id='sec-documents'>

<head>��/head>

<p><termdef id="dt-xml-doc" term="XML��>

<!-- A textual object -->

S0n0&TR-or-Rec;g0��Y0�asTg0�ermref def="dt-wellformed">&well-formed;</termref>h0Y0�����������erm>XML��/term>h0D0F00&well-formed;n0XML���0k0�06R}ag���Y0�p0�ermref def="dt-valid">&valid;</termref>j0XML��Y0�0

</termdef></p>



<!-- why this div? -TB

<div2 id='sec-log-phys'> 

<head>Logical and Physical Structure</head> -->



<p>D0Z0�n0XML���t� �Ss0irt� �0�d00irt�k0o0�fo0�ermref def="dt-entity">�SO</termref>h0|Tv0XSMOK0�j0�0B0��SOo0�f�k0�n0�SO�+T�_0�k0�0�n0�SO�<termref def="dt-entref">�gq</termref>W0f0��D00���0� Y0j0�a0<termref def="dt-docent">��SO</termref>K0��~0�0֊t�k0o0�fo0���}�0��[�gq�s0�t}T�0+T0�0�Y0y0f0o0�f�g0f:y�j0&markup;k0�c0f0:yY00֊t� �Ss0irt� �0�itleref href="wf-entities">��/titleref>k0:yY0h0J0�k0�[k0eQ�P[k0j0c0f0D0j0Q0�p0j0�j0D00</p>



<!-- 

</div2> -->



<div2 id='sec-well-formed'>

<head>&well-formed;n0XML��/head>

<p><termdef id="dt-wellformed" term="&well-formed;">B0�����������L0�0D0Z0�K0n0h0M0�0�����������&well-formed;n0XML��|Tv00</termdef>

<ulist>

<item><p>a) hQSOh0W0f0�t def='NT-document'>document</nt>h0D0F0�0�0�d0ub�GRk0&match;Y0�0</p></item>

<item><p>b) S0n0&TR-or-Rec;g0��Y0��0f0n0&well-formed;6R}k0�F00</p>

</item>

<item><p>c) ]0�^0�n0<termref def='dt-parsedent'>&parsed-entity;</termref>L0�itleref href='wf-entities'>&well-formed;</titleref>h0j0�0</p></item>

</ulist></p>

<p>

<scrap lang='ebnf' id='document'>

<head>��/head>

<prod id='NT-document'><lhs>document</lhs>

<rhs><nt def='NT-prolog'>prolog</nt> 

<nt def='NT-element'>element</nt> 

<nt def='NT-Misc'>Misc</nt>*</rhs></prod>

</scrap>

</p>

<p><nt def="NT-document">document</nt>ub�GRk0&match;Y0�h0o0�0asTY0�0

<ulist>

<item><p>a) Nd0�Nn0<termref def="dt-element">� }</termref>�+T�0</p>

</item>



<!--* N.B. some readers (notably JC) find the following

paragraph awkward and redundant.  I agree it's logically redundant:

it *says* it is summarizing the logical implications of

matching the grammar, and that means by definition it's

logically redundant.  I don't think it's rhetorically

redundant or unnecessary, though, so I'm keeping it.  It

could however use some recasting when the editors are feeling

stronger. -MSM *-->



<item><p>b) <termdef id="dt-root" term="�0�� }"><term>�0�</term>�o0�� }h0D0F0� }L0Nd0`0Q0X[(WW0�0o0�0� }n0<termref def="dt-content">��</termref>k0+T~0�j0D00</termdef>S0��Yn0Y0y0f0n0� }o0�0����L0�n0� }n0��k0+T~0��p0�_Y0�B}����TX0� }n0��k0+T~0��0d0~0��}o0�Y���s0B}���k0�c0f0:SR���0P[� �0j0Y00

</p></item>

</ulist>

</p>

<p><termdef id="dt-parentchild" term="�� }/P[� }">S0��n0P}�h0W0f0�f�n0i0n0^�0�� }<code>C</code>k0�f0��0�n0� }<code>P</code>L0X[(WW0�ode>C</code>o0�ode>P</code>n0��k0+T~0��L0�ode>P</code>n0��k0+T~0���n0� }k0+T~0��S0h0o0j0D00S0n0h0M0�ode>P</code>�<code>C</code>n0<code>�</code>h0D0D0�ode>C</code>�<code>P</code>n0<code>P[</code>h0D0F00</termdef></p>

</div2>

<div2 id="charsets">

<head>�W[</head>

<p>



<!--The data stored in an XML <termref def="dt-entity">entity</termref> is

either <termref def="dt-text">parsed</termref> or <termref

def="dt-unparsed">unparsed</termref>. -->



<termdef id="dt-text" term="����">&parsed-entity;o0�erm>����</term>(<termref def="dt-character">�W[</termref>n0&Ns0g0B0c0f0�arkup;�o0�W[���h�0f0��D00)�+T�0</termdef><termdef id="dt-character" term="�W["><term>�W[</term>o0�0��n0g\XSMOg0B0c0f0�O/IEC 10646<bibref ref="ISO10646"/>k0��U0��0<!--Users may extend the ISO/IEC 10646 character repertoire by exploiting the private use areas. -->1�[Y0��W[o0�0���^&Ns0k0Unicode�s0ISO/IEC 10646L01�[Y0���W[h0Y0�0</termdef> 

<scrap lang="ebnf" id="char32">

<head>�W[n0��/head>

<prodgroup pcw2="4" pcw4="17.5" pcw5="11">

<prod id="NT-Char"><lhs>Char</lhs> 

<rhs>#x9 | #xA | #xD | [#x20-#D7FF] | [#xE000-#xFFFD] 

| [#x10000-#x10FFFF]</rhs> 

<com>�n0Unicode�W[0_0`0W0�urrogate-blocks;�FE�s0FFFFo0d�00</com>

</prod>

</prodgroup>

</scrap>

</p>

<p>&character-value;�������&{�Y0�_j�o0�OT0h0k0U�0f0��D00Y0y0f0n0XML&processor;o0�O/IEC 10646n0UTF-8&{��s0UTF-16&{���Q0�Q0j0Q0�p0j0�j0D00�d0n0i0a0�L0(uD0��f0D0�K0�f:yY0�_0�n0_j��0�n0&{����)R(uY0�_0�n0_j�o0�itleref href='charencoding'>�W[n0&{�</titleref>k0��0�0</p>

<p>i0n0&{����(uD0�K0k0��j0O0�O/IEC 10646n0�W[ƖTk0B0�Y0y0f0n0�W[o0�0UCS-4&code-value;<!-- bit string. -->h0I{�j0102�e�o0162�ek0�c0f0�qg0M0�0</p>

</div2>



<div2 id='sec-common-syn'>

<head>qQ�0���bP[</head>

 

<p>2.3g0o0�l�g0�O0O(uY0�D0O0d0K0n0�S���Y0�0</p>

<p><nt def="NT-S">S</nt> (zz}v)o0�0�0O0o0�en0&space-character;(#x20)�^��So0��K0�b�0



<scrap lang="ebnf" id='white'>

<head>zz}v</head>

<prodgroup pcw2="4" pcw4="17.5" pcw5="11">

<prod id='NT-S'><lhs>S</lhs>

<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>

</prod>

</prodgroup>

</scrap></p>

<p>��
N�[��etter;�[�o0�n0�W[k0R^�0�0&letter;o0�0�������o0h��vg0B0���W[(Nd0�o0�en0&combining-character;L0�0�O0S0h0�B0�0)�deographic;K0�b�0

<!-- 

Certain layout and format-control characters defined by ISO/IEC 10646 

should be ignored when recognizing identifiers; these are defined by the 

classes <nt def='NT-Ignorable'>Ignorable</nt> and <nt def='NT-

Extender'>Extender</nt>. 

-->

T��0k0J0Q0���n0�W[k0d0D0f0n0�hQj0��o0�itleref href='CharClasses'>�W[��0</titleref>k0�Y0��2�0��Y0�0</p>

<p><termdef id="dt-name" term="Name"><term>Name</term>o0�etter;�o0D0O0d0K0n0:SR��W[n0Nd0g0�~0��0�k0&letter;�[�0��N��0�o0��0�L0�O0(S0���
TMR�W[h0D0F00)0</termdef>&string;"<code>xml</code>"�o0<code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>k0&match;Y0��n0&string;g0�~0�
TMRo0�0&TR-or-Rec;n0�n0Hr�o0\egn0Hrg0n0j�Sn0_0�k0�}Y0�0

</p>

<note>

<p>XMLn0
TMRn0-Nn0��0o0�Rzz�g0n0��0_0�k0�}Y0�0��0n0asTo0�gn0B0�Bf�g0j�SY0��n0h0W0�0h0M0k0o0��vj0�vg0��0�O(uY0����Y0���L0uX0���`L0B0�0XMLg0�(uY0�
TMRzz�n0_j�L0�R�P[h0W0f0��k0��0�O(uY0�h0D0F0�<�0j0D00��
N�0o0�Rzz�n0��0Nd0h0W0f0�Yk0o0�Ln0
TMRn0-Ng0��0�O(uW0j0D0{0F0L0�D0S0h0�asTY0�0W0K0W0�L&processor;o0�R�W[h0W0f0��0��Q0�Q0�S0h0L0g~0W0D00

</p>

</note>

<p>

<nt def='NT-Nmtoken'>Nmtoken</nt> (
TMR&token;)o0�R�W[g0�bY0�Rh0Y0�0

<scrap lang='ebnf'>

<head>
TMR�s0&token;</head>

<!--

<prod id='NT-MiscName'><lhs>MiscName</lhs>

<rhs></rhs>

</prod>-->

<prod id='NT-NameChar'><lhs>NameChar</lhs>

<rhs><nt def="NT-Letter">Letter</nt> 

| <nt def='NT-Digit'>Digit</nt> 

<!--| <nt def='NT-MiscName'>MiscName</nt>-->

| '.' | '-' | '_' | ':'

| <nt def='NT-CombiningChar'>CombiningChar</nt> 

<!-- | <nt def='NT-Ignorable'>Ignorable</nt>  -->

| <nt def='NT-Extender'>Extender</nt></rhs>

</prod>

<prod id='NT-Name'><lhs>Name</lhs>

<rhs>(<nt def='NT-Letter'>Letter</nt> | '_' | ':')

(<nt def='NT-NameChar'>NameChar</nt>)*</rhs></prod>

<prod id='NT-Names'><lhs>Names</lhs>

<rhs><nt def='NT-Name'>Name</nt> 

(<nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>)*</rhs></prod>

<prod id='NT-Nmtoken'><lhs>Nmtoken</lhs>

<rhs>(<nt def='NT-NameChar'>NameChar</nt>)+</rhs></prod>

<prod id='NT-Nmtokens'><lhs>Nmtokens</lhs>

<rhs><nt def='NT-Nmtoken'>Nmtoken</nt> (<nt def='NT-S'>S</nt> <nt 

def='NT-Nmtoken'>Nmtoken</nt>)*</rhs></prod>

</scrap>

</p>

<p>&literal;��o0�u&{g0��_0&string;h0W0�0Rn0:SR�P[h0W0f0O(uY0�_(u&{o0+T~0j0D00&literal;o0��[SO(<nt def='NT-EntityValue'>EntityValue</nt>)�`$P(<nt def='NT-AttValue'>AttValue</nt>)��identifier;(<nt def="NT-SystemLiteral">SystemLiteral</nt>)n0��n0c�k0O(uY0�0�vk0�c0f0o0�iteral;hQSO��0-Nn0&markup;n0p�g�L�0�Z0k0�0��Y0�S0h0L0B0�(<nt def='NT-SkipLit'>SkipLit</nt>0)0

<scrap lang='ebnf'>

<head>&literal;</head>

<!-- is marked section end legal in entity values etc.?

James says yes.  Handbook page 392, sec. 10.4 seems to me to say no. 

If James is right, leave as is.  Otherwise, uncomment

the next comment and ... 

-->

<!--

<prod id='NT-EntityValue'><lhs>EntityValue</lhs>

<rhs>' " ' 

(([^%&amp;"] 

| <nt def='NT-PEReference'>PEReference</nt> 

| <nt def='NT-Reference'>Reference</nt>)*

- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))

' " ' 

</rhs>

<rhs>|&nbsp; 

" ' " 

(([^%&amp;'] 

| <nt def='NT-PEReference'>PEReference</nt> 

| <nt def='NT-Reference'>Reference</nt>)* 

- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))

" ' "</rhs>

</prod>

<prod id='NT-AttValue'><lhs>AttValue</lhs>

<rhs>'"' 

(([^&lt;&amp;"] 

| <nt def='NT-Reference'>Reference</nt>)* 

- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))

' " ' 

</rhs>

<rhs>|&nbsp; 

" ' " 

(([^&lt;&amp;'] 

| <nt def='NT-Reference'>Reference</nt>)* 

- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))

" ' "</rhs>

<wfc def="CleanAttrVals"/>

</prod>

-->

<!-- ... and comment out the following, down to ... -->

<prod id='NT-EntityValue'><lhs>EntityValue</lhs>

<rhs>' " ' 

([^%&amp;"] 

| <nt def='NT-PEReference'>PEReference</nt> 

| <nt def='NT-Reference'>Reference</nt>)*

' " ' 

</rhs>

<rhs>|&nbsp; 

" ' " 

([^%&amp;'] 

| <nt def='NT-PEReference'>PEReference</nt> 

| <nt def='NT-Reference'>Reference</nt>)* 

" ' "</rhs>

</prod>

<prod id='NT-AttValue'><lhs>AttValue</lhs>

<rhs>' " ' 

([^&lt;&amp;"] 

| <nt def='NT-Reference'>Reference</nt>)* 

' " ' 

</rhs>

<rhs>|&nbsp; 

" ' " 

([^&lt;&amp;'] 

| <nt def='NT-Reference'>Reference</nt>)* 

" ' "</rhs>

<!--<wfc def="WF-Attvaldelim"/>-->

</prod>

<!-- ... down to here. -->

<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>

<rhs><nt def='NT-SkipLit'>SkipLit</nt></rhs>

</prod>

<!-- <prod id="NT-URIchar"><lhs>URIchar</lhs>

<rhs><com>See <loc href="http://www.w3.org/XXX">XXX</loc></com>

</rhs></prod>

-->

<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>

<rhs>' " ' <nt def='NT-PubidChar'>PubidChar</nt>* 

' " ' 

| " ' " (<nt def='NT-PubidChar'>PubidChar</nt> - " ' ")* " ' "</rhs>

</prod>

<prod id="NT-PubidChar"><lhs>PubidChar</lhs>

<rhs>#x20 | #xD | #xA 

|&nbsp;[a-zA-Z0-9]

|&nbsp;[-'()+,./:=?]</rhs>

</prod>

<prod id="NT-SkipLit"><lhs>SkipLit</lhs>

<rhs>(' " ' [^"]* ' " ') 

|&nbsp;(" ' " [^']* " ' ")</rhs>

</prod>

<!-- alternate form, making ms end illegal: -->

<!-- 

<prod id="NT-SkipLit"><lhs>SkipLit</lhs>

<rhs>(' " ' ([^"]* - ([^"]* ']]&gt;' [^"]*)) ' " ') 

|&nbsp;(" ' " ([^']* - ([^']* ']]&gt;' [^']*)) " ' ")</rhs>

</prod>

-->

</scrap>

</p>

<!--

<wfcnote id="WF-Attvaldelim">

<head>Delimiters in Attribute Values</head>

<p>After the expansion of character and entity references,

an attribute value must not contain a "<code>&lt;</code>" 

or "<code>&amp;</code>" character unless that character was 

introduced by the expansion of a character reference 

or one of the entities &magicents;.</p>

</wfcnote>-->

<!--

This is not quite right:  &lt; should be legal, should it not?

Suppress this WFC until we get it right.

-->

<!-- Henry Thompson suggests (in substance, not form: the wording needs

to be clarified):

"Cooked Attribute values must not contain &lt; &amp; or the

quote which closed their uncooked literal,

unless arising from the expansion of a character reference or

magic reference

directly contained in their uncooked literal."

I'm not sure I agree with this rule, but it's at least coherent,

which is more than I can say for my attempt.

-->

</div2>



<div2 id='syntax'>

<head>�W[���s0&markup;</head>

<p><termref def='dt-text'>����</termref>o0�ermref def="dt-chardata">�W[��</termref>�s0&markup;L0�Y0��n0h0W0f0�bY0�0<termdef id="dt-markup" term="Markup"><term>&markup;</term>o0�ermref def="dt-stag">����</termref>�ermref def="dt-etag">B}���</termref>�ermref def="dt-empty">zz� }</termref>�ermref def="dt-entref">�SO�gq</termref>�ermref def="dt-charref">�W[�gq</termref>�ermref def="dt-comment">��0�</termref>�ermref def="dt-cdsection">CDATA����0</termref> n0:SR�P[�ermref def="dt-doctype">����/termref>�s0<termref def="dt-pi">�t}T�/termref>n0b_���0

</termdef>

</p>

<p><termdef id="dt-chardata" term="Character Data">&markup;g0o0j0D0Y0y0f0n0����o0�fn0<term>�W[��</term>��bY0�0</termdef></p>

<p>�����W[ (&amp;)�s0&left-angle-bracket; (&lt;)o0�arkup;n0:SR�P[h0W0f0�0<termref def="dt-comment">��0�</termref>�ermref def="dt-pi">�t}T�/termref>�0O0o0<termref def="dt-cdsection">CDATA����0</termref>�g0O(uY0�4XTk0<emph>`0Q0</emph>�0~0~0n0b_g0�W0f0�D00S0��n0�W[o0��[SO��0<termref def='dt-litentval'>&literal;�SO$P</termref>�k0��0f0��D00 s�0O0o0�itleref href='wf-entities'>&well-formed;n0�SO</titleref>k0�Y0�����gq0<!-- FINAL EDIT:  restore internal entity decl or leave it out. -->S0��n0�W[L0�n0�Rg0��j04XT�Pk0���W[�gq�o0&string;"<code>&amp;amp;</code>"�s0&string;"<code>&amp;lt;</code>"�O(uW0�ermref def="dt-escape">&escape;</termref>W0j0Q0�p0j0�j0D00&right-angle-bracket; (>) o0�tring;"<code>&amp;gt;</code>"�O(uW0f0h�sW0f0��D00��n0-Ng0R"<code>]]&gt;</code>"�O(uY0�h0M0o0�0L0�ermref def="dt-cdsection">CDATA����0</termref>n0B}��&markup;W0j0D0P�0�ermref def='dt-compat'>��'`n0_0�</termref>�code>&amp;gt;</code>"�o0�W[�gq�O(uW0�scape;W0j0Q0�p0j0�j0D00</p>



<p>� }n0��g0o0�[��o0�0j0�&markup;n0��:SR�P[�+T~0j0D0�n0&char-string;h0Y0�0CDATA����0g0o0�[��h0o0�ATA����0n0B}�:SR�P["<code>]]&gt;</code>"�+T~0j0D0�n0&char-string;h0Y0�0

</p>

<p>

^\'`$Pk0&single-quote;�s0&double-quote;�+T�_0�k0o0�0���0��o0&single-quote;(') o0�code>&amp;apos;</code>"h0W0f0h�sW0�ouble-quote;(")o0�code>&amp;quot;</code>"h0W0f0h�sY0�0

<scrap lang="ebnf">

<head>�W[��</head>

<prod id='NT-CharData'>

<lhs>CharData</lhs>

<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>

</prod>

</scrap>

</p>

</div2>

 

<div2 id='sec-comments'>

<head>��0�</head>

 

<p><termdef id="dt-comment" term="Comment"><term>��0�</term>o0�0<termref def='dt-markup'>&markup;</termref>n0Yj0�p0�fn0i0S0k0�f0��D00U0�k0�f���Qg0�lL01�04X@bk0�f0��D00

<!-- TB

except in a <termref def="dt-cdsection">CDATA section</termref>, i.e. within

<termref def="dt-elemcontent">element content</termref>, in 

<termref def="dt-mixed">mixed content</termref>, or in the prolog.  They must

not occur within declarations or tags. -->

��0�o0�fn0<termref def="dt-chardata">�W[��</termref>n0N�0o0j0D00XML&processor;o0�pplication;L0��0�n0��������S0h0���0W0f0��D0L0�0W0j0O0h0��D00

<termref def="dt-compat">��'`n0_0�</termref>�tring;"<code>--</code>" �ouble-hyphen;	��0��g0�f0o0j0�j0D00

<scrap lang="ebnf">

<head>��0�</head>

<prod id='NT-Comment'><lhs>Comment</lhs>

<rhs>'&lt;!--'

((<nt def='NT-Char'>Char</nt> - '-') 

| ('-' (<nt def='NT-Char'>Char</nt> - '-')))* 

'-->'</rhs>

<!--

<rhs>'&lt;!&como;' 

(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*)) 

'&comc;&gt;'</rhs> -->

</prod>

</scrap>

</termdef></p>

<p>��0�n0��!kk0:yY00

<eg>&lt;!&como; declarations for &lt;head> &amp; &lt;body> &comc;&gt;</eg>

</p>

</div2>



<div2 id='sec-pi'>

<head>�t}T�/head>

 

<p><termdef id="dt-pi" term="Processing instruction"><term>�t}T�/term>(PI)k0�c0f0�pplication;n0_0�n0}T�0��eQ��S0h0L0g0M0�0

 

<scrap lang="ebnf">

<head>�t}T�/head>

<prod id='NT-PI'><lhs>PI</lhs>

<rhs>'&lt;?' <nt def='NT-PITarget'>PITarget</nt> 

(<nt def='NT-S'>S</nt> 

(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*)))?

&pic;</rhs></prod>

<prod id='NT-PITarget'><lhs>PITarget</lhs>

<rhs><nt def='NT-Name'>Name</nt> - 

(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>

</prod>

</scrap></termdef>

PIo0�fn0<termref def="dt-chardata">�W[��</termref>n0N�0o0j0D0L0�pplication;k0!nU0�j0Q0�p0j0�j0D00PIo0�NL0!nU0��&application;�&identify;_0�k0O(uY0�&target; (<nt def='NT-PITarget'>PITarget</nt>) g0�~0�0&target;
T "<code>XML</code>"�code>xml</code>"j0i0o0�0&TR-or-Rec;n0�n0Hr�o0\egn0Hrn0�<hS(uk0�}Y0�0XMLn0<termref def='dt-notation'>�l</termref>_j���n0&target;���0�_0�k0O(uW0f0��D00

</p>

</div2>

 

<div2 id='sec-cdata-sect'>

<head>CDATA����0</head>

 

<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATA����0</term>o0�[��L0�Y0�h0S0�g0B0�p0�0k0�W0f0��D00S0�o0�0g0j0Q0�p0�arkup;h0W0f0�X�0��W[�+T��0��n0:S;u�&escape;Y0�n0k0O(uY0�0CDATA����0o0�tring;"<code>&lt;![CDATA[</code>"g0�~0��tring;

"<code>]]&gt;</code>"g0B}��0

<scrap lang="ebnf">

<head>CDATA����0</head>

<prod id='NT-CDSect'><lhs>CDSect</lhs>

<rhs><nt def='NT-CDStart'>CDStart</nt> 

<nt def='NT-CData'>CData</nt> 

<nt def='NT-CDEnd'>CDEnd</nt></rhs></prod>

<prod id='NT-CDStart'><lhs>CDStart</lhs>

<rhs>'&lt;![CDATA['</rhs>

</prod>

<prod id='NT-CData'><lhs>CData</lhs>



<rhs>(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))

</rhs>

</prod>

<prod id='NT-CDEnd'><lhs>CDEnd</lhs>

<rhs>']]&gt;'</rhs>

</prod>

</scrap>



CDATA����0�g0o0�nt def='NT-CDEnd'>CDEnd</nt>`0Q0�&markup;h0W0f0�X�0�n0g0�eft-angle-bracket;�s0����o0�0&literal;b__g0�W0f0�D00]0��o0�code>&amp;lt;</code>"�s0"<code>&amp;amp;</code>"�O(uW0f0&escape;Y0���o0j0D00CDATA����0o0�0P[k0o0g0M0j0D00

</termdef>

</p>



<p>"<code>&lt;greeting></code>"�s0"<code>&lt;/greeting></code>"��ermref def='dt-markup'>&markup;</termref>g0o0j0O0�ermref def='dt-chardata'>�W[��</termref>h0W0f0�X�0�CDATA����0n0���0:yY00

<eg>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt;</eg>

</p>

</div2>

 

<div2 id='sec-prolog-dtd'>

<head>&prolog;�s0����/head>

 

<p><termdef id='dt-xmldecl' term='XML Declaration'>XML���uY0�XMLn0&version;�c�Y0�<term>XML��/term>g0��f0��O0�0F0Y0�n0L0g~0W0D00

</termdef>

</p>

<p>S0n0&TR-or-Rec;n0S0n0&version;k0i�TY0�S0h0�:yY0_0�k0o0�ersion;ju�"<code>1.0</code>" �O(uW0j0Q0�p0j0�j0D00B0����0&TR-or-Rec;n0S0n0&version;k0i�TW0j0D0h0M0�<code>1.0</code>"�O(uY0�n0o0�rror;h0Y0�0S0n0&TR-or-Rec;n0��n0&version;k0"<code>1.0</code>"�Yn0$P��NY0�S0h0L0�L\Omi��0�n0a�L0�Ln0\egn0&version;�\ObY0�S0h0n0�}�:yY0�Q0g0o0j0O0�bW0_0h0W0f0��S�Q0k0d0D0f0�[n0���O(uY0�S0h0n0�}�:yY0�Q0g0�j0D00\egn0&version;n0��`�d�YW0j0D0n0g0��04XT�R�j0&version;n0�X�0��0Y0�Kb�h0W0f0�0�bP[���Y0�0&processor;o0�0�W0f0D0j0D0&version;g0�0�NQ0W0_0���Q0�c0_0h0M0�rror;��wW0f0��D00

</p>

<p>XML��n0&markup;n0_j��a� �Ss0֊t� �0��0�S0h0�0k0^\'`�s0^\'`$Pn0�֊t� �0�#�0Q0�S0h0k0B0�0XMLo0�t� �0d0D0f0n06R}ag���Y0�_0��0B0�K0X0���U0�_0�aXSMO�O(ug0M0�_0�n0_j�h0W0f0�ermref def="dt-doctype">����/termref>���Y0�0<!-- old

The function of the markup in an XML document is to describe its

storage and logical structures, and associate attribute-value pairs with the

logical structure.

XML provides a

mechanism, the <termref def="dt-doctype">document type declaration</termref>, 

to

define constraints on that logical structure and to support the use of

predefined storage units. --><termdef id="dt-valid" term="Validity">XML��<term>&valid;</term>h0o0�f���0�a0�0����0:yY06R}ag��_0Y0S0h0h0Y0�0

</termdef></p>

<p>����0�fn0gRn0<termref def="dt-element">� }</termref>n0MRk0�j0Q0�p0j0�j0D00

<scrap lang="ebnf" id='xmldoc'>

<head>&prolog;</head>

<prodgroup pcw2="6" pcw4="17.5" pcw5="9">

<prod id='NT-prolog'><lhs>prolog</lhs>

<rhs><nt def='NT-XMLDecl'>XMLDecl</nt>? 

<nt def='NT-Misc'>Misc</nt>* 

(<nt def='NT-doctypedecl'>doctypedecl</nt> 

<nt def='NT-Misc'>Misc</nt>*)?</rhs></prod>

<prod id='NT-XMLDecl'><lhs>XMLDecl</lhs>

<rhs>&xmlpio; 

<nt def='NT-VersionInfo'>VersionInfo</nt> 

<nt def='NT-EncodingDecl'>EncodingDecl</nt>? 

<nt def='NT-SDDecl'>SDDecl</nt>? 

<nt def="NT-S">S</nt>? 

&pic;</rhs>

</prod>

<prod id='NT-VersionInfo'><lhs>VersionInfo</lhs>

<rhs><nt def="NT-S">S</nt> 'version' <nt def='NT-Eq'>Eq</nt> 

('"<nt def="NT-VersionNum">VersionNum</nt>"' 

| "'<nt def="NT-VersionNum">VersionNum</nt>'")</rhs>

</prod>

<prod id='NT-Eq'><lhs>Eq</lhs>

<rhs><nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?</rhs></prod>

<prod id="NT-VersionNum">

<lhs>VersionNum</lhs>

<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>

</prod>

<prod id='NT-Misc'><lhs>Misc</lhs>

<rhs><nt def='NT-Comment'>Comment</nt> | <nt def='NT-PI'>PI</nt> | 

<nt def='NT-S'>S</nt></rhs></prod>

</prodgroup>

</scrap></p>



<p>

�H0p0�0:yY0�hQj0XML���ermref def="dt-wellformed">&well-formed;</termref>g0B0�L0<termref def="dt-valid">&valid;</termref>g0o0j0D00

<eg><![CDATA[<?xml version="1.0"?>

<greeting>Hello, world!</greeting>

]]></eg>

!kn0��T�h0Y0�0

<eg><![CDATA[<greeting>Hello, world!</greeting>

]]></eg>

</p>

<p><termdef id="dt-doctype" term="Document Type Declaration">

XMLn0<term>����/term>o0�0���0n0_0�n0�����Y0�<termref def='dt-markupdecl'>&markup;��/termref>�+T�K0�0�gqY0�0S0n0����f����o0<term>DTD</term>h0D0F00����0�arkup;��0+T�`0Y�subset;(yr%Rj0.z^�0<termref def='dt-extent'>Y萟[SO</termref>)��gqg0M0�0��subset;k0�&markup;��0+T�S0h0�g0M0�0U0�k0�0!N����0Y0�0B0���DTDo0�en0&subset;�~0h0�_0�n0h0W0f0�bY0�0</termdef>

</p>

<p><termdef id="dt-markupdecl" term="markup declaration">

<term>&markup;��/term>o0�ermref def="dt-eldecl">� }���/termref>�termref def="dt-attdecl">^\'`�0���/termref>�ermref def="dt-entdecl">�SO��/termref>�o0<termref def="dt-notdecl">�l��/termref>h0Y0�0</termdef>!kk0:yY0&well-formed;6R}�s0&validity;6R}k0��Y0�L0�0�n0��0�ermref def='dt-PE'>&parameter;�SO</termref>�k0hQSO�o0N�0+T~0�f0��D00s�0D0��o0�itleref xml-link="simple" href="sec-physical-struct">irt� �/titleref>k0�Y0�����gqn0S0h00</p>

<scrap lang="ebnf" id='dtd'>

<head>����</head>

<prodgroup pcw2="6" pcw4="17.5" pcw5="9">

<prod id='NT-doctypedecl'><lhs>doctypedecl</lhs>

<rhs>'&lt;!DOCTYPE' <nt def='NT-S'>S</nt> 

<nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> 

<nt def='NT-ExternalID'>ExternalID</nt>)? 

<nt def='NT-S'>S</nt>? ('[' 

(<nt def='NT-markupdecl'>markupdecl</nt> 

| <nt def='NT-PEReference'>PEReference</nt> 

| <nt def='NT-S'>S</nt>)*

']' 

<nt def='NT-S'>S</nt>?)? '>'</rhs>

<vc def="vc-roottype"/>

<!--<vc def="vc-nonnullDTD"/>-->

</prod>

<!--

<prod id='NT-markupdecls'><lhs>markupdecls</lhs>

<rhs>

(<nt def='NT-S'>S</nt>?

<nt def='NT-markupdecl'>markupdecl</nt>

<nt def='NT-S'>S</nt>?)*

</rhs></prod>

-->

<prod id='NT-markupdecl'><lhs>markupdecl</lhs>

<rhs><nt def='NT-elementdecl'>elementdecl</nt> 

| <nt def='NT-AttlistDecl'>AttlistDecl</nt> 

| <nt def='NT-EntityDecl'>EntityDecl</nt> 

| <nt def='NT-NotationDecl'>NotationDecl</nt> 

| <nt def='NT-PI'>PI</nt> 

| <nt def='NT-Comment'>Comment</nt>

<!--| <nt def='NT-InternalPERef'>InternalPERef</nt> --></rhs>

<vc def='vc-PEinMarkupDecl'/>

<wfc def="wfc-PEinInternalSubset"/>

</prod>

<!--

<prod id="NT-InternalPERef"><lhs>InternalPERef</lhs>

<rhs><nt def="NT-PEReference">PEReference</nt></rhs>

<wfc def="wfc-integraldec"/>

</prod>

-->

</prodgroup>

</scrap>

<vcnote id="vc-roottype">

<head>&root;� }�</head>

<p>

����0J0Q0�<nt def='NT-Name'>Name</nt>o0�oot;� }n0�h0&match;W0j0Q0�p0j0�j0D00

</p>

</vcnote>

<!--

<vcnote id="vc-nonnullDTD">

<head>Non-null DTD</head>

<p>

The internal and external subsets of the DTD must not both

be empty.

</p>

</vcnote>

-->

<vcnote id='vc-PEinMarkupDecl'>

<head>��Ss0&parameter;�SOL0��k0eQ�P[�j0Y0S0h0</head>

<p>&parameter;�SO<termref def='dt-repltext'>n0&replacement-text;</termref>o0�arkup;��Qk0J0D0f0�[k0eQ�P[k0j0c0f0D0j0Q0�p0j0�j0D00d0~0��arkup;��<nt def='NT-markupdecl'>markupdecl</nt>)n0gR�o0g�n0�W[L0�ermref def='dt-PERef'>&parameter;�SO�gq</termref>n0�h0j0�&replacement-text;k0+T~0��p0�eh0�TX0&replacement-text;k0+T~0�j0Q0�p0j0�j0D00</p>

</vcnote>

<wfcnote id="wfc-PEinInternalSubset">

<head>��subset;�n0&parameter;�SO</head>

<p>DTDn0��subset;g0o0�ermref def='dt-PERef'>&parameter;�SO�gq</termref>o0�arkup;��0���04X@b`0Q0k0�g0M0�0&markup;��Qk0o0�g0M0j0D0(S0n06R}o0��parameter;�SO�o0Y�subset;g0n0�gqk0o0i�uW0j0D00)0

</p>

</wfcnote>

<p>

��subset;n0h0M0h0T�k0��subset;�s0DTDk0J0D0f0�gqY0��n0Y�parameter;�SOo0�}��S<nt def="NT-markupdecl">markupdecl</nt>k0�c0f01�0���n0��0�hQj0&markup;��0�bU0�j0Q0�p0j0�j0D00&markup;��0�k0o0�v�o0<termref def="dt-PERef">&parameter;�SO�gq</termref>�nD0f0��D00W0K0W0��subset;�o0Y�parameter;�SOn0��n0N�0�ermref def="dt-cond-section">ag�M0����0</termref>�O(uW0f0!q�W0f0��D00�萵0����g0o0�0o01�0�j0D00

<!--In the external subset, however,  parameter-entity references can

be used to replace constructs prefixed by "<code>%</code>" in a production of

the grammar, and <termref def="dt-cond-section">conditional sections</termref>

may occur.

In the internal subset, by contrast, conditional sections may not

occur and the only parameter-entity references 

allowed are those which match the non-terminal 

<nt def="NT-InternalPERef">InternalPERef</nt>

within the rule for <nt def="NT-doctypedecl">markupdecl</nt>. 

-->

<scrap id="ext-Subset">

<head>Y�subset;</head>

<prodgroup pcw2="6" pcw4="17.5" pcw5="9">

<prod id='NT-extSubset'><lhs>extSubset</lhs>

<rhs>(

<nt def='NT-markupdecl'>markupdecl</nt> 

| <nt def='NT-conditionalSect'>conditionalSect</nt> 

| <nt def='NT-PEReference'>PEReference</nt> 

| <nt def='NT-S'>S</nt>

)*</rhs>

</prod>

</prodgroup>

</scrap></p>

<p>Y�subset;�s0Y�parameter;�SOo0�0�g0o0�arameter;�SOL0&markup;��0<emph>�</emph>`0Q0g0j0O0�arkup;��0<emph>�</emph>g0��X�0���0F0�g0���subset;h0o0puj0�0

</p>

<p>����NM0n0XML�����0:yY00

<eg><![CDATA[<?xml version="1.0"?>

<!DOCTYPE greeting SYSTEM "hello.dtd">

<greeting>Hello, world!</greeting>

]]></eg>

<termref def="dt-sysid">����identifier;</termref> "<code>hello.dtd</code>"L0�fn0DTDn0URIh0j0�0</p>

<p>!kn0�n0h0J0���0@\@b�k0NH0�S0h0�g0M0�0

<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE greeting [

  <!ELEMENT greeting (#PCDATA)>

]>

<greeting>Hello, world!</greeting>

]]></eg>

Y�subset;�s0��subset;n0!N��O(uY0�h0M0o0��subset;L0Y�subset;��HQk0�W0_0h0�j0Y00<!--* 'is considered to'? boo. whazzat mean? -->S0�o0��subset;n0�SO�s0^\'`�0���0��subset;n0�SO�s0^\'`�0���0�*QHQY0�h0D0F0����_0�Y00

</p>

</div2>



<div2 id='sec-rmd'>

<head>&standalone;���/head>

<p><termref def="dt-xml-proc">XML&processor;</termref>o0�pplication;k0�����!nY0L0�arkup;��0�0��k0q_�NH0�S0h0L0B0�0^\'`n0&default-value;�s0�SO��0]0n0�h0Y0�0XML��0N�Rh0W0f0�g0M0�&standalone;���0�fL0�0&markup;��0X[(Wk0�c0f0q_��j0D0S0h0�cW0:yY0���0&markup;��0X[(WW0j0D0_0�k0�0L0D0H0�0	�
<scrap lang="ebnf" id='fulldtd'>

<head>&standalone;���/head>

<prodgroup pcw2="4" pcw4="19.5" pcw5="9">

<prod id='NT-SDDecl'><lhs>SDDecl</lhs>

<rhs>

<nt def="NT-S">S</nt> 

'standalone' <nt def='NT-Eq'>Eq</nt> "'" ('yes' | 'no') "'" 

</rhs>

<rhs>

| <nt def="NT-S">S</nt> 

'standalone' <nt def='NT-Eq'>Eq</nt> '"' ('yes' | 'no') '"'

</rhs><vc def='vc-check-rmd'/></prod>

</prodgroup>

</scrap></p>

<p>&standalone;���0J0D0f0o0, "<code>yes</code>"n0$Po0�ermref def='dt-docent'>��SO</termref>n0Y�0�Dn0Y�subset;�k0�0��subset;K0��gqU0��Y�0�0��SO�k0	�ML&processor;K0�&application;x0h0!nU0���1Xk0q_��&markup;��0X[(WW0j0D0S0h0�asTY0�0"<code>no</code>"n0$Po0�0Y�markup;��0X[(WY0�K0�0X[(WY0���`L0B0�S0h0�asTY0�0&standalone;���0�0<emph>��/emph>L0���0X[(WY0�K0i0F0K0�:yY0`0Q0k0�aY0�S0h00Y萟[SOx0n0�gqL0��k0X[(WW0f0D0f0��0�SOL0�萄vk0��0�f0D0�h0M0o0�fn0&standalone;n0�Kak0o0q_�NH0j0D00</p>



<p>Y�0&markup;��0X[(WW0j0Q0�p0�tandalone;���0asT��_0j0D00Y�0&markup;��0X[(WW0�tandalone;���0X[(WW0j0D04XTo0�ode>"no"</code> n0$Pn0-�[��[Y0�0</p>

<p>XML�� <code>standalone="no"</code> L0-�[U0�f0D0��n0o0�0��0�0�0&standalone;��	Y�g0M0�0���0��0�M�O&application;k0h0c0f0g~0W0D0K0�W0�j0D00</p>

<vcnote id='vc-check-rmd'>

<head>&standalone;���/head>

<p>&standalone;���0�0K0n0Y�markup;��0!kn0D0Z0�K0���0f0D0�h0M0o0�"<code>no</code>" ���j0Q0�p0j0�j0D00

<ulist>

<item><p>a) <termref def="dt-default">&default;</termref>$P�M0n0^\'`g0B0c0f0�0^\'`L0i�uU0��� }L0�`$P�c�[0Z0k0��k0���n00</p></item>

<item><p>b) &magicents;�Yn0�SOg0B0c0f0�0�SOk0��<termref def="dt-entref">�gq</termref>L0��k0�Y0��n00</p>

</item>

<item><p>c) $PL0<titleref href='AVNormalize'>ck�S</titleref>n0�h0j0�^\'`g0B0c0f0��Sn0P}�h0W0f0	YSY0�$PL0��g0^\'`k0c�U0���n00</p></item>

<item>

<p>d) <termref def="dt-elemcontent">� }��</termref>��d0� }�g0B0c0f0�vL0]0n0� }�n0D0Z0�K0n0�����k0����n00

</p></item>

</ulist>

</p>

</vcnote>

<p>&standalone;���NM0n0XML��0���0:yY00

<eg>&lt;?xml version="&XML.version;" standalone='yes'?></eg></p>

</div2>

<div2 id='sec-white-space'>

<head>zz}vn0�qbD0</head>

<p>XML����0�h0M0o0�arkup;��z_0[0�0�Y0O0Y0�_0�k0�z}v (&space;�0�s0zz}vL�0S0n0&TR-or-Rec;g0o0�}��Sn0<nt def='NT-S'>S</nt>g0h�0)�OF0h0�)Rj0S0h0L0YD00]0n0zz}vo0�^Y0�&version;n0��N�0W0f0+T��S0h0�a�j0D0n0�nf�0Y0�0W0K0W0�asTn0B0� zz}vg0B0c0f0�^Y0�&version;k0�U0j0Q0�p0j0�j0D0�n0�YD00�H0p0�Ss0����k0J0Q0�zz}vL0B0�0</p>

<p><termref def='dt-xml-proc'>XML&processor;</termref>o0�f�n0&markup;�Yn0Y0y0f0n0�W[��0~0~0	Y�Z0k0&application;k0!nU0j0Q0�p0j0�j0D00<termref def='dt-validating'>&validating;XML&processor;</termref>o0�ermref def="dt-elemcontent">� }��</termref>n0-Nn0zz}v��n0^�markup;�W[K0�:S%RW0�pplication;tPk0� }��n0-Nn0zz}vL0͑�g0j0D0h0D0F0S0h0�OH0j0Q0�p0j0�j0D00</p>

<p>

"<code>xml:space</code>"h0D0F0yr%Rj0<termref def='dt-attr'>^\'`</termref>���?ceQY0�S0h0k0�c0f0�v�͑�h0Y0�a�:yW0f0��D00S0n0^\'`�i�uY0�� }k0��zz}v��0�0��0L0͑�j0�n0h0W0f0qbF0S0h0��BlY0��0F0a�:yY00</p>

<p>&valid;j0��o0�0^\'`�O(uY0�4XTo0�0^\'`h0TX0�F0k0<termref def="dt-attdecl">��/termref>W0j0Q0�p0j0�j0D00��0�h0M0o0�0��$P�"<code>default</code>"�s0 "<code>preserve</code>"`0Q0h0Y0�<termref def='dt-enumerated'>Rc�</termref>g0j0Q0�p0j0�j0D00

</p>

<p>$P"<code>default</code>"o0�pplication;n0&default;n0zz}v�t�0���0� }k0i�u��0Y0�S0h0�asTY0�0$P"<code>preserve</code>"o0�pplication;L0Y0y0f0n0zz}v��X[Y0�S0h0�asTY0�0S0n0��0a��code>xml:space</code>" ^\'`n0%Rn0c�g0
N�W0j0D0P�0�}n0��k0��Y0y0f0n0� }k0i�uY0�h0��0�0</p>

<p>��<termref def='dt-root'>&root;� }</termref>k0d0D0f0o0�0^\'`n0$P�c�Y0�K0�0S0n0^\'`n0&default-value;L0B0�4XT�d�0f0o0�pplication;k0��zz}vn0�qbD0k0d0D0f0�0j0�a�:yU0j0D0h0��0�0</p>

<p>��!kk0:yY00

<eg><![CDATA[    <!ATTLIST poem   xml:space (default|preserve) 'preserve'>]]></eg>

</p>

</div2>

<div2 id='sec-line-ends'>

<head>L�gn0�qbD0</head>

<p>XMLn0<termref def='dt-parsedent'>��&parsed-entity;</termref>o0�^���0�n0����Qk0�X[U0���0��n0_0�k0�en0L�0RQ0�S0h0L0YD00S0��n0L�0��0�ode>CR</code> (#xD)���s0 <code>LF</code> (#xA)��n0UO�K0n0D}T[0k0�c0f0RQ0���0</p>

<p><termref def='dt-app'>&application;</termref>n0�t�!|XSk0Y0�_0���parsed-entity;�o0��parsed-entity;n0&literal;�SO$PL0�code>#xD#xA</code>" n0�[n0#�}h0Y0�&literal;�o0<code>#xD</code>n0XS�0&literal;�+T�4XTk0�ermref def='dt-xml-proc'>XML&processor;</termref>o0�pplication;k0XSNn0�W[<code>#xA</code>`0Q0�!nU0j0Q0�p0j0�j0D0(S0n0�to0�R�k0X[(WY0�9eL�0����㉐gn0MRk0ck�SY0�S0h0k0�c0f0�fk0��M0�0)0</p>

</div2>

<div2 id='sec-lang-tag'>

<head>&language-identification;</head>

<p>��tk0J0D0f0o0�0��-N�L0i0�j0�q��So0b__��0��f0D0�K0f:yY0�S0h0L0�0�d0S0h0L0YD00<!--S0S0g0O(uY0� �� h0D0F0��0asTo0�spa&#x00F1;ol" �s0"EBNF"n0��g0�:yU0��asTh0Y0�0--><!-- x00F1: spanish's small ntilde--></p>

<!--; S0n0�1Xo0�0B0R0�p0	�fn0�W[n0h�y�0k0�1X��_0�n0�y^�Ka }㉐g�s0������0�n0teb_k0q_��|0Y0��`L0B0�0-->

<p>XML��n0� }n0�d0���o0^\'`$Pk0J0D0f0O(uY0�<!--�q�o0b__-->��0c�Y0�_0�k0�code>xml:lang</code>" h0D0F0
TMRn0yr%Rj0<termref def="dt-attr">^\'`</termref>��f�k0?ceQW0f0��D00

<!--; S0n0^\'`o0XML��n0N�0W0f0�en0XML&application;n0�K�u'`�ؚ��_0�k0��Y0�0-->

^\'`n0$Po0�ibref ref="RFC1766"/> RFC1766�anguage-identification;n0_0�n0�� k0�c0f0��U0��&language-identification;��k0�F00

<scrap lang='ebnf'>

<head>&language-identification;</head>

<prod id='NT-LanguageID'><lhs>LanguageID</lhs>

<rhs><nt def='NT-Langcode'>Langcode</nt> 

('-' <nt def='NT-Subcode'>Subcode</nt>)*</rhs></prod>

<prod id='NT-Langcode'><lhs>Langcode</lhs>

<rhs><nt def='NT-ISO639Code'>ISO639Code</nt> | 

<nt def='NT-IanaCode'>IanaCode</nt> | 

<nt def='NT-UserCode'>UserCode</nt></rhs>

</prod>

<prod id='NT-ISO639Code'><lhs>ISO639Code</lhs>

<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>

<prod id='NT-IanaCode'><lhs>IanaCode</lhs>

<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>

<prod id='NT-UserCode'><lhs>UserCode</lhs>

<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>

<prod id='NT-Subcode'><lhs>Subcode</lhs>

<rhs>([a-z] | [A-Z])+</rhs></prod>

</scrap>

<nt def='NT-Langcode'>Langcode</nt>o0�0i0�g0��D00

<ulist>

<item><p>a) <bibref ref="ISO639"/> ��0
TMRh�sn0_0�n0�� g0��U0��2�W[n0&language-code;</p></item>

<item><p>b) Internet Assigned Numbers Authority (IANA)g0{v2�0�f0D0�&language-code;0S0�o0��0 "<code>i-</code>" (�o0"<code>I-</code>")g0�~0�0</p></item>

<item><p>c) &user;k0�c0f0����_0&language-code;�0��j0O(un0_0�k0�en0�O�L0��zl�_0��0S0��o0�_IANAk0J0D0f0j�S�o0{v2�0����h0n0���0�_0�k0��0"<code>x-</code>" �o0 "<code>X-</code>" g0���0</p></item>

</ulist></p>

<p><nt def='NT-Subcode'>Subcode</nt>o0�e�Oc0f0��D00gRn0����L0X[(WW0�0��L0�d0n0�W[K0�b�h0M0o0�ibref ref="ISO3166"/>ISO3166n0 ��h�0��(��) g0j0Q0�p0j0�j0D00gRn0����L03�W[�NK0�b�h0M0o0�t def='NT-Langcode'>Langcode</nt>n0HQ-�0�code>x-</code>" �o0 "<code>X-</code>"g0�~0�j0D0P�0�[W0_0��0������h0W0�NAk0{v2�0�_0�n0g0j0Q0�p0j0�j0D00</p>

<p>&language-code;o0�eW[g0n0h��0�ountry-code;o0�[(WY0�j0�p0)'Y�W[g0n0h��0caL�0Y0�0W0K0W0�L��k0J0Q0��n0
TMRh0o0puj0��0�n0$Pk0d0D0f0o0�eW[�s0\�W[n0:S%R�W0j0D0S0h0k0�aY0�S0h00</p>

<p>��!kk0:yY00

<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>

<p xml:lang="en-GB">What colour is it?</p>

<p xml:lang="en-US">What color is it?</p>

<sp who="Faust" desc='leise' xml:lang="de">

  <l>Habe nun, ach! Philosophie,</l>

  <l>Juristerei, und Medizin</l>

  <l>und leider auch Theologie</l>

  <l>]]><!-- x00DF german's es-zet; x00FC german's u-umlaut -->durchaus studiert mit hei&#223;em Bem&#252;h'n.<![CDATA[</l>

  </sp>]]></eg></p>

<!--<p>xml:lang n0$Po0�}n0���s0(^\'`n0&default-value;g0��j0D0P�0)��0����(CDATA)n0$P��d0]0n0� }x0n0Y0y0f0n0^\'`n0$Pk0d0D0f0�0!N�k0i�uY0�0-->

<p><code>xml:lang</code>g0��0�a��ode>xml:lang</code>n0%Rn0c�g0
N�j0D0P�0�[W0_0� }n0��k0+T�Y0y0f0n0� }k0i�uY0�0</p>

<!--B0�� }k0J0Q0� xml:lang ^\'`n0$PL0����f0J0�Z0�Dk0J0D0f0]0n0&default-value;L0����f0D0j0D04XT�0� }n0xml:lang ^\'`n0$Po0��}g0n0$PL0X[(WY0�4XTo0�0�_M0�P00 !kn0�k0J0Q0��d0n0<term>h0D0F0
TMRn0\�(u��h�0� }o0�l:langn0$Pk0�W0f0o0��N�0$P��d00



  <p xml:lang="en">Here the keywords are

  <term xml:lang="en">shift</term> and

  <term>reduce</term>. ...</p>



XML&processor;g0o0j0O0&application;L0�0^\'`$Pn0�bk0d0D0f0���d00

-->

<p>

&valid;j0��J0D0f0o0�0&TR-or-Rec;n0�n04X@bg0��Y0�h0J0��0^\'`��Z0��0j0Q0�p0j0�j0D00�^��0�0b_h0Y0�0

<eg>xml:lang  NMTOKEN  #IMPLIED</eg>

��j0�p0�[n0&default-value;�NH0f0��D00񂞊���h0Y0�f[u(un0��0��n0i��0o0�f�s0�0񂞊g0��0�p0�l:lang ^\'`�!kn0h0J0�k0��0�S0h0h0j0�0

<eg><![CDATA[    <!ATTLIST poem   xml:lang NMTOKEN 'fr'>

    <!ATTLIST gloss  xml:lang NMTOKEN 'en'>

    <!ATTLIST note   xml:lang NMTOKEN 'en'>]]></eg>

</p>

<!--

DTDn0-���0�0�0�����s0]0n0>muSO)k0SBdW0f0qbF0n0g0o0j0O0�0�0��s0��0T!kCQg0qbF0n0L0i�_j04XT��\'`h0T�k0���0�^\'`L0X[(WY0�p0	g(u`0h0`F0K0�W0�j0D00�0�� }k0J0D0f0�qU0�_0�o0�0�U0�_0�0�k0J0Q0�(;N�j0)��4XTk0�c0f0o0�e)�h�0� }���Y0�n0�g~0W0D00W0K0W0�0�n0&application;o0�0&TR-or-Rec;L0��Y0���h0Y0�0-->

</div2>

</div1>

<!-- &Elements; -->



<div1 id='sec-logical-struct'>

<head>֊t� �/head>



<p><termdef id="dt-element" term="Element">D0K0j0�<termref def="dt-xml-doc">XML��/termref>��0�Nn0<term>� }</term>�+T�0� }n0�Luo0, <termref def="dt-stag">����</termref>�s0<termref def="dt-etag">B}���</termref>k0�c0f0:SR�0� }L0<termref def="dt-empty">zz</termref>� }n0h0M0o0�ermref def="dt-eetag">zz� }��</termref>g0:yY00T0n0� }o0�0�d00� }�o0
TMR(qQ�identifier;(generic identifier)�o0GIh0|Tv0S0h0L0B0�0)k0�c0f0&identified;0� }o0�0d0K0n0^\'`��d0S0h0L0g0M0�0</termdef>^\'`o0�ermref def="dt-attrname">
TMR</termref>�s0<termref def="dt-attrval">$P</termref>��d00</p>



<scrap lang='ebnf'><head>� }</head>

<prod id='NT-element'><lhs>element</lhs>

<rhs><nt def='NT-EmptyElemTag'>EmptyElemTag</nt></rhs>

<rhs>| <nt def='NT-STag'>STag</nt> <nt def='NT-content'>content</nt> 

<nt def='NT-ETag'>ETag</nt></rhs><wfc def='GIMatch'/></prod>

</scrap>

<p>S0n0&TR-or-Rec;o0�}��s0^\'`n0asT�u���0(��k0�Y0�S0h0�d�0)
TMRk06R}�NH0j0D00_0`0W0��0<code>(('X'|'x')('M'|'m')('L'|'l'))</code>k0&match;Y0�
TMRo0�0Hr�o0��n0Hrn0S0n0&TR-or-Rec;g0n0j�Sn0_0�k0�}Y0�0</p>



<wfcnote id='GIMatch'><head>� }�n0&match;</head>

<p>� }n0B}���n0<nt def='NT-Name'>
TMR</nt>o0�0� }n0����k0J0Q0��h0&match;W0j0Q0�p0j0�j0D00</p>

</wfcnote>



<div2 id='sec-starttags'>

<head>�����N���s0zz� }��</head>

<p><termdef id="dt-stag" term="Start-Tag">zzg0j0D0�n0XML� }n0�~0�o0�erm>����</term>k0�c0f0&markup;Y0�0

<scrap lang='ebnf'><head>����</head>

<prodgroup pcw2="6" pcw4="15" pcw5="11.5">

<prod id='NT-STag'><lhs>STag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '>'</rhs><wfc def="uniqattspec"/></prod>

<prod id='NT-Attribute'><lhs>Attribute</lhs><rhs><nt def='NT-Name'>Name</nt> <nt def='NT-Eq'>Eq</nt> <nt def='NT-AttValue'>AttValue</nt></rhs><vc def='ValueType'/><wfc def='NoExternalRefs'/><wfc def='CleanAttrVals'/></prod>

</prodgroup>

</scrap>

�����s0B}����n0<nt def='NT-Name'>Name</nt>o0�}n0<term>�</term>�h�0Y00</termdef><termdef id="dt-attr" term="Attribute"><nt def='NT-Name'>Name</nt>�s0<nt def='NT-AttValue'>AttValue</nt>n0�� }n0<term>^\'`c�</term>h0D0D0</termdef>�ermdef id="dt-attrname" term="Attribute Name">P0n0�J0Q0�<nt def='NT-Name'>Name</nt>o0�erm>^\'`
T</term></termdef>�s0<termdef id="dt-attrval" term="Attribute Value"><nt def='NT-AttValue'>AttValue</nt>n0��(:SR�P[<code>'</code>�o0<code>"</code>n0�n0&string;)�<term>^\'`$P</term>h0D0F00</termdef></p>



<wfcnote id='uniqattspec'><head>^\'`c�n0Na'`</head>

<p>�����o0zz� }��g0o0�Nn0^\'`
TL0�N
N�W0f0o0j0�j0D00</p></wfcnote>

<vcnote id='ValueType'><head>^\'`$Pn0�</head>

<p>^\'`o0��0�f0D0j0Q0�p0j0�j0D00^\'`$Pn0�o0�0^\'`k0�f0��0_0�g0j0Q0�p0j0�j0D0(^\'`n0�k0d0D0f0o0�itleref href='AttDecls'>^\'`�0���/titleref>k0d0D0f0n0����gq0)0</p></vcnote>

<wfcnote id='NoExternalRefs'><head>Y萟[SOx0n0�gqL0j0D0S0h0</head>

<p>^\'`$Pk0o0��[SOx0n0���o0���j0�gq�+T�S0h0o0g0M0j0D00</p></wfcnote>

<wfcnote id='CleanAttrVals'><head>^\'`$Pk0<code>&lt;</code>�+T~0j0D0S0h0</head>

<p>^\'`$P�g0���o0���k0�gqY0��SO(<code>&amp;lt;</code>�d�00)n0<termref def='dt-repltext'>&replacement-text;</termref>k0o0�ode>&lt;</code>�+T�g0o0j0�j0D00</p></wfcnote>



<p>����n0���0:yY00

<eg>&lt;termdef id="dt-dog" term="dog"></eg></p>

<p><termdef id="dt-etag" term="End Tag">����g0�~0�� }n0B}��o0�erm>B}���</term>g0&markup;W0j0Q0�p0j0�j0D00S0n0B}���o0�_Y0�����n0� }�h0TX0
TMR��d00

<scrap lang='ebnf'><head>B}���</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-ETag'><lhs>ETag</lhs><rhs>'&lt;/' <nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>? '>'</rhs></prod></prodgroup></scrap></termdef></p>

<p>B}���n0���0:yY00

<eg>&lt;/termdef></eg></p>



<p><termdef id="dt-content" term="Content">� }n0����h0B}���h0n0�n0<termref def='dt-text'>����</termref>��0� }n0<term>��</term>h0D0F00

<scrap lang='ebnf'><head>� }n0��</head>

<prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-content'><lhs>content</lhs><rhs>(<nt def='NT-element'>element</nt> | <nt def='NT-CharData'>CharData</nt> | <nt def='NT-Reference'>Reference</nt> | <nt def='NT-CDSect'>CDSect</nt> | <nt def='NT-PI'>PI</nt> | <nt def='NT-Comment'>Comment</nt>)*</rhs></prod></prodgroup></scrap></termdef></p>



<p><termdef id="dt-empty" term="Empty">� }L0<term>zz</term>n0h0M0�0� }o0�_k0B}�����d0�����o0zz� }��g0h�sW0j0Q0�p0j0�j0D00</termdef><termdef id="dt-eetag" term="empty-element tag"><term>zz� }��</term>o0�0yr%Rj0b__�h0�0

<scrap lang='ebnf'><head>zz� }n0_0�n0��</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-EmptyElemTag'><lhs>EmptyElemTag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '/&gt;'</rhs><wfc def="uniqattspec"/></prod></prodgroup></scrap></termdef></p>



<!-- ���0 zz� }n0_0�n0��(tags for empty elements) o0 zz� }��(empty-element tag) h0Y0y0M0`0h0`D0~0Y0L0�0L0g0W0�F0K0 -->



<p>zz� }��o0�[��_0j0D0�n0� }n0h�sk0)R(ug0M0�0zz� }��g0h�sY0�� }��0�0�<kw>EMPTY</kw>�(uD0f0��0j0O0h0��D00</p>

<p>zz� }n0���0:yY00

<eg>&lt;IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" />&lt;br>&lt;/br>&lt;br/></eg></p>

</div2>



<div2 id='elemdecls'><head>� }��/head>

<p><termref def="dt-valid">&validity;</termref>��<�0�_0��}��Ss0^\'`�0���0(uD0f0<termref def="dt-xml-doc">XML��/termref>n0<termref def="dt-element">� }</termref>n0� �0�}��H0�S0h0L0g0M0�0</p>

<p>� }��0�}n0<termref def="dt-content">��</termref>k0d0D0f0n06R}h0Y0�0</p>

<p>� }��0�}n0<termref def="dt-parentchild">P[</termref>h0W0f0���0� }�k0d0D0f0�}��H0�S0h0L0YD00&at-user-option;�}��0�_0j0D0� }�L0�n0� }��0�c0f0�gqU0��p0�L&processor;o0�T��f0��D00W0K0W0�0o0&error;h0o0W0j0D00</p>



<p><termdef id="dt-eldecl" term="Element Type declaration"><term>� }���/term>o0�0b__�h0�0

<scrap lang='ebnf'><head>� }���/head><prodgroup pcw2="5.5" pcw4="18" pcw5="9">

<prod id='NT-elementdecl'><lhs>elementdecl</lhs>

<rhs>'&lt;!ELEMENT' <nt def='NT-S'>S</nt> 

<nt def='NT-Name'>Name</nt> 

<nt def='NT-S'>S</nt> 

<nt def='NT-contentspec'>contentspec</nt>

<nt def='NT-S'>S</nt>? '>'</rhs>

<vc def='EDUnique'/></prod>

<prod id='NT-contentspec'><lhs>contentspec</lhs>

<rhs>'EMPTY' 

| 'ANY' 

| <nt def='NT-Mixed'>Mixed</nt> 

| <nt def='NT-children'>children</nt>

</rhs>

<vc def='elementvalid'/>

</prod>

</prodgroup>

</scrap>

S0S0g0�t def='NT-Name'>Name</nt>o0��0�f0D0�� }n0�h0Y0�0</termdef></p>



<vcnote id='EDUnique'><head>� }��0Na'`</head>

<p>� }���N
N��0M0j0D00</p></vcnote>



<vcnote id='elementvalid'><head>� }n0&validity;</head>

<p>� }L0<!-- said to be -->&valid;h0o0�t def='NT-elementdecl'>elementdecl</nt>k0&match;Y0���0B0c0f0�0<nt def='NT-Name'>Name</nt>L0]0n0� }�h0&match;W0�0D0Z0�K0n0ag��_0Y04XTh0Y0�0<ulist>

<item><p>a) ��0<kw>EMPTY</kw>k0&match;W0�}L0<termref def='dt-content'>��</termref>��_0j0D00</p></item>

<item><p>b) ��0<nt def='NT-children'>children</nt>k0&match;W0�}n0<termref def="dt-parentchild">P[� }</termref>n0&Ns0L0�[�0�0ck�h�sk0�c0f0ubU0����0^\Y0�0</p></item>

<item><p>c) ��0<nt def='NT-Mixed'>mixed</nt>k0&match;W0�}n0��L0<termref def='dt-chardata'>�W[��</termref>�s0<termref def='dt-parentchild'>P[� }</termref>K0�j0�0P[� }n0� }�o0�}n0���0�0�Y0�
TMRk0&match;Y0�0</p></item>

<item><p>d) ��0<kw>ANY</kw>k0&match;W0�0<termref def='dt-parentchild'>P[� }</termref>n0� }����0�f0D0�0</p></item></ulist>



</p></vcnote>

<!-- with the new VC, I don't think the next few paras add anything -TWB

<p><termdef id="dt-model" term="content model">An element can declared using a <term>content model</term>, in which case its content can be categorized as <termref def="dt-elemcontent">element content</termref> or <termref def='dt-mixed'>mixed content</termref>, as explained below.</termdef></p>

<p>An element whose type declared using the keyword <kw>EMPTY</kw> must be <termref def="dt-empty">empty</termref> and may be tagged using an <termref def="dt-eetag">empty-element tag</termref> when it appears in the document.</p>

<p>If an element type is declared using the keyword <kw>ANY</kw>, then there are no validity constraints on its content:  it may contain <termref def='dt-parentchild'>child elements</termref> of any type and number, interspersed with character data.</p> -->



<p>� }��0���0:yY00

<eg>

&lt;!ELEMENT br EMPTY>

&lt;!ELEMENT p (#PCDATA|emph)* >

&lt;!ELEMENT %name.para; %content.para; >

&lt;!ELEMENT container ANY>

</eg></p>



<div3 id='sec-element-content'><head>� }��</head>



<p><termdef id='dt-elemcontent' term='Element content'>B0��n0� }L0<termref def='dt-parentchild'>P[</termref>� }`0Q0�+T�(�W[���+T~0j0D00)h0M0�0� }<termref def="dt-stag">�</termref>o0�erm>� }��</term>��d0�0F00</termdef>S0n04XT�}o0�[�0�0+T�0���0�0��}n0��s0P[� }n0��^�6R�Y0�!|XSj0��h0Y0�0S0n0��o0�ontent-particle;(<nt def='NT-cp'>cp</nt>s)K0�j0�0&content-particle;o0�R�ontent-particle;n0x�b�0��o0&content-particle;n0R�0�K0��bU0��0

<scrap lang='ebnf'><head>� }���0�/head><prodgroup pcw2="5.5" pcw4="16" pcw5="11">

<prod id='NT-children'><lhs>children</lhs><rhs>(<nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod><prod id='NT-cp'><lhs>cp</lhs><rhs>(<nt def='NT-Name'>Name</nt> | <nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod>

<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>

<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>

<!-- <prod id='NT-cps'><lhs>cps</lhs><rhs><nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> <nt def='NT-S'>S</nt>?</rhs></prod>

<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? <nt def='NT-ctokplus'>ctokplus</nt> (<nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-ctoks'>ctoks</nt>)* <nt def='NT-S'>S</nt>? ')'</rhs></prod>

<prod id="NT-ctokplus"><lhs>ctokplus</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)+</rhs></prod>

<prod id="NT-ctoks"><lhs>ctoks</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)*</rhs></prod>

<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>?<nt def='NT-stoks'>stoks</nt> (<nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-stoks'>stoks</nt>)*<nt def='NT-S'>S</nt>? ')'</rhs></prod>

<prod id="NT-stoks"><lhs>stoks</lhs><rhs><nt def="NT-cps">cps</nt>(',' <nt def="NT-cps">cps</nt>)*</rhs></prod>

-->

</prodgroup></scrap>

S0S0g0�t def='NT-Name'>Name</nt>o0�ermref def="dt-parentchild">P[</termref>h0W0f0�W0f0�D0� }n0��:yY00S0n0��g0x�b�0�L0��MOng0o0�b�0��n0D0Z0�n0&content-particle;�<termref def="dt-elemcontent">� }��</termref>n0-Nk0�f0�D00R�0�k0��&content-particle;o0�0�g0c�Y0��un0h0J0�k0�ermref def="dt-elemcontent">� }��</termref>k0�j0Q0�p0j0�j0D00
TMR�o0�0�n0�k0�Y0�����0n0�W[<!-- ���aracter��W[h03�0~0W0_0 -->o0�0��n0� }�o0&content-particle;L0�V�N�n0�pe(<code>+</code>)�V�N�n0�pe(<code>*</code>)�o00��0O0o01�(<code>?</code>)���0S0h0���Y0�0S0S0g0:yY0���s0asTo0�0&TR-or-Rec;k0J0Q0�ub�GRg0(uD0��n0h0TNh0Y0�0</p>



<!-- ���0�g0o0�ame�o0listn0�k0�O0�W[ L0 listn0����Y0� h0B0c0f0�men0����Y0�h0o0�f0B0�~0[0�0�kL0��h0�0~0Y00 -->



<p>� }n0��L0���0�0&match;Y0�n0o0��b�s0p~ԏW0o�P[k0W0_0L0c0f0�[n0-Nn0� }h0���0�Qn0� }�h0�&match;U0[0j0L0��[�0�Qn0Nd0n0���_0i0��h0M0k0P�00<termref def='dt-compat'>��'`n0_0�</termref>�f�n0� }L0�[�0�0J0Q0�� }�n0�en0�MOnh0&match;Y0�S0h0o0�rror;h0Y0�0s�}j0��k0d0D0f0o0�\�<titleref xml-link="simple" href="determinism">zl�����0�/titleref>n0�0�gq0

<!-- appendix <specref ref="determinism"/>. -->

<!-- appendix on deterministic content models. -->

</p>



<vcnote id='vc-PEinGroup'>

<head>��0��s0��0��SOL0��j0eQ�P[�j0W0f0D0�S0h0</head>

<p>��0��SOn0<termref def='dt-repltext'>&replacement-text;</termref>o0�arenthesis;g0��_0��0�k0�c0f0�[j0eQ�P[��bW0j0Q0�p0j0�j0D00d0~0��t def='NT-choice'>x�b</nt>�t def='NT-seq'>R</nt>�o0<nt def='NT-Mixed'>�</nt>�Tk0�eft-parenthesis;�o0&right-parenthesis;n0D0Z0�K0N�L0<termref def='dt-PERef'>��0��SO</termref>n0&replacement-text;k0+T��p0�e�TX0&replacement-text;k0+T~0�j0Q0�p0j0�j0D00</p>

<p><termref def='dt-interop'>�K�u'`n0_0�</termref>�0�0�SO�gqL0<nt def='NT-choice'>x�b</nt>�t def='NT-seq'>R</nt>�o0<nt def='NT-Mixed'>�</nt>��k0+T~0��p0�0&replacement-text;o0zzg0j0D0S0h0L0g~0W0O0�eplacement-text;n0HQ-�Ss0+g>\n0zz}vg0j0D0�W[o0�0��(<code>|</code>�o0<code>,</code>)g0j0D0�L0�D00

</p>

</vcnote>

<p>� }���0�0D0O0d0K0n0���0:yY00

<eg>&lt;!ELEMENT spec (front, body, back?)>

&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>

&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></eg></p>

</div3>



<div3 id='sec-mixed-content'>

<head>&mixed-content;</head>

 

<p><termdef id='dt-mixed' term='Mixed Content'>B0�� }�n0� }�k0�ermref def="dt-parentchild">P[</termref>� }k0�W0f0�W[��L0+T~0����`L0B0�h0M0�0� }<termref def='dt-stag'>�</termref>o0�erm>&mixed-content;</term>��d0h0D0F00</termdef>S0n04XT��}n0�k0d0D0f0n06R}L0X[(WW0f0��D0<!-- ���ay be constrained �XSk006R}U0��
0h03�0~0W0_00 -->L0��}n0�^�o0��pek0d0D0f0n06R}o0j0D0h0Y0�0

<scrap lang='ebnf'>

<head>&mixed-content;��/head>

<prodgroup pcw2="5.5" pcw4="16" pcw5="11">

<prod id='NT-Mixed'><lhs>Mixed</lhs>

<rhs>'(' <nt def='NT-S'>S</nt>? 

'#PCDATA'

(<nt def='NT-S'>S</nt>? 

'|' 

<nt def='NT-S'>S</nt>? 

<nt def='NT-Name'>Name</nt>)* 

<nt def='NT-S'>S</nt>? 

')*' </rhs>

<rhs>| '(' <nt def='NT-S'>S</nt>? '#PCDATA' <nt def='NT-S'>S</nt>? ')'

</rhs><vc def='vc-PEinGroup'/>

<vc def='vc-MixedChildrenUnique'/>

</prod>

<!--

<prod id="NT-Mtoks"><lhs>Mtoks</lhs>

<rhs><nt def="NT-Name">Name</nt>

(<nt def='NT-S'>S</nt>? 

'|' 

<nt def='NT-S'>S</nt>? 

<nt def="NT-Name">Name</nt>)*

</rhs>

</prod>

-->

</prodgroup>

</scrap>

S0S0g0�t def='NT-Name'>Name</nt>o0�0W0f0�W0f0��D0� }n0��:yY00

</p>



<vcnote id='vc-MixedChildrenUnique'>

<head>� }�n0͑�0�bk</head>

<p>Nd0n0&mixed-content;��Qk0�0
TMRL0�e��W0f0o0j0�j0D00

</p></vcnote>

<p>&mixed-content;��0���0:yY00

<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>

&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >

&lt;!ELEMENT b (#PCDATA)></eg></p>

</div3>

</div2>





<div2 id='attdecls'>

<head>^\'`�0���/head>

<p>

<termref def="dt-attr">^\'`</termref>o0�R�s0$Pn0�<termref def="dt-element">� }</termref>k0�#�NQ0�_0�k0(uD0�0^\'`c�o0�ermref def="dt-stag">����</termref>�o0<termref def="dt-eetag">zz� }</termref>���g0`0Q0��0Y0�0W0_0L0c0f0�`��X�0�_0�n0ub�GRo0�itleref href='sec-starttags'>����</titleref>k0d0D0f0n0��g0:yY00^\'`�0���0�0�vg0(uD0�0

<ulist>

<item><p>a) B0�� }�k0i�uY0�^\'`n0ƖT���Y0�0</p></item>

<item><p>b) ^\'`x0n0�6R}�-�[Y0�0</p></item>

<item><p>c) ^\'`n0<termref def="dt-default">&default-value;</termref>���Y0�0</p></item>

</ulist>

</p>

<p>

<termdef id="dt-attdecl" term="Attribute-List Declaration">

<term>^\'`�0���/term>o0�0� }�h0�#�NQ0��_0T^\'`k0��R�0���s0(X[(WY0�p0)&default-value;���Y0�0

<scrap lang='ebnf'>

<head>^\'`�0���/head>

<prod id='NT-AttlistDecl'><lhs>AttlistDecl</lhs>

<rhs>'&lt;!ATTLIST' <nt def='NT-S'>S</nt> 

<nt def='NT-Name'>Name</nt> 

<nt def='NT-AttDef'>AttDef</nt>*

<nt def='NT-S'>S</nt>? '&gt;'</rhs>

</prod>

<prod id='NT-AttDef'><lhs>AttDef</lhs>

<rhs><nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt> 

<nt def='NT-S'>S</nt> <nt def='NT-AttType'>AttType</nt> 

<nt def='NT-S'>S</nt> <nt def='NT-Default'>Default</nt></rhs>

</prod>

</scrap>



<nt def='NT-AttlistDecl'>AttlistDecl</nt>�GRk0X[(WY0�<nt def="NT-Name">Name</nt>o0�}�n0
TMRh0Y0�0&at-user-option;��0f0D0j0D0� }�k0�^\'`���0_0j0�p0�L&processor;o0�T��f0��D00W0K0W0�0o0&error;h0o0W0j0D00

<nt def='NT-AttDef'>AttDef</nt>�GRk0J0Q0�<nt def='NT-Name'>Name</nt>o0�`n0
TMRh0Y0�0

</termdef>

</p>

<p>

B0�� }k0�f0�en0<nt def='NT-AttlistDecl'>AttlistDecl</nt>�NH0�4XT�0�Y0y0f0n0��o0��Y0�0B0�� }�n0TX0^\'`k0�en0���NH0�4XTk0o0�Rn0��0	g�h0W0�0��0!q�Y0�0<termref def='dt-interop'>�K�u'`n0_0�k0</termref>�Dn0\Ob�0�0� }�k0o0ؚ0Nd0n0^\'`�0���0K0NH0j0D0�0^\'`
Tk0o0ؚ0Nd0n0^\'`��W0K0NH0j0D0�0Y0y0f0n0^\'`�0���0o0\j0O0h0�Nd0n0^\'`���NH0��0F0x�b�W0f0��D00�K�u'`n0_0�k0�L&processor;o0�t-user-option;�0� }�k0�en0^\'`�0���0NH0_0��0^\'`k0�en0^\'`���NH0_0�W0_0h0M0k0�T��f0��D00W0K0W0�0o0�rror;h0o0W0j0D00

</p>



<div3 id='sec-attribute-types'>

<head>^\'`n0�</head>

<p>

XMLn0^\'`n0�o0�z^�0Y0�0S0��o0�tring;��oken;S��s0Rc�h0Y0�0&string;�o0�0W0f0�n0&string;�h0�0&token;S�o0�0:yY0W[�Ss0asTk0�Y0��0j06R}��d00



<scrap lang='ebnf'>

<head>Attribute Types</head>

<prodgroup pcw4="14" pcw5="11.5">

<prod id='NT-AttType'><lhs>AttType</lhs>

<rhs><nt def='NT-StringType'>StringType</nt> 

| <nt def='NT-TokenizedType'>TokenizedType</nt> 

| <nt def='NT-EnumeratedType'>EnumeratedType</nt>

</rhs>

</prod>

<prod id='NT-StringType'><lhs>StringType</lhs>

<rhs>'CDATA'</rhs>

</prod>

<prod id='NT-TokenizedType'><lhs>TokenizedType</lhs>

<rhs>'ID'</rhs>

<vc def='id'/>

<vc def='one-id-per-el'/>

<vc def='id-default'/>

<rhs>| 'IDREF'</rhs>

<vc def='idref'/>

<rhs>| 'IDREFS'</rhs>

<vc def='idref'/>

<rhs>| 'ENTITY'</rhs>

<vc def='entname'/>

<rhs>| 'ENTITIES'</rhs>

<vc def='entname'/>

<rhs>| 'NMTOKEN'</rhs>

<vc def='nmtok'/>

<rhs>| 'NMTOKENS'</rhs>

<vc def='nmtok'/></prod>

</prodgroup>

</scrap>

</p>



<vcnote id='id' >

<head>ID</head>

<p>

S0n0�n0$Po0�b�GR<code>Name</code>k0&match;W0j0Q0�p0j0�j0D00Nd0n0XML��g0o0�0n0
TMRL0�0�n0$Ph0W0f0�e��f0o0j0�j0D00d0~0��n0$Po0�}�Nak0&identify;W0j0Q0�p0j0�j0D00

</p>

</vcnote>

<vcnote id='one-id-per-el'>

<head>1� }T0h0k01ID</head>

<p>

� }�o0�en0ID^\'`$P��c0f0o0j0�j0D00

</p>

</vcnote>

<vcnote id='id-default'>

<head>ID^\'`n0&default;</head>

<p>

ID^\'`o0�efault;h0W0f0�ode>#IMPLIED</code>�o0<code>#REQUIRED</code>���0j0Q0�p0j0�j0D00

</p>

</vcnote>

<vcnote id='idref'>

<head>IDREF</head>

<p>

<kw>IDREF</kw>�n0$Po0�b�GR<nt def="NT-Name">Name</nt>k0&match;W0j0Q0�p0j0�j0D00<kw>IDREFS</kw>�n0$Po0�b�GR<nt def="NT-Names">Names</nt>k0&match;W0j0Q0�p0j0�j0D00T0n0<nt def='NT-Name'>Name</nt>o0�L��k0X[(WY0�� }n0ID^\'`n0$Ph0&match;W0j0Q0�p0j0�j0D00d0~0��w>IDREF</kw>n0$Po0�0ID^\'`n0$Ph0&match;W0j0Q0�p0j0�j0D00

</p>

</vcnote>

<vcnote id='entname'>

<head>�SO
T</head>

<p>

<kw>ENTITY</kw>�n0$Po0�b�GR<nt def="NT-Name">Name</nt>k0&match;W0j0Q0�p0j0�j0D00<kw>ENTITIES</kw>�n0$Po0�b�GR<nt def="NT-Names">Names</nt>k0&match;W0j0Q0�p0j0�j0D00T0n0<nt def="NT-Name">Name</nt>o0�ermref def="dt-doctype">DTD</termref>g0��0�<termref def="dt-unparsed">&unparsed-entity;</termref>h0&match;W0j0Q0�p0j0�j0D00

</p>

</vcnote>

<vcnote id='nmtok'>

<head>
TMR&token;</head>

<p>

<kw>NMTOKEN</kw>�n0$Po0�}��S<termref def="NT-Nmtoken">Nmtoken</termref>h0&match;Y0�&string;K0��bU0�j0Q0�p0j0�j0D00<kw>NMTOKENS</kw>�n0$Po0�}��S<termref def="NT-Nmtokens">Nmtokens</termref>h0&match;Y0�&string;K0��bU0�j0Q0�p0j0�j0D00

</p>

</vcnote>

<p>

XML&processor;o0�pplication;k0^\'`$P�!nY0MRk0�itleref href="AVNormalize">^\'`$Pn0ck�S</titleref>g0��Y0�h0J0�k0�`$P�ck�SW0j0Q0�p0j0�j0D00

</p>

<p>

<termdef id='dt-enumerated' term='Enumerated Attribute Values'><term>Rc�n0^\'`</term>o0��0_0$Pn0Nd0���S0h0L0g0M0�0</termdef>Rc�k0o0�z^�0�0



<scrap lang='ebnf'>

<head>Rc^\'`n0�</head>

<prod id='NT-EnumeratedType'><lhs>EnumeratedType</lhs> 

<rhs><nt def='NT-NotationType'>NotationType</nt> 

| <nt def='NT-Enumeration'>Enumeration</nt>

</rhs></prod>

<prod id='NT-NotationType'><lhs>NotationType</lhs> 

<rhs>'NOTATION' 

<nt def='NT-S'>S</nt> 

'(' 

<nt def='NT-S'>S</nt>?  

<nt def='NT-Name'>Name</nt> 

(<nt def='NT-S'>S</nt>? '|' <nt def='NT-Name'>Name</nt>)*

<nt def='NT-S'>S</nt>? ')'

</rhs>

<vc def='notatn' /></prod>

<prod id='NT-Enumeration'><lhs>Enumeration</lhs> 

<rhs>'(' <nt def='NT-S'>S</nt>?

<nt def='NT-Nmtoken'>Nmtoken</nt> 

(<nt def='NT-S'>S</nt>? '|' 

<nt def='NT-S'>S</nt>?  

<nt def='NT-Nmtoken'>Nmtoken</nt>)* 

<nt def='NT-S'>S</nt>? 

')'</rhs> 

<vc def='enum'/></prod>

</scrap>

</p>



<vcnote id='notatn'>

<head>�l^\'`</head>

<p>S0n0�n0$Po0��0f0D0�<titleref href='Notations'>�l</titleref>n0
TMRn0Nd0h0&match;W0j0Q0�p0j0�j0D00d0~0���0X[(WY0��l
To0�0f0��0�f0D0j0Q0�p0j0�j0D00

</p>

</vcnote>

<vcnote id='enum'>

<head>Rc</head>

<p>

S0n0�n0$Po0��0X[(WY0�<nt def='NT-Nmtoken'>Nmtoken</nt>&token;n0Nd0h0&match;W0j0Q0�p0j0�j0D00

</p>

</vcnote>

<p>

<termref def='dt-interop'>�K�u'`n0_0�</termref>�0<nt def='NT-Nmtoken'>Nmtoken</nt>o0�N� }�n0Rc�n0^\'`h0W0f0�e��j0D0�L0�D00

</p>

</div3>



<div3 id='sec-attr-defaults'>

<head>^\'`n0&default;</head>

 

<p>

<termref def="dt-attdecl">^\'`��/termref>o0�`n0c�L0��0i0F0K0k0d0D0f0n0�1X�NH0�0��0j0D04XTk0o0�f�g0^\'`�c�W0j0D0h0M0�L&processor;n0�t��n0�1X�NH0�0



<scrap lang='ebnf'>

<head>^\'`n0&default;</head>

<prodgroup pcw4="14" pcw5="11.5">

<prod id='NT-Default'><lhs>Default</lhs>

<rhs>'#REQUIRED' 

|&nbsp;'#IMPLIED' </rhs>

<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>

<vc def='defattrvalid'/>

<wfc def="CleanAttrVals"/>

</prod>

</prodgroup>

</scrap>

<!-- improved by bosak

<scrap lang='ebnf'>

<head>Attribute Defaults</head>

<prod id='NT-Default'><lhs>Default</lhs>

<rhs>'#REQUIRED' 

|&nbsp;'#IMPLIED' </rhs>

<vc def='defattrvalid'/>

<wfc def="CleanAttrVals"/>

<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>

</prod>

</scrap>-->

</p>



<vcnote id='defattrvalid'>

<head>^\'`&default;n0ckW0U0</head>

<p>

��0_0&default-value;o0��0_0^\'`�n0W[�R}��_0U0j0Q0�p0j0�j0D00

</p>

</vcnote>

<p>

<kw>#REQUIRED</kw>�c�W0_0h0M0�0� }�n0<termref def="dt-stag">����</termref>g0B0c0f0�0^\'`k0$P�NH0j0D0�n0�XML&processor;L0�d0Q0_0j0�p0�0��<termref def="dt-valid">&valid;</termref>h0o0W0j0D00<kw>#IMPLIED</kw>�c�W0_0h0M0�0^\'`�weuW0_0��L&processor;o0�`$P�c�W0j0D0S0h0����0��0k0OH0j0Q0�p0j0�j0D00S0n0h0M0�pplication;n0/c�0k0d0D0f0n06R}o0j0D00

</p>

<p>

<termdef id="dt-default" term="Attribute Default">

^\'`L0<kw>#REQUIRED</kw>g0�<kw>#IMPLIED</kw>g0�j0D0h0M0k0o0�t def='NT-AttValue'>AttValue</nt>n0$PL0�erm>&default-value;</term>h0j0�0<kw>#FIXED</kw>n04XT�efault-value;h0puj0�$PL0c�U0��p0�0���ermref def="dt-valid">&valid;</termref>h0W0j0D00&default-value;���0f0D0�4XT�0^\'`n0weu��d0Q0_0���0_0&default-value;�^\'`$Pk0c�W0f0D0�h0W0f0�L&processor;o0/c��0S0h0L0g~0W0D00

</termdef></p>



<p>^\'`�0���0���0:yY00



<eg>&lt;!ATTLIST termdef

          id      ID      #REQUIRED

          name    CDATA   #IMPLIED>

&lt;!ATTLIST list

          type    (bullets|ordered|glossary)  "ordered">

&lt;!ATTLIST form

          method  CDATA   #FIXED "POST"></eg></p>

</div3>



<div3 id='AVNormalize'>

<head>^\'`$Pn0ck�S</head>

<p>

XML&processor;o0�`$P�&application;k0!nY0MRk0�0h0J0�k0ck�SW0j0Q0�p0j0�j0D00



<ulist>

<item>

<p>a) ~0Z0�`$P�s0]0n0-Nn0�SO�g0�g�o0L�XLu(�o0����0�c0f0o0�0��Lu)h0W0f0O���&string;��pace-character;(#x20)Nd0k0nM0�H0j0Q0�p0j0�j0D0(0<titleref xml-link="simple" href="sec-line-ends">L�gn0qbD0</titleref>
0��gqn0S0h00)0

</p></item>

<item>

<p>b) !kk0�[�gq�s0��parsed-entity;x0n0�gqo0��0j0Q0�p0j0�j0D00Y萟[SOx0n0�gqo0�rror;h0Y0�0

</p></item>

<item>

<p>c) g�k0�`n0�L0<kw>CDATA</kw>g0j0Q0�p0�v&string;o0�0f0&space-character;(#x20)Nd0k0ck�SW0�0n0zz}v�W[o0��0j0Q0�p0j0�j0D00

</p></item>

</ulist>



&non-validating;&parser;o0��0�d0K0�j0D0^\'`o0�0f0�w>CDATA</kw>���0f0D0�h0W0f0qbF0S0h0L0g~0W0D00</p>

</div3>

</div2>



<div2 id='sec-condition-sect'>

<head>ag�M0����0</head>

<p>

<termdef id='dt-cond-section' term='conditional section'>

<term>ag�M0����0</term>h0o0�ermref def='dt-doctype'>����0Y�subset;</termref>n0N�0W0�_���n0c�k0�c0f0�Dn0֊t� �0+T�_0��0_0�Y0��Rh0Y0�0

</termdef>



<scrap lang='ebnf'>

<head>ag�M0����0</head>

<prodgroup pcw2="9" pcw4="14.5">

<prod id='NT-conditionalSect'><lhs>conditionalSect</lhs>

<rhs><nt def='NT-includeSect'>includeSect</nt>

| <nt def='NT-ignoreSect'>ignoreSect</nt>

</rhs>

</prod>

<prod id='NT-includeSect'><lhs>includeSect</lhs>

<rhs>'&lt;![' S? 'INCLUDE' S? '[' 

<!-- (<nt def='NT-markupdecl'>markupdecl</nt> 

      | <nt def="NT-conditionalSect">conditionalSect</nt>  

      | <nt def="NT-S">S</nt>)*

-->

<nt def="NT-extSubset">extSubset</nt>

']]&gt;'

</rhs>

</prod>

<prod id='NT-ignoreSect'><lhs>ignoreSect</lhs>

<rhs>'&lt;![' S? 'IGNORE' S? '[' 

<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*

']]&gt;'</rhs>

</prod>

<prod id='NT-ignoreSectContents'><lhs>ignoreSectContents</lhs>

<rhs><nt def='NT-Ignore'>Ignore</nt>

('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>

']]&gt;' 

<nt def='NT-Ignore'>Ignore</nt>)*</rhs></prod>

<prod id='NT-Ignore'><lhs>Ignore</lhs>

<rhs><nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* ('&lt;![' | ']]&gt;') 

<nt def='NT-Char'>Char</nt>*)

</rhs></prod>

<!--<rhs>

((<nt def='NT-SkipLit'>SkipLit</nt> 

| <nt def='NT-Comment'>Comment</nt>

| <nt def='NT-PI'>PI</nt>) - 

(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))

| ('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>*

']]&gt;')

</rhs>

<rhs>

| (<nt def='NT-Char'>Char</nt> - (']' | [&lt;'"]))

</rhs>

<rhs>

| ('&lt;!' (<nt def='NT-Char'>Char</nt> - ('-' | '[')))

</rhs>-->

</prodgroup>

</scrap>

</p>



<p>ag�M0����0o0�Dn0��subset;�s0Y�subset;h0T�k0�Qj0���0��o0eQ�P[k0j0c0_0ag�M0����0��0d0K0+T�g0�D00S0��n0�k0�vL0�f0��D00

</p>

<p>

ag�M0����0n0���L0<code>INCLUDE</code>j0�p0�L&processor;o0�0ag�M0����0n0����fn0N�0W0f0qb�j0Q0�p0j0�j0D00ag�M0����0n0���L0<code>IGNORE</code>j0�p0�0ag�M0����0n0��o0�fn0N�0W0f0qb�j0D00��㉐g�ckW0O0L�0_0�k0o0��0�ag�M0����0(IGNORE)k0�W0f0��[��~0j0Q0�p0j0�j0D0S0h0k0�aY0�S0h00S0�o0�0P[k0j0c0_0ag�M0����0��d0Q0�q�Y0�)g�YtPn0ag�M0����0�ckW0O0i��_0�h0Y0�0����<code>INCLUDE</code>h0Y0�\U0j0ag�M0����0L0�0�0��<code>IGNORE</code>h0Y0���'YM0j0ag�M0����0k0+T~0��j0�p0�P�s0�tPn0ag�M0����0n0!N�h0�!q�Y0�0

</p>

<p>

ag�M0����0n0���L0��0��SO�gqj0�p0�L&processor;o0ag�M0����0n0qbD0�$R�Y0�MRk0�0��0��SO�U\�W0j0Q0�p0j0�j0D00

</p>



<p>��!kk0:yY00



<eg>&lt;!ENTITY % draft 'INCLUDE' >

&lt;!ENTITY % final 'IGNORE' >

 

&lt;![%draft;[

&lt;!ELEMENT book (comments*, title, body, supplements?)>

]]&gt;

&lt;![%final;[

&lt;!ELEMENT book (title, body, supplements?)>

]]&gt;

</eg>

</p>

</div2>

<!-- 

<div2 id='sec-pass-to-app'>

<head>XML Processor Treatment of Logical Structure</head>

<p>When an XML processor encounters a start-tag, it must make

at least the following information available to the application:

<ulist>

<item>

<p>the element type's generic identifier</p>

</item>

<item>

<p>the names of attributes known to apply to this element type

(validating processors must make available names of all attributes

declared for the element type; non-validating processors must

make available at least the names of the attributes for which

values are specified.

</p>

</item>

</ulist>

</p>

</div2>

--> 



</div1>

<!-- &Entities; -->



<div1 id='sec-physical-struct'>

<head>irt� �/head>

 

<p>

<termdef id="dt-entity" term="Entity">

XML���0�Nn0�aXSMOK0��bY0�0S0n0�aXSMO��erm>�SO</term>h0D0F00�SOo0�erm>��</term>��a0�f�SO(��Sgq)�s0<termref def='dt-doctype'>Y�TD&subset;</termref>�d�0f0�erm>
TMR</term>g0&identified;0

</termdef>



<!-- Added for CFG -->

<!-- obscurity amputated by TWB -->

<!-- entire sentence amputated by CMSMcQ:  no one but NO ONE is

ready for entities declared as

<!ENTITY foo "http://www.foo.com/bar.xml#id">

and it's pointless to suggest that it's possible

under current circumstances. -->

<!-- An entity may be stored in, -->

<!--but need not be coterminous with, -->

<!-- but need not comprise the whole of,  -->

<!-- a single physical storage object such as a file or -->

<!-- database field. -->

<!-- End sentence added for CFG -->TXML���ermref def="dt-docent">��SO</termref>h0|Tv0�SO�Nd0�d00<termref def="dt-xml-proc">XML&processor;</termref>o0�0��SOK0��t���Y0�0��SOL0�fn0Y0y0f0�+T�g0��D00</p>



<p>�SOo0�arsed-entity;�o0&unparsed-entity;h0Y0�0<termdef id="dt-parsedent" term="Text Entity"><term>&parsed-entity;</term>n0��o0�arsed-entity;n0<termref def='dt-repltext'>&replacement-text;</termref>h0|Tv00S0n0<termref def="dt-text">����</termref>o0�fn0,gSOn0N�0W0f0��0�0

</termdef>

</p>



<p>

<termdef id="dt-unparsed" term="Unparsed Entity">

<term>&unparsed-entity;</term>o0�[L0<termref def='dt-text'>����</termref>g0�]0F0g0j0O0h0��D0�0�h0Y0�0����n04XT�Lg0j0O0h0��D00T&unparsed-entity;k0o0�ermref def="dt-notation">�l</termref>L0�#�NQ0���0�lo0�Rg0&identified;0�ln0
TMR�s0�#�NQ0��_0&identifier;��L&processor;L0&application;k0!nY0h0D0F0��Yo0�Lo0�nparsed-entity;n0���6RP�0j0D00

</termdef> 

</p>



<p>&parsed-entity;o0�O�gqk0�c0f0
TMRg0|Ts0�0&unparsed-entity;o0�w>ENTITY</kw>��o0<kw>ENTITIES</kw>�n0^\'`n0$Ph0W0f0�Rg0�gqY0�0</p>



<p>

<termdef id='gen-entity' term='general entity'><term>N,�[SO</term>o0�f��n0-Ng0O(uY0�&parsed-entity;h0Y0�0B0D0~0D0k0j0�j0D0P�0�0&TR-or-Rec;g0o0��[SO�XSk0<emph>�SO</emph>h0|Tv00</termdef><termdef id='dt-PE' term='Parameter entity'>��0��SOo0�D�g0O(uY0�&parsed-entity;h0Y0�0</termdef>S0��n0��0�SOo0�0��g0�gqW0�0���0�X�0�0</p>



<!--

<div2 id='sec-synchro'>

<head>Logical and Physical Structures</head>

<p>The logical and physical structures (elements and entities)

in an XML document must

be properly nested.

<termref def='dt-stag'>Tags</termref> and <termref def='dt-element'>elements</termref> must

each begin and end in the same <termref def='dt-entity'>entity</termref>,  but may

refer to other 

entities internally; <termref def='dt-comment'>comments</termref>, 

<termref def='dt-pi'>processing instructions</termref>, 

<termref def='dt-charref'>character

references</termref>, and 

<termref def='dt-entref'>entity references</termref> must each be contained entirely

within a single entity. Entities must each contain an integral number

of elements, comments, processing instructions, and references,

possibly together with character data not contained within any element

in the entity, or else they must contain non-textual data, which by

definition contains no elements.</p></div2>

-->



<div2 id='sec-references'>

<head>�W[�gq�s0�SO�gq</head>

<p>

<termdef id="dt-charref" term="Character Reference">

<term>�W[�gq</term>o0�O/IEC 10646�W[ƖTn0yr�n0�W[�0p0�R_jhVK0��eQ�
N��0�W[��gqY0�0



<scrap lang='ebnf'>

<head>�W[�gq</head>

<prod id='NT-CharRef'><lhs>CharRef</lhs>

<rhs>'&amp;#' [0-9]+ ';' </rhs>

<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>

<wfc def="wf-Legalchar"/>

</prod>

</scrap>

<wfcnote id="wf-Legalchar">

<head>ckS_j0�W[</head>

<p>�W[�gqg0�gqY0��W[o0�}��S<termref def="NT-Char">Char</termref>k0��j0Q0�p0j0�j0D00</p>

</wfcnote>

�W[L0 "<code>&amp;#x</code>" g0�~0�p0�zn0 "<code>;</code>" ~0g0n0peW[�s0��0����o0�O/IEC 10646 n0�W[��n0162�eh�sh0Y0�0

<!--�g�3�0d0D0f0: lettero0��0����h03�0_00 	N}Y -->

�W[L0 "<code>&amp;#</code>" g0�~0�p0�zn0 "<code>;</code>" ~0g0n0peW[o0�[��n0102�eh�sh0Y0�0

</termdef>

</p>



<p>

<termdef id="dt-entref" term="Entity Reference">

<term>�SO�gq</term>o0�Rn0�D0_0�SOn0����gqY0�0</termdef><termdef id='dt-GERef' term='General Entity Reference'>N,�[SOx0n0�gqo0�0���(<code>&amp;</code>)�s0����0(<code>;</code>)�:SR�P[h0W0f0(uD0�0</termdef><termdef id='dt-PERef' term='Parameter-entity reference'><term>��0��SO</term>x0n0�gqo0�0���S(<code>%</code>)�s0����0(<code>;</code>)�:SR�P[h0W0f0(uD0�0

</termdef>

</p>



<scrap lang="ebnf">

<head>�SO�gq</head>

<prod id='NT-Reference'><lhs>Reference</lhs>

<rhs><nt def='NT-EntityRef'>EntityRef</nt> 

| <nt def='NT-CharRef'>CharRef</nt></rhs></prod>

<prod id='NT-EntityRef'><lhs>EntityRef</lhs>

<rhs>'&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>

<wfc def='wf-entdeclared'/>

<vc def='vc-entdeclared'/>

<wfc def='textent'/>

<wfc def='norecursion'/>

</prod>

<prod id='NT-PEReference'><lhs>PEReference</lhs>

<rhs>'%' <nt def='NT-Name'>Name</nt> ';'</rhs>

<wfc def='wf-entdeclared'/>

<vc def='vc-entdeclared'/>

<wfc def='textent'/>

<wfc def='norecursion'/>

<wfc def='indtd'/>

</prod>

</scrap>



<wfcnote id='wf-entdeclared'>

<head>�SOL0��0�f0D0�S0h0</head>

<p>DTD��_0j0D0����0��SO�gq�+T~0j0D0��TD&subset;`0Q0��d0���o0 "<code>standalone='yes'</code>" ��d0��J0D0f0�O�gqg0(uD0� <nt def='NT-Name'>Name</nt> o0�0�SOn0��0NH0�
TMRh0�ermref def="dt-match">&match;</termref>W0j0Q0�p0j0�j0D00_0`0W0�ell-formed;n0���O&magicents; ���0���o0j0D00��0��SOn04XTo0��0�qk0HQL�0j0Q0�p0j0�j0D00T�k0��[SOn04XTo0�`�0���0&default-value;�g0n0�gq��HQk0��0�j0Q0�p0j0�j0D00</p>



<p>Y�subset;�o0Y�0�0��SOg0�SO���0�h0M0�on-validating;&processor;L0��0�0�tY0�S0h0�<titleref href='include-if-valid'>��e0Q0j0D0</titleref>0]0��n0��o0�Oo0��0�j0Q0�p0j0�j0D0h0D0F0�GRo0�ell-formed;6R}g0o0j0D00

</p>

</wfcnote>



<vcnote id="vc-entdeclared">

<head>�SOL0��0�f0D0�S0h0</head>

<p>

Y�subset;�o0Y�0�0��SO��c0f0D0f0�code>standalone='no'</code>"��d0��J0D0f0�O�gqg0(uD0� <nt def='NT-Name'>Name</nt> o0�0�SOn0��0NH0�
TMRh0<termref def="dt-match">&match;</termref>W0j0Q0�p0j0�j0D00�K�u'`n0_0��alid;j0��<titleref href="sec-escapes">B0�K0X0���W0_0�SOn0��</titleref>g0c�W0_0�k0�c0f0�O &magicents;���0�S0h0L0g~0W0D00��0��SOn04XTo0��0�qk0HQL�0j0Q0�p0j0�j0D00T�k0��[SOn04XTo0�`�0���0&default-value;�g0n0�gq���HQk0��0�j0Q0�p0j0�j0D00

</p>

</vcnote>



<!-- FINAL EDIT:  is this duplication too clumsy? -->



<wfcnote id='textent'>

<head>&parsed-entity;</head>

<p>

�SO�gqo0�ermref def="dt-unparsed">&unparsed-entity;</termref>n0
TMR�+T�g0D0f0o0j0�j0D00&unparsed-entity;o0�w>ENTITY</kw>��o0<kw>ENTITIES</kw> �h0W0f0��0_0<termref def="dt-attrval">^\'`$P</termref>h0W0f0`0Q0�gqg0M0�0

</p>

</wfcnote>



<wfcnote id='norecursion'>

<head>�0^j0W0</head>

<p>&parsed-entity;o0�0�Ox0n0�gq��ck0���k0�+T�g0o0j0�j0D00</p>

</wfcnote>



<wfcnote id='indtd'>

<head>DTDn0-N</head>

<p>

��0��SO�gqo0�ermref def='dt-doctype'>DTD</termref>�k0`0Q0�sW0f0�D00

<!--

In the external DTD subset, a parameter-entity reference is 

recognized only at the locations where

the nonterminal <nt def="NT-PEReference">PEReference</nt> or the

special operator <code>%</code> appears in a production of the

grammar.  In the internal subset, parameter-entity references

are recognized only when they match 

the <nt def="NT-InternalPERef">InternalPERef</nt> non-terminal

in the production for <nt def="NT-markupdecl">markupdecl</nt>.

-->

</p>

</wfcnote>



<p>

�W[�gq�s0�SO�gqn0���0:yY00

<eg>Type &lt;key>less-than&lt;/key> (&hcro;3C;) to save options.

This document was prepared on &amp;docdate; and

is classified &amp;security-level;.</eg>

</p>



<p>

��0��SO�gqn0���0:yY00

<eg>&lt;!ENTITY % ISOLat2

         SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >

%ISOLat2;

</eg>

</p>

</div2>

 

<div2 id='sec-entity-decl'>

<head>�SO��/head>

 

<p>

<termdef id="dt-entdecl" term="entity declaration">

�SOo0�0h0J0�k0��0�0

<scrap lang='ebnf'>

<head>�SO��/head>

<prodgroup pcw2="5" pcw4="18.5">

<prod id='NT-EntityDecl'><lhs>EntityDecl</lhs>

<rhs><nt def="NT-GEDecl">GEDecl</nt></rhs><com>N,�[SO</com>

<rhs>| <nt def="NT-PEDecl">PEDecl</nt></rhs><com>��0��SO</com>

</prod>

<prod id='NT-GEDecl'><lhs>GEDecl</lhs>

<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt> 

<nt def='NT-S'>S</nt> <nt def='NT-EntityDef'>EntityDef</nt> 

<nt def='NT-S'>S</nt>? '&gt;'</rhs>

</prod>

<prod id='NT-PEDecl'><lhs>PEDecl</lhs>

<rhs>| '&lt;!ENTITY' <nt def='NT-S'>S</nt> '%' <nt def='NT-S'>S</nt> 

<nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt> 

<nt def='NT-PEDef'>PEDef</nt> <nt def='NT-S'>S</nt>? '&gt;'</rhs>

<com>��0��SO</com>

</prod>

<prod id='NT-EntityDef'><lhs>EntityDef</lhs>

<rhs><nt def='NT-EntityValue'>EntityValue</nt>

</rhs>

<!--<wfc def="WF-EntityValue"/>-->

<rhs>| <nt def='NT-ExternalDef'>ExternalDef</nt></rhs>

<!--<wfc def="WF-External"/>-->

</prod>

<!-- FINAL EDIT: what happened to WFs here? -->

<prod id='NT-PEDef'><lhs>PEDef</lhs>

<rhs><nt def='NT-EntityValue'>EntityValue</nt> 

| <nt def='NT-ExternalID'>ExternalID</nt></rhs></prod>

</prodgroup>

</scrap>



<nt def='NT-Name'>Name</nt> o0�ermref def="dt-entref">�SO�gq</termref>k0J0D0f0�SO�&identify;0&unparsed-entity;j0�p0�w>ENTITY</kw> ��o0<kw>ENTITIES</kw>�n0^\'`$P�g0�O�&identify;0TNn0�SOL0N��N��0��p0�Rn0��0(uD0�0&at-user-option;�e���0���SOk0�W0�L&processor;o0�T��f0��D00

</termdef>

</p>



<!--

<wfcnote id="WF-Entityvalue">

<head>Well-Formed Internal Entity</head>

<p>General entities defined by an <nt

def="NT-EntityValue">EntityValue</nt> must be well-formed, as defined

in section <specref ref="wf-entities"/>.

</p>

</wfcnote>

<wfcnote id="WF-External">

<head>Well-Formed External Entity</head>

<p>General text entities defined by an <nt

def="NT-ExternalDef">ExternalDef</nt>, must be well-formed, as defined

in the section on <titleref xml-link="simple"

href="wf-entities">well-formed entities.</titleref>.</p>

</wfcnote>

--> 



<div3 id='sec-internal-ent'>

<head>�萟[SO</head>

<p>

<termdef id='dt-internent' term="Internal Entity Replacement Text">

�SOn0��L0 <nt def='NT-EntityValue'>EntityValue</nt>n0h0M0�0�<term>�萟[SO</term>h0D0F00S0�o0�Pn0irt��aXSMO��_0Z0�On0��o0��Qg0NH0�0</termdef>ckW0O0<termref def='dt-repltext'>&replacement-text;</termref>�ubY0�k0o0�ermref def='dt-litentval'>&literal;�SO$P</termref>�g0n0�SO�gq�s0�W[�gqn0�tL0��0j0�K0�W0�j0D0S0h0k0�aY0�0s�}o0�itleref href='intern-replacement'>�萟[SOn0&replacement-text;n0��</titleref>��gq0



<!-- redundant -TWB

Within the <nt def="NT-EntityValue">EntityValue</nt>,

parameter-entity references and character references are recognized

and expanded immediately. 

General-entity references within the

replacement text are not recognized

at the time the entity declaration is parsed, though they may be

recognized when the entity itself is referred to.

-->



</p>



<p>

�萟[SOo0�ermref def="dt-parsedent">&parsed-entity;</termref>h0Y0�0

</p>



<p>�萟[SO��0���0:yY00

<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the specification."></eg></p>

</div3>

 

<div3 id='sec-external-ent'>

<head>Y萟[SO</head>

<p>

<termdef id="dt-extent" term="External Entity">

�SOL0�萟[SOg0j0Q0�p0�erm>Y萟[SO</term>h0W0�0h0J0�k0��0�0



<scrap lang='ebnf'>

<head>Y萟[SO��/head>

<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>

<rhs><nt def='NT-ExternalID'>ExternalID</nt> 

<nt def='NT-NDataDecl'>NDataDecl</nt>?</rhs></prod>

<prod id='NT-ExternalID'><lhs>ExternalID</lhs>

<rhs>'SYSTEM' <nt def='NT-S'>S</nt> 

<nt def='NT-SystemLiteral'>SystemLiteral</nt></rhs>

<rhs>| 'PUBLIC' <nt def='NT-S'>S</nt> 

<nt def='NT-PubidLiteral'>PubidLiteral</nt> 

<nt def='NT-S'>S</nt> 

<nt def='NT-SystemLiteral'>SystemLiteral</nt>

</rhs>

</prod>

<prod id='NT-NDataDecl'><lhs>NDataDecl</lhs>

<rhs><nt def='NT-S'>S</nt> 'NDATA' <nt def='NT-S'>S</nt> 

<nt def='NT-Name'>Name</nt></rhs>

<vc def='not-declared'/></prod>

</scrap>



<nt def='NT-NDataDecl'>NDataDecl</nt> L0X[(WY0�p0�0�SOo0�ermref def="dt-unparsed">&unparsed-entity;</termref>h0W0�0g0j0Q0�p0�arsed-entity;h0Y0�0</termdef>

</p>



<vcnote id='not-declared'>

<head>�lL0��0�f0D0�S0h0</head>

<p>

<nt def='NT-Name'>Name</nt> o0��0_0<termref def="dt-notation">�l</termref>n0
TMRh0&match;W0j0Q0�p0j0�j0D00

</p>

</vcnote>



<p>

<termdef id="dt-sysid" term="System Identifier">

��� <kw>SYSTEM</kw> n0�n0 <nt def='NT-SystemLiteral'>SystemLiteral</nt> ��On0<term>����identifier;</term>h0|Tv00S0�o0URIh0W0�0�SOn0������n0k0(uD0f0��D00</termdef>URIh0qQk0OF0S0h0n0YD0����"<code>#</code>")�s0��0�0�&identifier;o0�_k0o0�I�On0N�0o0W0j0D00��0�0�&identifier;L0�0��identifier;n0�Rh0W0f0NH0��f0D0�4XT�L&processor;o0�rror;��f0��D00S0n0&TR-or-Rec;n0��n0�1X(�H0p0�0yr�n0DTDn0yr%Rj0XML� }�o0yr�n0&application;n0��k0�c0f0��U0�_0�t}T�k0�c0f0
N�U0�j0D0P�0�[�j0URIo0�0�SOn0MOn�0�a0�0�SOn0��0B0�����0��h0Y0�0W0_0L0c0f0�Dn0��subset;k0B0��SO��0n0��j0URIo0�fn0MOnk0d0D0f0��h0Y0�0Y�subset;k0B0��SO��0n0��j0URIo0�0Y�subset;�+T�����0MOnk0��h0Y0�0

</p>



<p>

<termdef id="dt-pubid" term="Public identifier">

����identifier;�Yk0��[SOo0�erm>lQ�&identifier;</term>�+T�g0��D00

</termdef>

�SOn0������XML&processor;o0�0lQ�&identifier;�(uD0f0�0�n0URIn0ub�f�0f0��D00XML&processor;L0S0�k01YWeW0_04XTo0�0��literal;h0W0f0c�W0_0URI�(uD0j0Q0�p0j0�j0D00&match;Y0�MRk0��identifier;�k0B0�zz}v�W[K0�j0�&string;o0�0f0XSNn0&space-character;(#x20)k0ck�SW0j0Q0�p0j0�Z0�_n0zz}v�W[o0JRd�0j0Q0�p0j0�j0D00

</p>



<p>Y萟[SO��0���0:yY00

<eg>&lt;!ENTITY open-hatch

         SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">

&lt;!ENTITY open-hatch

         PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"

         "http://www.textuality.com/boilerplate/OpenHatch.xml">

&lt;!ENTITY hatch-pic

         SYSTEM "../grafix/OpenHatch.gif"

         NDATA gif ></eg></p>

</div3>

 

</div2>



<div2 id='TextEntities'>

<head>&parsed-entity;</head>

<div3 id='sec-TextDecl'>

<head>������/head>

<p>Y�parsed-entity;o0�erm>������/term>g0�~0c0f0��D00

<scrap lang='ebnf'>

<head>������/head>

<prodgroup pcw4="12.5" pcw5="13">

<prod id='NT-TextDecl'><lhs>TextDecl</lhs>

<rhs>&xmlpio; 

<nt def='NT-VersionInfo'>VersionInfo</nt>?

<nt def='NT-EncodingDecl'>EncodingDecl</nt>

<nt def='NT-S'>S</nt>? &pic;</rhs>

<!-- <wfc def='wfc-xmldecliteral'/> -->

<!-- <wfc def='wfc-no-nonleading-encdec'/> -->

</prod>

</prodgroup>

</scrap>

</p>

<p>������0�0~0~0n0b_g0�j0Q0�p0j0�Z0�arsed-entity;x0n0�gq�L}1uW0f0o0j0�j0D0S0h0k0�aY0�0</p>

<p>Y�parsed-entity;k0J0D0f0�0����0��NYn0D0K0j0�MOnk0��W0j0D00</p>

</div3>

<div3 id='wf-entities'>

<head>&well-formed;n0&parsed-entity;</head>

<p>�0�nt def='NT-document'>document</nt>��d0ub�GRk0&match;Y0�p0�f�SOo0�ell-formed;h0Y0�0�0�nt def='NT-ExtParsedEnt'>ExtParsedEnt</nt>��d0ub�GRk0&match;Y0�p0��0N,�parsed-entity;o0�ell-formed;h0Y0�0�0�nt def='NT-ExtPE'>ExtPE</nt>��d0ub�GRk0&match;Y0�p0��0�0��SOo0�ell-formed;h0Y0�0



<scrap lang='ebnf'>

<head>&well-formed;n0&parsed-entity;</head>

<prod id='NT-ExtParsedEnt'><lhs>ExtParsedEnt</lhs>

<rhs><nt def='NT-TextDecl'>TextDecl</nt>? 

<nt def='NT-content'>content</nt></rhs>

</prod>

<prod id='NT-ExtPE'><lhs>ExtPE</lhs>

<rhs><nt def='NT-TextDecl'>TextDecl</nt>? 

<nt def='NT-extSubset'>extSubset</nt></rhs>

</prod>

</scrap>

&replacement-text;L0�0�nt def='NT-content'>content</nt>��d0ub�GRk0&match;Y0�p0��0N,�parsed-entity;o0�ell-formed;h0Y0�0DTD�g�~0g0�0�~0j0D0h0�[k0S0��$R�g0M0j0D0S0h0k0�a0Y0y0f0n0��0��0��SOo0�k0�c0f0&well-formed;h0Y0�0

</p>

<p>�SOL0&well-formed;j0P}�h0W0f0�L��֊t��s0irt�� �0�0O0eQ�P[h0j0�0<termref def='dt-stag'>����</termref>�ermref def='dt-etag'>B}���</termref>�ermref def="dt-empty">zz� }��</termref>�ermref def='dt-element'>� }</termref>�ermref def='dt-comment'>��0�</termref>�ermref def='dt-pi'>�t}T�/termref>�ermref def='dt-charref'>�W[�gq</termref>�s0<termref def='dt-entref'>�SO�gq</termref>L0�0n0�SOg0��W0�0�SOg0B}�Y0�S0h0o0j0D00</p>

</div3>

<div3 id='charencoding'>

<head>�SOk0J0Q0��W[&{�</head>

 

<p>XML��n0Y�parsed-entity;o0�0�0�W[&{��_�(uD0f0��D00Y0y0f0n0XML&processor;o0�F-8g0&{�W0_0�SO�F-16g0&{�W0_0�SO��tg0M0j0Q0�p0j0�j0D00

<!--

It is recognized that for some purposes, the use of additional

ISO/IEC 10646 planes other than the Basic Multilingual Plane

may be required.  

A facility for handling characters in these planes is therefore a

desirable characteristic in XML processors and applications.

-->

</p>

<p>UTF-16g0&{�W0_0�SOo0�O/IEC 10646n0�2��s0Unicoden0�2�g0��Y0�&byte-order-mark;(ZERO WIDTH NO-BREAK SPACE�W[�FEFF)g0�~0�j0Q0�p0j0�j0D00S0�o0�SSn0jX�0B0c0f0�L��&markup;n0N�0��[��n0N�0�j0D00XML&processor;o0�F-8g0&{�W0_0��UTF-16g0&{�W0_0��n0:S%R�L�0_0�k0�0�W[�O(u��0j0Q0�p0j0�j0D00</p>

<p>XML&processor;o0�F-8�s0UTF-16g0&{�W0_0�SO`0Q0���S0h0���0Y0�L0�0&{��NLug0o0(uD0f0J0��0�n0&{��(uD0��SO�XML&processor;L0�tg0M0�S0h0L0g~0W0D00UTF-8�o0UTF-16�Yn0&{��_�(uD0f0<h
}Y0�&parsed-entity;o0�SS��0+T�<titleref href='TextDecl'>������/titleref>g0��j0Q0�p0j0�j0D00

<scrap lang='ebnf'>

<head>&{���/head>

<prod id='NT-EncodingDecl'><lhs>EncodingDecl</lhs>

<rhs><nt def="NT-S">S</nt>

'encoding' <nt def='NT-Eq'>Eq</nt> 

'"' <nt def='NT-EncName'>EncName</nt> '"' | "'" 

<nt def='NT-EncName'>EncName</nt> "'"

</rhs>

</prod>

<prod id='NT-EncName'><lhs>EncName</lhs>

<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>

<com>�0�W[`0Q0�+T�&{�
T</com>

</prod>

</scrap>

<termref def='dt-docent'>��SO</termref>g0o0�SS��0�ermref def="dt-xmldecl">XML��/termref>n0N�0Y0�0<nt def="NT-EncName">EncName</nt>o0�uY0�&{��_n0
TMRh0Y0�0

</p>

<!-- FINAL EDIT:  check name of IANA and charset names -->

<p>&{���0o0�code>UTF-8</code>�ode>UTF-16</code>�ode>ISO-10646-UCS-2</code>�s0<code>ISO-10646-UCS-4</code>o0�icode�s0ISO/IEC 10646n0T.z&{�n0_0�k0(uD0�0$P<code>ISO-8859-1</code>K0�<code>ISO-8859-9</code>~0g0o0�O 8859n0�Y0���n0_0�k0(uD0�0$P<code>ISO-2022-JP</code>�ode>Shift_JIS</code>�s0<code>EUC-JP</code>o0�S X-0208-1997n0T.z&{�n0_0�k0(uD0�0XML&processor;o0�0�Yn0&{��_��X�0f0��D00Internet Assigned Numbers Authority (IANA)k0�emph>charset</emph>sh0W0f0){v2�0�_0�W[&{��_k0d0D0f0o0�0��Yk0d0D0f0���0�_0
TMRg0�gqY0�S0h0L0g~0W0D00S0��n0{v2�0�_0
TMRo0�eW[��W[n0:S%R�[0Z0k0��U0�f0D0�n0g0�0�k0����0f�0�&processor;o0�eW[��W[n0:S%R�W0j0D0���h0�n0L0g~0W0D0S0h0k0�aY0�0</p>

<p>XML�t�!nU0�_0�SOL0�SS��0+T�k0�K0K0��Z0��0:yW0_0�n0�Yn0�_g0&{�U0�f0D0_0��SS��0��[SOn0gR�Yn0MOnk0�Y0�p0�ermref def="dt-error">&error;</termref>h0Y0�0

</p>

<p>&byte-order-mark;g0�&{���0��~0�j0D0�SOo0�F-8&{�g0j0Q0�p0j0�j0D00</p>



<p><!-- XML processors should make an effort to use all available

information, internal and external, to aid in detecting an entity's correct

encoding.  Such information may include, but is not limited to:

<ulist><item><p>An HTTP header</p></item>

<item><p>A MIME header obtained other than through HTTP</p></item>

<item><p>Metadata provided by the native OS file system or by document

management software</p></item>

<item><p>The bit patterns at the front of an entity, which may

be analyzed to determine if

the application of any known encoding yields a valid encoding

declaration.  See <titleref href='sec-guessing'>the appendix on

autodetection of character sets</titleref> 

for a fuller description.</p></item></ulist> -->

�tg0M0j0D0&{���c0_0�SO�XML&processor;L0zv�W0_0h0M0o0�pplication;k0]0n0����wW0�ermref def='dt-fatal'>&fatal-error;</termref>h0W0f0�t�B}�W0j0Q0�p0j0�j0D00

<!--

inform the application of this fact and 

may 

allow the application to

request either that the entity should be treated as an <termref

def="dt-unparsed">unparsed entity</termref>, or that processing should

cease.-->

</p>

<p>&{���0���0:yY00

<eg>&lt;?xml encoding='UTF-8'?>

&lt;?xml encoding='EUC-JP'?></eg></p>

</div3>

</div2>

<div2 id='entproc'>

<head>XML&processor;k0���SO�s0�gqn0qbD0</head>

<p>!kn0h�0�[�gq�O�gq�s0&unparsed-entity;n0|T�L0����Ss0T0n04XTk0J0Q0�<termref def='dt-xml-proc'>XML&processor;</termref>k0�BlY0�/c�0��}Y0�0Nju�0Rn0�0�0��0��0:yY00

<glist>

<gitem><label>��k0J0Q0��gq</label>

<def><p>� }n0<termref def='dt-stag'>����</termref>�s0<termref def='dt-etag'>B}���</termref>n0�n0�n04X@bg0n0�gq0^�}��S<nt def='NT-content'>content</nt>k0�Y0�0</p></def>

</gitem>

<gitem>

<label>^\'`$Pk0J0Q0��gq</label>

<def><p><termref def='dt-stag'>����</termref>n0^\'`n0$P�0<termref def='dt-attdecl'>^\'`��/termref>k0J0Q0�&default-value;n0D0Z0�K0g0n0�gq0^�}��S<nt def='NT-AttValue'>AttValue</nt>k0�Y0�0</p></def></gitem>

<gitem>

<label>^\'`$Ph0W0f0�</label>

<def><p>�gqg0o0j0O0�t def='NT-Name'>Name</nt>h0W0f0�0<code>ENTITY</code>�h0W0f0��0_0^\'`n0$P�0<code>ENTITIES</code>�h0W0f0��0_0^\'`n0$Pk0J0Q0�&space;g0:SR�&token;n0Nd0h0W0f0�Y0�0</p>

</def></gitem>

<gitem><label>�SO$Pk0J0Q0��gq</label>

<def><p>�SOn0��0J0Q0��0�0�o0�萟[SOn0<termref def='dt-litentval'>&literal;�SO$P</termref>�n0�gq0^�}��S<nt def='NT-EntityValue'>EntityValue</nt>k0�Y0�0</p></def></gitem>

<gitem><label>DTDk0J0Q0��gq</label>

<def><p><termref def='dt-doctype'>DTD</termref>n0��subset;�o0Y�subset;g0n0�gq0_0`0W0�t def='NT-EntityValue'>EntityValue</nt>�o0<nt def="NT-AttValue">AttValue</nt>n0YtPh0Y0�0</p></def>

</gitem>

</glist></p>

<!-- border value changed by bosak -->

<htable border='1' cellpadding='7' align='center'>

<!-- tbody wrapper added by bosak -->

<htbody>

<tr><td bgcolor='&cellback;' rowspan='2' colspan='1'></td>

<td bgcolor='&cellback;' align='center' valign='bottom' colspan='4'>�SOn0�</td>

<td bgcolor='&cellback;' rowspan='2' align='center'>�W[</td>

</tr>

<tr align='center' valign='bottom'>

<td bgcolor='&cellback;'>��0�</td>

<td bgcolor='&cellback;'>��newline;N,�/td>

<td bgcolor='&cellback;'>Y�newline;&parsed-entity;&newline;N,�/td>

<td bgcolor='&cellback;'>&unparsed-entity;</td>

</tr>

<tr align='center' valign='middle'>

<!--<td bgcolor='&cellback;' rowspan='4'>Recognition

Context</td>-->

<td bgcolor='&cellback;' align='right'>��g0n0&newline;�gq</td>

<td bgcolor='&cellback;'><titleref href='not-recognized'>�X�newline;W0j0D0</titleref></td>

<td bgcolor='&cellback;'><titleref href='included'>��0</titleref></td>

<td bgcolor='&cellback;'><titleref href='include-if-valid'>i<�0_0�k0��0</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='included'>��0</titleref></td>

</tr>

<tr align='center' valign='middle'>

<td bgcolor='&cellback;' align='right'>^\'`$Pg0n0&newline;�gq</td>

<td bgcolor='&cellback;'><titleref href='not-recognized'>�X�newline;W0j0D0</titleref></td>

<td bgcolor='&cellback;'><titleref href='included'>��0</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='included'>��0</titleref></td>

</tr>

<tr align='center' valign='middle'>

<td bgcolor='&cellback;' align='right'>^\'`$Ph0W0f0&newline;�</td>

<td bgcolor='&cellback;'><titleref href='not-recognized'>�X�newline;W0j0D0</titleref></td>

<td bgcolor='&cellback;'><titleref href='not-recognized'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='not-recognized'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='notify'>�w</titleref></td>

<td bgcolor='&cellback;'><titleref href='not recognized'>�X�newline;W0j0D0</titleref></td>

</tr>

<tr align='center' valign='middle'>

<td bgcolor='&cellback;' align='right'>�SO$Pg0n0&newline;�gq</td>

<td bgcolor='&cellback;'><titleref href='included'>��0</titleref></td>

<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>

<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='included'>��0</titleref></td>

</tr>

<tr align='center' valign='middle'>

<td bgcolor='&cellback;' align='right'>DTDg0n0&newline;�gq</td>

<td bgcolor='&cellback;'><titleref href='as-PE'>PEh0W0f0&newline;��0</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

<td bgcolor='&cellback;'><titleref href='forbidden'>�bk</titleref></td>

</tr>

</htbody>

</htable>

<div3 id='not-recognized'>

<head> �X�0j0D0 </head>

<p>DTDn0Yg0o0�ode>%</code>�W[o0�0j0�yr�n0asT��0j0D00W0_0L0c0f0�Dg0o0��0��SO�gqh0W0f0�X�0��n0g0B0c0f0��t def='NT-content'>content</nt>�g0o0&markup;h0W0f0o0�X�0j0D00T�k0�Rk0��0_0^\'`n0$Pn0-Nk0��4XT�d�0�nparsed-entity;n0
TMRo0��0j0D00

</p>

</div3>

<div3 id='included'>

<head> ��0 </head>

<p><termdef id="dt-include" term="Include">�SOo0�0<termref def='dt-repltext'>&replacement-text;</termref>�����tY0�h0�q�On0�0�k0�qL0B0c0_0MOng0�fn0N�0W0f0+T~0��K0n0�F0k0<term>���~0��</term>0&replacement-text;o0�ermref def='dt-chardata'>�W[��</termref>�s0(��0��SO�d�00)<termref def="dt-markup">&markup;</termref>n0D0Z0��+T�g0��O0�0�o0�^n0��g0�X�0�j0Q0�p0j0�j0D00_0`0W0�arkup;n0:SR�P[�&escape;Y0�_0�k0(uD0��SO(&magicents;)n0&replacement-text;o0�0��h0W0f0qbF0(&string;"<code>AT&amp;amp;T;</code>"o0�code>AT&amp;T;</code>"k0U\�U0��0�_0����o0�O�gqn0:SR�P[h0W0f0o0�X�0j0D00)0�W[�gqo0�0_0�W[��gq�On0�0�k0�tY0�h0M0�erm>���~0��</term>0

</termdef></p>

</div3>

<div3 id='include-if-valid'>

<head> i<�0_0�k0��0 </head>

<p>��&validity;�<termref def="dt-valid">i<�/termref>Y0�k0o0�L&processor;L0&parsed-entity;x0n0�gq��X�0_0h0M0�0&replacement-text;�<termref def="dt-include">���~0</termref>j0Q0�p0j0�j0D00�SOL0Y萟[SOg0B0c0f0�L��&validity;�i<�0j0Q0�p0�On0&replacement-text;�����g0�<termref def="dt-may">�D0</termref>L0�0W0j0O0h0��D00</p>

<p>S0n0�zl�o0�ML�s0XMLn0�SOn0_j�L0��Y0��R��0_j��f\ObBfn0�0�0�S�;Nj0�vh0W0f0-��0�f0J0��0�n0&application;(yrk0�fn0��0�)k0o0�0W0�i�Rg0o0j0D0�0F0�X�0��0�H0p0�0��o0Y�parsed-entity;x0n0�gq��d0Q0�h0�0�SOL0X[(WY0�h0D0F0h�y`0Q0�L�0�y��BlU0�_0h0M0k0`0Q0�[����K0�W0�j0D00

</p>

</div3>

<div3 id='forbidden'>

<head> �bk </head>

<p>!ko0�bkU0�f0J0��ermref def='dt-fatal'>&fatal-error;</termref>h0Y0�0

<ulist>

<item><p>a) <termref def='dt-unparsed'>&unparsed-entity;</termref>x0n0�gqn0�0

</p></item>

<item><p>b) DTDn0<nt def='NT-EntityValue'>EntityValue</nt>�o0<nt def="NT-AttValue">AttValue</nt>�Yn0�Rk0J0Q0��[�gq�o0N,�[SOx0n0�gqn0�0</p></item>

<item><p>c) ^\'`$P�n0Y萟[SOx0n0�gq0</p>

</item>

</ulist>

</p>

</div3>

<div3 id='notify'>

<head> �w </head>

<p><termref def='dt-unparsed'>&unparsed-entity;</termref>n0
TMRL0�w>ENTITY</kw>�o0<kw>ENTITIES</kw>n0^\'`n0$Pk0J0D0f0&token;h0W0f0�_0h0M0�rocessor;o0�pplication;k0�f0��NQ0��_0<termref def="dt-notation">�l</termref>
T�lk0��<termref def='dt-sysid'>����/termref>&identifier;�s0(X[(WY0�p0)<termref def='dt-pubid'>lQ�</termref>&identifier;��wW0j0Q0�p0j0�j0D00</p>

</div3>

<div3 id='bypass'>

<head> &bypass; </head>

<p>N,�[SO�gqL0�O��0J0Q0�<nt def='NT-EntityValue'>EntityValue</nt>�k0��h0M0�0o0!q�U0��0~0~0��0</p>

</div3>

<div3 id='as-PE'>

<head> PEh0W0f0��0 </head>

<p>Y�parsed-entity;n04XTh0T�k0�0�0�SOo0�alidity;�<titleref href='include-if-valid'>i<�0�h0M0`0Q0���~0��</titleref>��L0B0�0��0��SO�gq�DTD�k0�X�0f0����h0M0�0<termref def='dt-repltext'>&replacement-text;</termref>o0�0MR�k0Nd0n0&space-character;(#x20)n0��k0�c0f0_M08Op0U0��0S0n0a��0�0�SOn0&replacement-text;L0�D�n0D0O0d0K0n0���&token;��hQk0+T�h0�}Y0�S0h0k0B0�0

</p>

</div3>

<!--

<div3 id='gen-char-entproc'>

<head>General and Character Entity Processing</head> 

<p>General-entity and character references are recognized in three

contexts: wherever the nonterminal <nt def='NT-content'>content</nt> may

appear, at any point within the nonterminal 

<nt def='NT-AttValue'>AttValue</nt>,

and within the 

<termref def='dt-litentval'>literal entity value</termref> 

(<nt def='NT-EntityValue'>EntityValue</nt>)  

of an internal entity declaration.

This section discusses the first two cases; the third

is discussed <titleref href='intern-replacement'>below</titleref>.

When an <termref def="dt-xml-proc">XML processor</termref> encounters

such a reference, or the name of an unparsed entity as the value

of an <kw>ENTITY</kw> or <kw>ENTITIES</kw> attribute, then:

<olist>



<item><p>In all cases, the XML processor may 

inform the application of the reference's occurrence and its identifier

(for an entity reference, the name; for a character

reference, 

the character number in decimal, hexadecimal, or binary form).</p></item>



<item><p>For both character and entity references, the processor must

remove the reference itself from the <termref def="dt-text">text</termref> data

before passing the data to the application.

</p></item>



<item><p>For character references, the processor must 

pass the character indicated

to the application in

place of the reference.

</p></item>



<item><p>For an external entity, the processor must inform the

application of the entity's <termref def="dt-sysid">system

identifier</termref>, and <termref def="dt-pubid">public identifier</termref> 

if any.

All strings

of white space in the public identifier must be normalized to single space characters (#x20),

and leading and trailing white space must be removed.</p></item>



<item><p>If the external entity is binary, the processor must inform the

application of the associated <termref def="dt-notation">notation</termref> 

name, and the notation's associated <termref def='dt-sysid'>system</termref> 

and <termref def='dt-pubid'>public</termref> (if any)

identifiers.</p></item>



<item><p><termdef id="dt-include" term="Include">For an internal

(parsed) entity, the processor must <term>include</term> the 

entity; that is, retrieve its replacement text 

and process it as a part of the document 

(i.e. as <nt def="NT-content">content</nt> or <nt

def="NT-AttValue">AttValue</nt>, whichever was being processed when

the reference was recognized), passing the result to the application

in place of the reference.  The replacement text may contain both 

<termref def='dt-chardata'>character data</termref>

and <termref def="dt-markup">markup</termref>, which must be recognized in

the usual way, except that the replacement text of entities used to escape

markup delimiters (the entities &magicents;) is always treated as

data.  (The string "<code>AT&amp;amp;T;</code>" expands to

"<code>AT&amp;T;</code>" since the ampersand replacing "<code>&amp;amp;</code>"

is not recognized

as an entity-reference delimiter.) </termdef></p>

<p>Since the entity  may contain other entity references,

an XML processor may have to repeat the inclusion process recursively.</p>

</item>

<item><p>If the entity is an external parsed entity, then in order to

<termref def="dt-valid">validate</termref> the XML document, the processor must

<termref def="dt-include">include</termref> the content of the

entity.</p></item>



<item><p>If the entity is an external parsed entity, and the processor is not

attempting to <termref def="dt-valid">validate</termref> the XML document, the

processor <termref def="dt-may">may</termref>, but need not, <termref

def="dt-include">include</termref> the entity's content.</p>

<p>This rule is based on the recognition that the automatic inclusion

provided by the SGML and XML entity mechanism, primarily designed

to support modularity in authoring, is not necessarily 

appropriate for other applications, in particular document browsing.

Browsers, for example, when encountering an external parsed entity reference,

might choose to provide a visual indication of the entity's

presence and retrieve it for display only on demand.

</p></item>

</olist>

</p>

<p><termdef id="dt-escape" term="escape">Entity and character

references can both be used to <term>escape</term> the left angle bracket,

ampersand, and other delimiters.   A set of general entities

(&magicents;) is specified for this purpose.

Numeric character references may also be used; they are

expanded immediately when recognized, and must be treated as

character data, so the numeric character references

"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to 

escape <code>&lt;</code> and <code>&amp;</code> when they occur

in character data.</termdef></p>

</div3>

<div3 id='PE-proc'>

<head>Parameter Entity Processing</head>

<p>Parameter-entity references are only recognized in the

<termref def='dt-doctype'>DTD</termref>.

Their processing, when they appear 

within the 

<termref def='dt-litentval'>literal entity value</termref> 

(<nt def='NT-EntityValue'>EntityValue</nt>) 

of an internal entity declaration,

is discussed <titleref href='intern-replacement'>below</titleref>.

They have these intended uses:

<olist>

<item><p>as a replacement for one or more complete markup declarations</p></item>

<item><p>as a replacement for one or more complete "groups" in 

element declarations</p></item>

<item><p>as a replacement for one or more complete "tokens" in

markup declarations</p></item>

</olist>

</p>

<p>The constraints requiring that PE replacement texts be properly nested

with <titleref href='vc-PEinMarkupDecl'>markup declarations</titleref>

and <titleref href='vc-PEinGroup'>content groups</titleref> 

govern the first two usages.</p>

<p>To support the third intended usage, 

when an XML processor encounters a parameter-entity reference

(outside of the 

<termref def='dt-litentval'>literal entity value</termref> in an entity

declaration), 

it must <termref def="dt-include">include</termref> 

the named entity, but first expand its 

<termref def='dt-repltext'>replacement text</termref> by attaching

space (#x20) characters to its beginning and the end, before

processing it.</p>

<p>The DTD text must match the relevant

rules of this specification's grammar after all parameter-entity 

references have been expanded.  

<!-In addition, parameter entities referred to in specific

contexts are required to satisfy certain constraints in their

replacement text; for example, a parameter entity referred to within

the internal DTD subset must match the rule for <nt

def="NT-markupdecl">markupdecl</nt>.  ->

</p>

</div3>

-->

</div2>

<div2 id='intern-replacement'>

<head>�萟[SO&replacement-text;n0��</head>

<p>�萟[SOn0�qbD0n0��g0�O$P��d0n0b__k0:S%RY0�S0h0o0y_k0�d00<termdef id="dt-litentval" term='Literal Entity Value'><term>&literal;�SO$P</term>o0�O��Qk0��k0X[(WY0��u&{g0�&string;h0Y0�0S0�o0�}��S<nt def='NT-EntityValue'>EntityValue</nt>k0&match;Y0�0</termdef><termdef id='dt-repltext' term='Replacement Text'><term>&replacement-text;</term>o0�[�gq�s0&parameter;�SO�gqn0n�H0�k0J0Q0��On0��h0Y0�0</termdef></p>



<p>�萟[SO��Qg0NH0�&literal;�SO$P<!-- replacement text -->(<nt def='NT-EntityValue'>EntityValue</nt>)o0�[�gq�arameter;�SO�gq�s0N,�[SO�gq�+T�g0�D00S0��n0�gqo0�-- replacement text. -->&literal;�SO$P�k0�hQk0+T~0�f0D0j0Q0�p0j0�j0D00<termref def='dt-include'>U\�Y0�</termref>��n0&replacement-text;(HQk0:yW0_0�n0)o0�qY0�&parameter;�SOn0<emph>&replacement-text;</emph>�+T~0j0Q0�p0j0�Z0�iteral;�SO$P�g0n0�W[�gqn0�0�k0�gqW0_0�W[�+T~0j0Q0�p0j0�j0D00W0K0W0��[SO�gqo0�0~0~0�W0, U\�W0f0o0j0�j0D00

<!-- in the replacement text that is to be included. -->

�H0p0�0��0NH0_0h0Y0�0



<eg><![CDATA[<!ENTITY % pub    "&#xc9;ditions Gallimard" >

<!ENTITY   rights "All rights reserved" >

<!ENTITY   book   "La Peste: Albert Camus, 

&#xA9; 1947 %pub;. &rights;" >]]></eg>

�SOn0&replacement-text;"<code>book</code>"o0�0h0J0�h0j0�0

<eg>La Peste: Albert Camus, 

&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>

�gq"<code>&amp;book;</code>"L0�fn0���o0^\'`$P�k0�W0f0D0�p0��[SO�gq"<code>&amp;rights;</code>"o0��0�f0D0�0</p>

<p>S0��n0XS}j0�GRo0�T�\O(u��d00

<!-- �g�3�0d0D0f0�nteraction = �\O(u�g	�>

�0D0�k0d0D0f0n0s�}o0�itleref href='sec-entexpand'>�SO�gqn0U\�n0�2�/titleref>��gqn0S0h00

</p>

<!-- Replaced by the above -TB

<p>Implementors of XML processors need to know the rules for

expansion of references in more detail.  These rules only come into

play when the replacement text for an internal entity itself contains

other references.

<olist>

<item><p>In the replacement text of an internal entity, parameter-entity

references and character references in the replacement text 

are recognized and resolved 

when the entity declaration is parsed,

before the replacement text is stored in

the processor's symbol table.

General-entity references in the replacement text are not 

resolved when the entity declaration is parsed.</p></item>

<item><p>In the document, when a general-entity reference is

resolved, its replacement text is parsed.  Character references 

encountered in the replacement text are

resolved immediately; general-entity references encountered in the

replacement text may be resolved or left unresolved, as described 

<titleref href="entproc">above</titleref>.

Character and general-entity references must be

contained entirely within the entity's replacement text.  

</p></item>

</olist>

</p>



<p>Simple character references do not suffice to escape delimiters

within the replacement text of an internal entity:  they will be

expanded when the entity declaration is parsed, before the replacement

text is stored in the symbol table.  When the entity itself is

referred to, the replacement text will be parsed again, and the

delimiters (no longer character references) 

will be recognized as delimiters.  To escape the

characters &magicents; in an entity replacement text, use

a general-entity reference or a doubly-escaped character reference.

See <titleref href='sec-entexpand'>the appendix on expansion 

of entity references</titleref>

for detailed examples.</p>

-->





</div2>

<div2 id='sec-predefined-ent'>

<head>��n0�SO</head>

<p><termdef id="dt-escape" term="escape">

�SO�gq�s0�W[�gqn0D0Z0���eft-angle-bracket;�0����s0�n0:SR�P[�<term>&escape;</term>Y0�_0�k0O(ug0M0�0D0O0d0K0n0N,�[SO�agicents;	��0�vn0_0�k0c�Y0�0pe$Pk0���W[�gq��in0�vn0_0�k0O(ug0M0�0�W[�gqo0��0��h0�k0U\�U0��[��h0W0f0qb���n0g0�Pk0���W[�gq"<code>&amp;#60;</code>"�s0"<code>&amp;#38;</code>"o0�[���k0�Y0�<code>&lt;</code>�s0<code>&amp;</code>�&escape;Y0�_0�k0O(ug0M0�0</termdef></p>

<p>Y0y0f0n0XML&processor;o0��0�f0D0�K0i0F0K0k0��j0O0�0�n0�SO��X�0j0O0f0o0j0�j0D00<termref def='dt-interop'>�K�u'`n0_0�</termref>�alid;j0XML���0�n0�SO�O(uY0�MRk0�0�SOh0T�k0��0�S0h0L0g~0W0D00�SO���0�4XTo0�eplacement-text;�&escape;Y0�N�W[h0Y0��萟[SOh0W0f0�0h0J0�k0��0j0Q0�p0j0�j0D00

<eg><![CDATA[<!ENTITY lt     "&#38;#60;"> 

<!ENTITY gt     "&#62;"> 

<!ENTITY amp    "&#38;#38;"> 

<!ENTITY apos   "&#39;"> 

<!ENTITY quot   "&#34;"> 

]]></eg>

"<code>lt</code>"�s0"<code>amp</code>"��Qn0"<code>&lt;</code>"�s0"<code>&amp;</code>"�W[o0�On0n�����L0�ell-formed;h0j0��F0k0�͑k0&escape;U0��S0h0k0�a0

</p>

</div2>





<div2 id='Notations'>

<head>�l��/head>



 

<p>

<termdef id="dt-notation" term="Notation">

<term>�l</term>o0�ermref def="dt-extent">&unparsed-entity;</termref>n0b__�&identify;
TMRK0�0<termref def="dt-pi">�t}T�/termref>n0�h0Y0�&application;�&identify;
TMRh0Y0�0</termdef></p>

<p><termdef id="dt-notdecl" term="Notation Declaration">

<term>�l��/term>o0�ln0
TMR�s0Y�identifier;���Y0�0S0n0
TMRo0�O�s0^\'`�0���Ns0k0^\'`c�k0(uD0�0Y�identifier;o0�0��_0�ln0����tg0M0���0&application;��L&processor;�o0��0�����0��0L0�Y0_0�k0�ug0M0�0

<scrap lang='ebnf'>

<head>�l��/head>

<prod id='NT-NotationDecl'><lhs>NotationDecl</lhs>

<rhs>'&lt;!NOTATION' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt> 

<nt def='NT-S'>S</nt> 

(<nt def='NT-ExternalID'>ExternalID</nt> | 

<nt def='NT-PublicID'>PublicID</nt>)

<nt def='NT-S'>S</nt>? '>'</rhs></prod>

<prod id='NT-PublicID'><lhs>PublicID</lhs>

<rhs>'PUBLIC' <nt def='NT-S'>S</nt> 

<nt def='NT-PubidLiteral'>PubidLiteral</nt> 

</rhs></prod>

</scrap>

</termdef></p>

<p>��0�`$P�`���o0�SO��0�gqY0�Y0y0f0n0�lk0d0D0f0�L&processor;o0�ln0
TMR�s0Y�identifier;�&application;k0��W0j0Q0�p0j0�j0D00U0�k0��identifier;��ermref def="dt-sysid">����identifier;</termref>�0��T�o0]0n0�n0�1Xk0U\�W0f0��O0�0��(uD0f0�pplication;o0�0�ln0����tY0�&processor;�w�RY0�0(W0K0W0�L&processor;�o0&application;L0�\OY0�����0o0)R(ug0M0j0D0�l��L����0�gqW0f0��0o0�rror;h0o0W0j0D00	�p>

</div2>





<div2 id='sec-doc-entity'>

<head>��SO</head>



<p><termdef id="dt-docent" term="Document Entity"><term>��SO</term>o0�On0b_bY0�(g� �0&root;g0B0c0f0�ermref def="dt-xml-proc">XML&processor;</termref>L0�t���Y0�0W�h0Y0�0</termdef>S0n0&TR-or-Rec;o0�L&processor;L0�f�SOn0X[(WY0�4X@b�i0n0�F0k0�d0Q0�K0o0�[W0j0D00�n0�SOh0puj0��f�SOo0
TMR��_0Z0�0j0�X�R�j0W0k0&processor;x0n0eQ�&stream;k0�W0f0��D00</p>

</div2>





</div1>

<!-- &Conformance; -->

<div1 id='sec-conformance'>

<head>i�T'`</head>



<p>i�TY0�<termref def="dt-xml-proc">XML&processor;</termref>o0�alidating;�n0�s0&non-validating;�n0n0�0k0R^�0��0</p>

<p>&validating;����Ss0&non-validating;����0�0&TR-or-Rec;L0��Y0�&well-formed;6R}x0n0U�S�1XJTW0j0Q0�p0j0�j0D00</p>

<p><termdef id="dt-validating" term="Validating Processor"><term>&validating;&processor;</term>o0�ermref def="dt-doctype">DTD</termref>�n0��0�c0f0:yU0�_0�}x0n0U�S�1XJTW0j0Q0�p0j0�j0D00U0�k0�0&TR-or-Rec;L0��Y0�&validity;6R}x0n0U�S��0f01XJTW0j0Q0�p0j0�j0D00

</termdef>

</p>

</div1>



<div1 id='sec-notation'>

<head>�l</head>



<p>XMLn0b__�j0��o0�Sj0�_Backus-Naur Form(EBNF)�lk0�c0f0NH0�0��n0T�GRo0�0b__g0�S�Nd0��Y0�0

<eg>symbol ::= expression</eg></p>

<p>�So0���sg0��Y0�h0M0o0'Y�W[g0���0g0j0Q0�p0�eW[g0���0&string;&literal;o0�u&{g0�0

<!--* The distinction between symbols which can and cannot be

recognized using simple regular expressions may be used to set the

boundary between an implementation's lexical scanner and its parser,

but this specification neither constrains the placement of that

boundary nor presupposes that all implementations will have one. *-->

</p>



<p>�GRn0�n0_�g0o0�0�o0�en0�W[K0�j0�&string;h0&match;Y0�_0�k0�0_�O(uY0�0

<glist>

<gitem>

<label><code>#xN</code></label>

<def><p>S0S0g0�ode>N</code>o0162�0tepeh0Y0�0ISO/IEC 10646n0�W[g0B0c0f0��_(UCS-4)n0&code-value;�&{�W022�eh0W0f0��0_0h0M0�[W0_0$Ph0I{W0D0�n0h0&match;Y0�0<code>#xN</code>b__n0HQ-�0��0D0O0d0K0��K0o0�T��_0j0D00&code-value;<!-- bit string -->k0J0Q0�HQ-�0��0peo0�[n0&{�k0�c0f0zl�U0��n0g0�Lk0h0c0f0o0asTL0j0D00

</p></def>

</gitem>

<gitem>

<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>

<def><p>c�W0_0��$P(!N�0$P�+T�0	�0d0�n0<termref def='dt-character'>�W[</termref>h0&match;Y0�0</p></def>

</gitem>

<gitem>

<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>

<def><p>c�W0_0��emph>Y</emph>n0$P��d0�n0<termref def='dt-character'>�W[</termref>h0&match;Y0�0</p></def>

</gitem>

<gitem>

<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>

<def><p>c�W0_0�W[�Yn0$P��d0�n0<termref def='dt-character'>�W[</termref>h0&match;Y0�0</p></def>

</gitem>

<gitem>

<label><code>"string"</code></label>

<def><p>&double-quote;g0�&string;&literal;h0<termref def="dt-match">&match;W0f0D0�</termref>&string;&literal;h0&match;Y0�0</p></def>

</gitem>

<gitem>

<label><code>'string'</code></label>

<def><p>&single-quote;g0�&string;&literal;h0<termref def="dt-match">&match;W0f0D0�</termref>&string;&literal;h0&match;Y0�0</p></def>

</gitem>

</glist>

S0��n0�So0�0b__n0D}T[0g0O(uY0�0S0S0g0�ode>A</code>�s0<code>B</code>o0�}j0_h0Y0�0

<glist>

<gitem>

<label>(<code>expression</code>)</label>

<def><p><code>expression</code>o0�0n0~0h0~0�h0W0f0qbD0�0k0:yY0D}T[0g0Oc0f0��D00</p></def>

</gitem>

<gitem>

<label><code>A?</code></label>

<def><p><code>A</code>�o0UO�j0W0h0&match;Y0�(����0n0<code>A</code>)0</p></def>

</gitem>

<gitem>

<label><code>A B</code></label>

<def><p><code>A</code>n0!kk0<code>B</code>L0�Y0��n0h0&match;Y0�0

</p></def>

</gitem>

<gitem>

<label><code>A | B</code></label>

<def><p><code>A</code>�o0<code>B</code>�0W0�eg0o0j0D0�match;Y0�0

</p></def>

</gitem>

<gitem>

<label><code>A - B</code></label>

<def><p><code>A</code>h0&match;Y0�L0�ode>B</code>h0o0&match;W0j0D0�an0&string;h0&match;Y0�0</p></def>

</gitem>

<gitem>

<label><code>A+</code></label>

<def><p><code>A</code>n01��Nn0p~ԏW0h0&match;Y0�0</p></def>

</gitem>

<gitem>

<label><code>A*</code></label>

<def><p><code>A</code>n00��Nn0p~ԏW0h0&match;Y0�0</p></def>

</gitem>

<!-- DEATH TO %'s

<gitem>

<label><code>%a</code></label>

<def><p>specifies that <emph>in the external DTD subset</emph> a

<termref def='dt-param-entity'>parameter entity</termref> may occur in the

text at the position where <code>a</code> may occur; if so, its

replacement text must match <code>S? a S?</code>.  If

the expression <code>a</code> is governed by a suffix operator, then

the suffix operator determines both the maximum number of parameter-entity 

references allowed and the number of occurrences of <code>a</code>

in the replacement text of the parameter entities:  <code>%a*</code>

means that <code>a</code> must occur zero or more times, and

that some of its occurrences may be replaced by references to

parameter entities whose replacement text must contain zero or 

more occurrences of <code>a</code>; it is thus a more compact way

of writing <code>%(a*)*</code>.

Similarly, <code>%a+</code> means that <code>a</code>

must occur one or more times, and may be replaced by 

parameter entities with replacement text matching 

<code>S? (a S?)+</code>.  

The recognition of parameter entities in the internal subset is much more

highly constrained.

</p></def>

</gitem>

-->

</glist>

ub�GR�g0O(uY0��n0�l��0:yY00

<glist>

<gitem>

<label><code>/* ... */</code></label>

<def><p>��0�0</p></def>

</gitem>

<gitem>

<label><code>[ wfc: ... ]</code></label>

<def><p>&well-formed;6R}0ub�GRk0�NW0_0�ermref def="dt-wellformed">&well-formed;</termref>n0���Y0�6R}��Rk0�c0f0&identify;0</p></def>

</gitem>

<gitem>

<label><code>[ vc: ... ]</code></label>

<def><p>&validity;6R}0ub�GRk0�NW0_0�ermref def="dt-valid">&valid;</termref>j0���Y0�6R}��Rk0�c0f0&identify;0

</p></def>

</gitem>

</glist>

</p></div1>



</body>

<back>

<!-- &SGML; -->



<!-- &Biblio; -->

<div1 id='sec-bibliography'>



<head>��e.s</head>

<div2 id='sec-existing-stds'>

<head>&normative;��e.s</head>

<!--* <ulist><item>

<p>Unicode and ISO/IEC 10646.  This specification depends on the

international standard ISO/IEC 10646 (with amendments AM 1 through AM 7)

and the Unicode Standard, Version 2.0 <bibref ref='Unicode'/>, 

which define the encodings and meanings of

the <termref def="dt-character">characters</termref> which 

make up XML <termref def="dt-text">text</termref>.

All the characters in ISO/IEC 10646 are present, at the same code points, 

in Unicode.</p></item>

<item><p>XXX XXX defines the syntax and semantics of 

Uniform Resource Identifiers, or URIs.</p></item>

<item><p>IETF RFC 1766, with ISO 639 and 3166, 

describe the codes that may be used in the 

special <titleref href='sec-lang-tag'>xml:lang</titleref> attribute.</p>

</item></ulist>

*-->



<blist>



<bibl id='RFC1766' key='IETF RFC 1766'>

IETF (Internet Engineering Task Force).

<emph>RFC 1766:  Tags for the Identification of Languages</emph>,

ed. H. Alvestrand.

1995.

</bibl>



<bibl id='ISO639' key='ISO 639'>

(International Organization for Standardization).

<emph>ISO 8879:1988 (E).

Code for the representation of names of languages.</emph>

[Geneva]:  International Organization for

Standardization, 1988.</bibl>



<bibl id='ISO3166' key='ISO 3166'>

(International Organization for Standardization).

<emph>ISO 3166-1:1997 (E).

Codes for the representation of names of countries and their subdivisions 

&mdash; Part 1: Country codes</emph>

[Geneva]:  International Organization for

Standardization, 1997.</bibl>



<bibl id='ISO10646' key='ISO/IEC 10646'>ISO

(International Organization for Standardization).

<emph>ISO/IEC 10646-1993 (E).  Information technology &mdash; Universal

Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:

Architecture and Basic Multilingual Plane.</emph>

[Geneva]:  International Organization for

Standardization, 1993 (plus amendments AM 1 through AM 7).

</bibl>



<bibl id='Unicode' key='Unicode'>The Unicode Consortium.

<emph>The Unicode Standard, Version 2.0.</emph>

Reading, Mass.:  Addison-Wesley Developers Press, 1996.</bibl>



</blist>



</div2>



<div2><head>�n0��e.s</head> 



<blist>



<bibl id='Aho' key='Aho/Ullman'>Aho, Alfred V., 

Ravi Sethi, and Jeffrey D. Ullman.

<emph>Compilers:  Principles, Techniques, and Tools</emph>.

Reading:  Addison-Wesley, 1986, rpt. corr. 1988.</bibl>



<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">

Berners-Lee, T., R. Fielding, and L. Masinter.

<emph>Uniform Resource Identifiers (URI):  Generic Syntax and

Semantics</emph>.

1997.

(Work in progress; see updates to RFC1738.)</bibl>



<bibl id='ABK' key='Br&#252;ggemann-Klein'>Br&#252;ggemann-Klein, Anne.

<emph>Regular Expressions into Finite Automata</emph>.

Extended abstract in I. Simon, Hrsg., LATIN 1992, 

S. 97-98. Springer-Verlag, Berlin 1992. 

Full Version in Theoretical Computer Science 120: 197-213, 1993.

<!--

Universitat Freiburg, Institut fur Informatik,

Bericht 33, Juli 1991.-->

</bibl>



<bibl id='ABKDW' key='Br&#252;ggemann-Klein and Wood'>Br&#252;ggemann-Klein, Anne,

and Derick Wood.

<emph>Deterministic Regular Languages</emph>.

Universit&#228;t Freiburg, Institut f&#252;r Informatik,

Bericht 38, Oktober 1991.

</bibl>



<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">

IETF (Internet Engineering Task Force).

<emph>RFC 1738:  Uniform Resource Locators (URL)</emph>, 

ed. T. Berners-Lee, L. Masinter, M. McCahill.

1994.

</bibl>



<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">

IETF (Internet Engineering Task Force).

<emph>RFC 1808:  Relative Uniform Resource Locators</emph>, 

ed. R. Fielding.

1995.

</bibl>



<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">

IETF (Internet Engineering Task Force).

<emph>RFC 2141:  URN Syntax</emph>, 

ed. R. Moats.

1997.

</bibl>



<bibl id='ISO8879' key='ISO/IEC 8879'>ISO

(International Organization for Standardization).

<emph>ISO/IEC 8879-1986 (E).  Information processing &mdash; Text and Office

Systems &mdash; Standard Generalized Markup Language (SGML).</emph>  First

edition &mdash; 1986-10-15.  [Geneva]:  International Organization for

Standardization, 1986.

</bibl>





<bibl id='ISO10744' key='ISO/IEC 10744'>ISO

(International Organization for Standardization).

<emph>ISO/IEC 10744-1992 (E).  Information technology &mdash;

Hypermedia/Time-based Structuring Language (HyTime).

</emph>

[Geneva]:  International Organization for

Standardization, 1992.

<emph>Extended Facilities Annexe.</emph>

[Geneva]:  International Organization for

Standardization, 1996. 

</bibl>







</blist>

</div2>

</div1>

<div1 id='CharClasses'>

<head>�W[��0</head>



<p>Unicodej�k0��Y0�&property;k0W0_0L0c0f0�[o0�ase-character;(BaseChar)(S0��o0�iacritical-mark;�d�0�0��0����n0��0�����W[�+T�)�deographic;(ideographic)�s0&combining-character;(CombiningChar)(S0n0��0o0�0�i0n0&diacritical-mark;�+T�)k0��0RQ0Y0�0S0��n0��0o0�TW0�etter;(Letter)n0��0h0j0�0102�e$P(Digit)�s0&extender;(Extender)�:S%RY0�0

<scrap lang="ebnf" id="CHARACTERS">

<head>�W[</head>

<prodgroup pcw3="3" pcw4="15">

<prod id="NT-Letter"><lhs>Letter</lhs>

<rhs><nt def="NT-BaseChar">BaseChar</nt> 

| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>

<prod id='NT-BaseChar'><lhs>BaseChar</lhs>

<rhs>[#x0041-#x005A]

|&nbsp;[#x0061-#x007A]

|&nbsp;[#x00C0-#x00D6]

|&nbsp;[#x00D8-#x00F6]

|&nbsp;[#x00F8-#x00FF]

|&nbsp;[#x0100-#x0131]

|&nbsp;[#x0134-#x013E]

|&nbsp;[#x0141-#x0148]

|&nbsp;[#x014A-#x017E]

|&nbsp;[#x0180-#x01C3]

|&nbsp;[#x01CD-#x01F0]

|&nbsp;[#x01F4-#x01F5]

|&nbsp;[#x01FA-#x0217]

|&nbsp;[#x0250-#x02A8]

|&nbsp;[#x02BB-#x02C1]

|&nbsp;#x0386

|&nbsp;[#x0388-#x038A]

|&nbsp;#x038C

|&nbsp;[#x038E-#x03A1]

|&nbsp;[#x03A3-#x03CE]

|&nbsp;[#x03D0-#x03D6]

|&nbsp;#x03DA

|&nbsp;#x03DC

|&nbsp;#x03DE

|&nbsp;#x03E0

|&nbsp;[#x03E2-#x03F3]

|&nbsp;[#x0401-#x040C]

|&nbsp;[#x040E-#x044F]

|&nbsp;[#x0451-#x045C]

|&nbsp;[#x045E-#x0481]

|&nbsp;[#x0490-#x04C4]

|&nbsp;[#x04C7-#x04C8]

|&nbsp;[#x04CB-#x04CC]

|&nbsp;[#x04D0-#x04EB]

|&nbsp;[#x04EE-#x04F5]

|&nbsp;[#x04F8-#x04F9]

|&nbsp;[#x0531-#x0556]

|&nbsp;#x0559

|&nbsp;[#x0561-#x0586]

|&nbsp;[#x05D0-#x05EA]

|&nbsp;[#x05F0-#x05F2]

|&nbsp;[#x0621-#x063A]

|&nbsp;[#x0641-#x064A]

|&nbsp;[#x0671-#x06B7]

|&nbsp;[#x06BA-#x06BE]

|&nbsp;[#x06C0-#x06CE]

|&nbsp;[#x06D0-#x06D3]

|&nbsp;#x06D5

|&nbsp;[#x06E5-#x06E6]

|&nbsp;[#x0905-#x0939]

|&nbsp;#x093D

|&nbsp;[#x0958-#x0961]

|&nbsp;[#x0985-#x098C]

|&nbsp;[#x098F-#x0990]

|&nbsp;[#x0993-#x09A8]

|&nbsp;[#x09AA-#x09B0]

|&nbsp;#x09B2

|&nbsp;[#x09B6-#x09B9]

|&nbsp;[#x09DC-#x09DD]

|&nbsp;[#x09DF-#x09E1]

|&nbsp;[#x09F0-#x09F1]

|&nbsp;[#x0A05-#x0A0A]

|&nbsp;[#x0A0F-#x0A10]

|&nbsp;[#x0A13-#x0A28]

|&nbsp;[#x0A2A-#x0A30]

|&nbsp;[#x0A32-#x0A33]

|&nbsp;[#x0A35-#x0A36]

|&nbsp;[#x0A38-#x0A39]

|&nbsp;[#x0A59-#x0A5C]

|&nbsp;#x0A5E

|&nbsp;[#x0A72-#x0A74]

|&nbsp;[#x0A85-#x0A8B]

|&nbsp;#x0A8D

|&nbsp;[#x0A8F-#x0A91]

|&nbsp;[#x0A93-#x0AA8]

|&nbsp;[#x0AAA-#x0AB0]

|&nbsp;[#x0AB2-#x0AB3]

|&nbsp;[#x0AB5-#x0AB9]

|&nbsp;#x0ABD

|&nbsp;#x0AE0

|&nbsp;[#x0B05-#x0B0C]

|&nbsp;[#x0B0F-#x0B10]

|&nbsp;[#x0B13-#x0B28]

|&nbsp;[#x0B2A-#x0B30]

|&nbsp;[#x0B32-#x0B33]

|&nbsp;[#x0B36-#x0B39]

|&nbsp;#x0B3D

|&nbsp;[#x0B5C-#x0B5D]

|&nbsp;[#x0B5F-#x0B61]

|&nbsp;[#x0B85-#x0B8A]

|&nbsp;[#x0B8E-#x0B90]

|&nbsp;[#x0B92-#x0B95]

|&nbsp;[#x0B99-#x0B9A]

|&nbsp;#x0B9C

|&nbsp;[#x0B9E-#x0B9F]

|&nbsp;[#x0BA3-#x0BA4]

|&nbsp;[#x0BA8-#x0BAA]

|&nbsp;[#x0BAE-#x0BB5]

|&nbsp;[#x0BB7-#x0BB9]

|&nbsp;[#x0C05-#x0C0C]

|&nbsp;[#x0C0E-#x0C10]

|&nbsp;[#x0C12-#x0C28]

|&nbsp;[#x0C2A-#x0C33]

|&nbsp;[#x0C35-#x0C39]

|&nbsp;[#x0C60-#x0C61]

|&nbsp;[#x0C85-#x0C8C]

|&nbsp;[#x0C8E-#x0C90]

|&nbsp;[#x0C92-#x0CA8]

|&nbsp;[#x0CAA-#x0CB3]

|&nbsp;[#x0CB5-#x0CB9]

|&nbsp;#x0CDE

|&nbsp;[#x0CE0-#x0CE1]

|&nbsp;[#x0D05-#x0D0C]

|&nbsp;[#x0D0E-#x0D10]

|&nbsp;[#x0D12-#x0D28]

|&nbsp;[#x0D2A-#x0D39]

|&nbsp;[#x0D60-#x0D61]

|&nbsp;[#x0E01-#x0E2E]

|&nbsp;#x0E30

|&nbsp;[#x0E32-#x0E33]

|&nbsp;[#x0E40-#x0E45]

|&nbsp;[#x0E81-#x0E82]

|&nbsp;#x0E84

|&nbsp;[#x0E87-#x0E88]

|&nbsp;#x0E8A

|&nbsp;#x0E8D

|&nbsp;[#x0E94-#x0E97]

|&nbsp;[#x0E99-#x0E9F]

|&nbsp;[#x0EA1-#x0EA3]

|&nbsp;#x0EA5

|&nbsp;#x0EA7

|&nbsp;[#x0EAA-#x0EAB]

|&nbsp;[#x0EAD-#x0EAE]

|&nbsp;#x0EB0

|&nbsp;[#x0EB2-#x0EB3]

|&nbsp;#x0EBD

|&nbsp;[#x0EC0-#x0EC4]

|&nbsp;[#x0F40-#x0F47]

|&nbsp;[#x0F49-#x0F69]

|&nbsp;[#x10A0-#x10C5]

|&nbsp;[#x10D0-#x10F6]

|&nbsp;#x1100

|&nbsp;[#x1102-#x1103]

|&nbsp;[#x1105-#x1107]

|&nbsp;#x1109

|&nbsp;[#x110B-#x110C]

|&nbsp;[#x110E-#x1112]

|&nbsp;#x113C

|&nbsp;#x113E

|&nbsp;#x1140

|&nbsp;#x114C

|&nbsp;#x114E

|&nbsp;#x1150

|&nbsp;[#x1154-#x1155]

|&nbsp;#x1159

|&nbsp;[#x115F-#x1161]

|&nbsp;#x1163

|&nbsp;#x1165

|&nbsp;#x1167

|&nbsp;#x1169

|&nbsp;[#x116D-#x116E]

|&nbsp;[#x1172-#x1173]

|&nbsp;#x1175

|&nbsp;#x119E

|&nbsp;#x11A8

|&nbsp;#x11AB

|&nbsp;[#x11AE-#x11AF]

|&nbsp;[#x11B7-#x11B8]

|&nbsp;#x11BA

|&nbsp;[#x11BC-#x11C2]

|&nbsp;#x11EB

|&nbsp;#x11F0

|&nbsp;#x11F9

|&nbsp;[#x1E00-#x1E9B]

|&nbsp;[#x1EA0-#x1EF9]

|&nbsp;[#x1F00-#x1F15]

|&nbsp;[#x1F18-#x1F1D]

|&nbsp;[#x1F20-#x1F45]

|&nbsp;[#x1F48-#x1F4D]

|&nbsp;[#x1F50-#x1F57]

|&nbsp;#x1F59

|&nbsp;#x1F5B

|&nbsp;#x1F5D

|&nbsp;[#x1F5F-#x1F7D]

|&nbsp;[#x1F80-#x1FB4]

|&nbsp;[#x1FB6-#x1FBC]

|&nbsp;#x1FBE

|&nbsp;[#x1FC2-#x1FC4]

|&nbsp;[#x1FC6-#x1FCC]

|&nbsp;[#x1FD0-#x1FD3]

|&nbsp;[#x1FD6-#x1FDB]

|&nbsp;[#x1FE0-#x1FEC]

|&nbsp;[#x1FF2-#x1FF4]

|&nbsp;[#x1FF6-#x1FFC]

|&nbsp;#x2126

|&nbsp;[#x212A-#x212B]

|&nbsp;#x212E

|&nbsp;[#x2180-#x2182]

|&nbsp;[#x3041-#x3094]

|&nbsp;[#x30A1-#x30FA]

|&nbsp;[#x3105-#x312C]

|&nbsp;[#xAC00-#xD7A3]

</rhs></prod>

<prod id='NT-Ideographic'><lhs>Ideographic</lhs>

<rhs>[#x4E00-#x9FA5]

|&nbsp;#x3007

|&nbsp;[#x3021-#x3029]

</rhs></prod>

<prod id='NT-CombiningChar'><lhs>CombiningChar</lhs>

<rhs>[#x0300-#x0345]

|&nbsp;[#x0360-#x0361]

|&nbsp;[#x0483-#x0486]

|&nbsp;[#x0591-#x05A1]

|&nbsp;[#x05A3-#x05B9]

|&nbsp;#x05BB#x05BD

|&nbsp;#x05BF

|&nbsp;[#x05C1-#x05C2]

|&nbsp;#x05C4

|&nbsp;#x064B#x0652

|&nbsp;#x0670

|&nbsp;[#x06D6-#x06DC]

|&nbsp;#x06DD#x06DF

|&nbsp;[#x06E0-#x06E4]

|&nbsp;[#x06E7-#x06E8]

|&nbsp;[#x06EA-#x06ED]

|&nbsp;[#x0901-#x0903]

|&nbsp;#x093C

|&nbsp;[#x093E-#x094C]

|&nbsp;#x094D

|&nbsp;[#x0951-#x0954]

|&nbsp;[#x0962-#x0963]

|&nbsp;[#x0981-#x0983]

|&nbsp;#x09BC

|&nbsp;#x09BE

|&nbsp;#x09BF

|&nbsp;[#x09C0-#x09C4]

|&nbsp;[#x09C7-#x09C8]

|&nbsp;[#x09CB-#x09CD]

|&nbsp;#x09D7

|&nbsp;[#x09E2-#x09E3]

|&nbsp;#x0A02

|&nbsp;#x0A3C

|&nbsp;#x0A3E

|&nbsp;#x0A3F

|&nbsp;[#x0A40-#x0A42]

|&nbsp;[#x0A47-#x0A48]

|&nbsp;[#x0A4B-#x0A4D]

|&nbsp;[#x0A70-#x0A71]

|&nbsp;[#x0A81-#x0A83]

|&nbsp;#x0ABC

|&nbsp;[#x0ABE-#x0AC5]

|&nbsp;[#x0AC7-#x0AC9]

|&nbsp;[#x0ACB-#x0ACD]

|&nbsp;[#x0B01-#x0B03]

|&nbsp;#x0B3C

|&nbsp;[#x0B3E-#x0B43]

|&nbsp;[#x0B47-#x0B48]

|&nbsp;[#x0B4B-#x0B4D]

|&nbsp;[#x0B56-#x0B57]

|&nbsp;[#x0B82-#x0B83]

|&nbsp;[#x0BBE-#x0BC2]

|&nbsp;[#x0BC6-#x0BC8]

|&nbsp;[#x0BCA-#x0BCD]

|&nbsp;#x0BD7

|&nbsp;[#x0C01-#x0C03]

|&nbsp;[#x0C3E-#x0C44]

|&nbsp;[#x0C46-#x0C48]

|&nbsp;[#x0C4A-#x0C4D]

|&nbsp;[#x0C55-#x0C56]

|&nbsp;[#x0C82-#x0C83]

|&nbsp;[#x0CBE-#x0CC4]

|&nbsp;[#x0CC6-#x0CC8]

|&nbsp;[#x0CCA-#x0CCD]

|&nbsp;[#x0CD5-#x0CD6]

|&nbsp;[#x0D02-#x0D03]

|&nbsp;[#x0D3E-#x0D43]

|&nbsp;[#x0D46-#x0D48]

|&nbsp;[#x0D4A-#x0D4D]

|&nbsp;#x0D57

|&nbsp;#x0E31

|&nbsp;[#x0E34-#x0E3A]

|&nbsp;[#x0E47-#x0E4E]

|&nbsp;#x0EB1

|&nbsp;[#x0EB4-#x0EB9]

|&nbsp;[#x0EBB-#x0EBC]

|&nbsp;[#x0EC8-#x0ECD]

|&nbsp;[#x0F18-#x0F19]

|&nbsp;#x0F35

|&nbsp;#x0F37

|&nbsp;#x0F39

|&nbsp;#x0F3E

|&nbsp;#x0F3F

|&nbsp;[#x0F71-#x0F84]

|&nbsp;[#x0F86-#x0F8B]

|&nbsp;[#x0F90-#x0F95]

|&nbsp;#x0F97

|&nbsp;[#x0F99-#x0FAD]

|&nbsp;[#x0FB1-#x0FB7]

|&nbsp;#x0FB9

|&nbsp;[#x20D0-#x20DC]

|&nbsp;#x20E1

|&nbsp;[#x302A-#x302F]

|&nbsp;#x3099

|&nbsp;#x309A

</rhs></prod>

<prod id='NT-Digit'><lhs>Digit</lhs>

<rhs>[#x0030-#x0039]

|&nbsp;[#x0660-#x0669]

|&nbsp;[#x06F0-#x06F9]

|&nbsp;[#x0966-#x096F]

|&nbsp;[#x09E6-#x09EF]

|&nbsp;[#x0A66-#x0A6F]

|&nbsp;[#x0AE6-#x0AEF]

|&nbsp;[#x0B66-#x0B6F]

|&nbsp;[#x0BE7-#x0BEF]

|&nbsp;[#x0C66-#x0C6F]

|&nbsp;[#x0CE6-#x0CEF]

|&nbsp;[#x0D66-#x0D6F]

|&nbsp;[#x0E50-#x0E59]

|&nbsp;[#x0ED0-#x0ED9]

|&nbsp;[#x0F20-#x0F29]

</rhs></prod>

<prod id='NT-Extender'><lhs>Extender</lhs>

<rhs>#x00B7

|&nbsp;#x02D0

|&nbsp;#x02D1

|&nbsp;#x0387

|&nbsp;#x0640

|&nbsp;#x0E46

|&nbsp;#x0EC6

|&nbsp;#x3005

|&nbsp;[#x3031-#x3035]

|&nbsp;[#x309D-#x309E]

|&nbsp;[#x30FC-#x30FE]

</rhs></prod>



</prodgroup>

</scrap>

</p>

<p>S0S0g0��Y0��W[��0o0�icode�W[����K0��0h0J0�k0��S0h0L0g0M0�0

<ulist>

<item>

<p>a) 
TMR���W[o0�, Lu, Lo, Lt, Nl����Qn0Nd0g0j0Q0�p0j0�j0D00</p>

</item>

<item>

<p>b) 
TMR���W[�Yn0
TMR�W[o0�, Me, Mn, Lm, Nd����Qn0Nd0g0j0Q0�p0j0�j0D00</p>

</item>

<item>

<p>c) &compatibility-area;k0B0��W[(�W[&{�#xF900��'YM0O0#xFFFE��\U0D0�W[)o0�Lk0J0Q0�
TMRh0W0f0o0�0�j0D00</p>

</item>

<item>

<p>d) &font-decomposition;K0&compatibility-decomposition;��d0�W[(d0~0��0����n0�vn0����k0"compatibility formatting tag"L0B0��n00S0�o0�u�0����L0�lt;"g0�~0�S0h0k0�c0f0���Q0U0��0)o0�0�j0D00</p>

</item>

<item>

<p>e) !kn0�W[o0�R���W[h0W0f0qbF00S0�o0�roperty-file;L0�0�n0�W[���0����k0^�OY0�h0�j0Y0S0h0k0��0]0��o0

[#x02BB-#x02C1], #x0559, #x06E5, #x06E6h0Y0�0</p>

</item>

<item>

<p>f) �W[&{�#x20DD-#x20E0n0�W[o0�nicode n05.14k0W0_0L0c0f0)d�YY0�0</p>

</item>

<item>

<p>g) �W[&{�#x00B7n0�W[o0�roperty-list;k0W0_0L0c0f0�xtender;(extender)k0R^�0�0</p>

</item>

<item>

<p>h) �W[#x0387o0�0k0�Y0�ck�b_L0#x00B7j0n0g0�R�W[k0�Y0�0</p>

</item>

<item>

<p>i) �W[':'�s0'_'o0�R���W[h0W0f01�00</p>

</item>

<item>

<p>j) �W['-'�s0'.'o0�R�W[h0W0f01�00</p>

</item>

</ulist>

</p>

</div1>

<inform-div1 id="sec-xml-and-sgml">

<head>XML�s0SGML</head>



<p>XMLo0�MLn0&subset;h0W0f0-��0�f0D0�0Y0j0�a0�0f0n0<termref def="dt-valid">&valid;</termref>j0XML���hk0i�TY0�SGML���j0�0SGMLL0���Y06RP�NYk0�LL0D0K0j0�6RP�0�Y0K0k0�Y0�s�}o0�0<loc href='http://www.w3.org/TR/NOTE-sgml-xml'>�z</loc>��gqn0S0h00S0n0�zo0�Ln06R}ag�:yY0SGML��0+T0�0o0�ML&parser;k0O(ug0M0�0

</p>

</inform-div1>

<inform-div1 id="sec-entexpand">

<head>�SO�gq�s0�W[�gqn0U\�</head>

<p>S0n0�2�0�O�gq�s0�W[�gq��X�0��0���0Am���0Oc0f0:yY00</p>

<p>

DTDL0�0��0+T�4XT��0�0

<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped

numerically (&#38;#38;#38;) or with a general entity

(&amp;amp;).</p>" >

]]></eg>

XML&processor;o0�On0��0��㉐gW0_0Bf�g0�W[�gq��X�0�0��lY0�0�SO"<code>example</code>"n0$Ph0W0f0�0&string;��X[Y0�0

<eg><![CDATA[<p>An ampersand (&#38;) may be escaped

numerically (&#38;#38;) or with a general entity

(&amp;amp;).</p>

]]></eg>

��g0"<code>&amp;example;</code>"��gqY0�h0�0����o0�0��㉐gU0��0S0n0h0M0�}"<code>p</code>"n0�����s0B}�����X�0�0n0�gq��X�0U\�Y0�0]0n0P}��}"<code>p</code>"o0�0����d0(Y0y0f0��h0W0�R�P[�o0&markup;o0X[(WW0j0D00)0

<eg><![CDATA[An ampersand (&) may be escaped

numerically (&#38;) or with a general entity

(&amp;).

]]></eg>

</p>

<p>�GR�s0]0n0�����s�}k0:yY0_0��0k0��0��:yY00!kn0�g0�u��qn0��n0_0�`0Q0k0�Q0�0

<eg><![CDATA[1 <?xml version='1.0'?>

2 <!DOCTYPE test [

3 <!ELEMENT test (#PCDATA) >

4 <!ENTITY % xx '&#37;zz;'>

5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >

6 %xx;

7 ]>

8 <test>This sample shows a &tricky; method.</test>

]]></eg>

S0���tY0�h0�0h0J0�h0j0�0

<ulist spacing="compact">

<item><p>a) 4L�vg0�ju�0�W[x0n0�gq��k0U\�W0�0�0�SO"<code>xx</code>"��0��0��0"<code>%zz;</code>"h0D0F0$Ph0h0�k0�X[Y0�0&replacement-text;��s0p�gY0�S0h0o0j0D0n0g0�0�0�SO"<code>zz</code>"x0n0�gqo0�X�0j0D0("<code>zz</code>"o0�0��0�f0D0j0D0n0g0�gU0��p0�rror;h0j0�0)0</p></item>

<item><p>b) 5L�vg0�[�gq"<code>&amp;#60;</code>"��k0U\�W0�0�0�SO"<code>zz</code>"�"<code>&lt;!ENTITY tricky "error-prone" ></code>"h0D0F0&replacement-text;h0h0�k0�X[Y0�0S0�o0�ell-formed;n0�SO��0Y0�0</p></item>

<item><p>c) 6L�vg0�code>xx</code>"x0n0�gq��X�0�code>xx</code>"n0&replacement-text;(Y0j0�a0�code>%zz;</code>")���㉐gY0�0"<code>zz</code>"x0n0�gq��D0f0�X�0�eplacement-text;("<code>&lt;!ENTITY tricky "error-prone" ></code>")���㉐gY0�0N,�[SO"<code>tricky</code>"o0�0Bf�g0o0��0�f0J0��0&replacement-text;o0�code>error-prone</code>"h0Y0�0 </p></item>

<item><p>d) 8L�vg0��[SO"<code>tricky</code>"x0n0�gq��X�0��0�0� }"<code>test</code>"n0�hQj0��o0�0(���]0��Oh�sY0�0)&string;h0j0�0d0~0��mph>This sample shows a error-prone method.</emph>

</p></item>

</ulist>

</p>

</inform-div1> 

<inform-div1 id="determinism">

<head>zl�����0�/head>

<p><termref def='dt-compat'>��'`n0_0�</termref>�}��0J0Q0����0�0�[�h0Y0���L0B0�0

</p>

<!-- FINAL EDIT:  WebSGML allows ambiguity? -->

<p>SGMLo0�[����0�SGMLg0o0�0D0~0D0h0|Tv00)��BlY0�0SGML����0(uD0f0\ObW0_0XML&processor;o0�l�����0�0&error;h0W0f0��D00</p>

<p>�H0p0�[�0�code>((b, c) | (b, d))</code>o0^�l��h0j0�0S0�o0�Rk0<code>b</code>�NH0_0h0M0�0�Qn0D0Z0�n0<code>b</code>h0&match;Y0�n0L0g~0W0D0K0�0!kn0� }�HQ�0Y0�S0h0j0W0k0o0�arser;o0�0S0h0L0g0M0j0D0S0h0k0��0S0n04XTo0�ode>b</code>x0n0�d0n0�gqo0�0n0�gqk0~0h0��S0h0L0g0M0�0�0�ode>(b, (c | d))</code>h0j0�0S0�g0�Rn0<code>b</code>L0�[�0�Qn0Nd0n0
TMRh0`0Q0&match;Y0�S0h0o0f�K0h0j0�0&parser;o0��0W0f0�0eg��n0��0��L0j0D00<code>c</code>�<code>d</code>��tU0��0</p>

<p>b__�k0:yY00Aho, Sethi, and Ullman <bibref ref='Aho'/>n03.9n0��0�0�.5n0j��j0��0�0�0(uD0f0�[�0�0�	gP�0�����bY0�S0h0L0g0M0�0S0n0.zn0YO0n0��0�0�0o0���sk0J0Q0�T0n0MOn(d0~0����sn0��(gk0J0Q0�T0n0+g�0�)k0�f0�llow set(!kk0i0n0MOnk0���0�h�0�n0)��bY0�0B0�MOnk0��follow setk0J0D0f0�en0MOnL0TX0� }�
Tg0�0�NQ0U0�f0D0�p0�0���0�0&error;h0j0��rror;�ԏY04XT�B0�0

</p>

<p>Y0y0f0n0^�l�����0�0I{�j0zl�����0�0	Y�Y0�S0h0o0g0M0j0D0L0�0n0^�l�����0�0	Y�Y0���0�0�0X[(WY0�0Br&#252;ggemann-Klein 1991 <bibref ref='ABK'/>��gqn0S0h00</p>

</inform-div1>

<inform-div1 id="sec-guessing">

<head>�W[&{�n0�Ri�/head>

<p>

XMLn0&{���0�[SOn0��0��0W0f0_j��0�W[&{��O(uY0�K0�:yY00W0K0W0�L&processor;o0��0��0��MRk0�0�W[&{��O(uY0�K0��0��L0B0��0L0��0��0:y]0F0h0Y0�S0h0k0j0�0N,�vk0o0�0o0�g�j0�Kah0j0�0W0K0W0�Lk0J0D0f0o0�Qk0o0v}g�g0o0j0D00S0�o0�LL0�0�d0n0�g0N,�vj04XTk0��6RP�0�H0�S0h0k0��0Nd0n06RP�0�0�ň�	gP�Pn0�W[&{�`0Q0n0�����Y0�S0h0h0Y0�0�n0Nd0n06RP�0�[SOg0O(uY0��W[&{���Ri��Y0��Ln0&{���0MOn�s0��k0�Y0�6RP�0Y0�0YO0n04XTk0�Ln0�����0�0�H0�0�1XL0)R(ug0M0�0S0S0g0o0�Ln0�SOL0&processor;k0!nU0��h0M0�Y��1X�4OF0K0i0F0K0k0�c0f0�0n04XTk0RQ0�0~0Z0gRn04XT�:yY00</p>

<p>

UTF-8b__�o0UTF-16b__g0o0j0D0XML�SOo0�Rn0�W[� <code>&lt;?xml</code>'h0Y0�XML&{���0�~0�<emph>j0Q0�p0j0�j0D0</emph>n0g0�0i�TW0_0&processor;��Rk0B0�2������o04�������y0�p0�0i0n04XTL0B0f0o0~0�K0�i�M0�0S0n0�0�����k0o0�S-4n0'&lt;'L0"<code>#x0000003C</code>"�'L0"<code>#x0000003F</code>"�0UTF-16n0��&stream;n0��h0Y0�&byte-order-mark;L0"<code>#xFEFF</code>"h0D0F0S0h0��0f0J0O0h0y_�d0K0�W0�j0D00</p>

<p>

<ulist>

<item>

<p>a) <code>00 00 00 3C</code>: UCS-4, big-endian ���(1234�</p>

</item>

<item>

<p>b) <code>3C 00 00 00</code>: UCS-4, little-endian ���(4321�</p>

</item>

<item>

<p>c) <code>00 00 3C 00</code>: UCS-4, nf�0o0j0D0������(2143)</p>

</item>

<item>

<p>d) <code>00 3C 00 00</code>: UCS-4, nf�0o0j0D0������(3412)</p>

</item>

<item>

<p>e) <code>FE FF</code>: UTF-16, big-endian</p>

</item>

<item>

<p>f) <code>FF FE</code>: UTF-16, little-endian</p>

</item>

<item>

<p>g) <code>00 3C 00 3F</code>: UTF-16, big-endian, &byte-order-mark;j0W0(W0_0L0c0f0�[k0D0H0p0�rror;h0Y0�0)0</p>

</item>

<item>

<p>h) <code>3C 00 3F 00</code>: UTF-16, little-endian, &byte-order-mark;j0W0(W0_0L0c0f0�[k0D0H0p0�rror;h0Y0�0)0</p>

</item>

<item>

<p>i) <code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, ISO 8859n0T���ift-JIS�C�0k0�n0�n07����0���o0�E^n0&{�g0B0c0f0�CII�W[��^n0MOn�Ss0$Ph0Y0�S0h0��<�0��n00S0��n0i0�k0�Y0�K0�i��_0�k0o0��0&{���0�0�~0j0Q0�p0j0�j0D00W0K0W0�0�Y0y0f0n0&{�o0�CII�W[k0�f0TX0�������O(uY0�n0g0�SS���Oo0�xk0��0��0Y0�0

</p>

</item>

<item>

<p>j) <code>4C 6F A7 94</code>: EBCDIC (�o0]0n0	Y.z0i0n0�����O(uY0�K0��0_0�k0o0�SS��QSO��0�~0�j0Q0�p0j0�j0D00)</p>

</item>

<item>

<p>k) ]0n0�: &{���0W0n0UTF-80]0F0g0j0D0h0M0k0o0�0�&stream;L0��f0D0�K0�r�k0j0c0f0D0�K0�0K0n0b__k0W0_0L0c0f0���~0�f0D0�0</p>

</item>

</ulist>

</p>

<p>

S0n0z�n0�R$R%Rg0��Ln0&{���0�0�0�[&{�n0&identifier;�㉐gY0�k0o0ASRh0Y0�0&identifier;n0㉐go0�OY0�T0n0&{�n0Nd0Nd0�:S%RY0�_0�k0��h0Y0�(�H0p0�F-8�s08859�:S%RY0�_0��59n0T���:S%RY0�_0��uW0f0D0�yr�n0EBCDIC�����:S%RY0�_0��00)0

</p>

<p>

&{���0���ASCII�W[k0P�[W0f0D0�n0g0�0R^�0&{��O(uY0�K0�i��p0�rocessor;o0�SS��QSO�ck�k0�0��S0h0L0g0M0�0�OUL�0W0f0�0O(uU0�f0D0��W[&{�o0�0R^�0D0Z0�K0k0B0f0o0~0�n0g0�0�0�������So0O�0�0��0NH0�Y�`1X���N��0h0M0g0U0H0���0��0�W[&{��K0j0�ck�k0:yY0S0h0L0�L&{���0�c0f0��0j0�0

</p>

<p>

&processor;L0O(uY0��W[&{��i�U0H0Y0�p0�0^0�n04XTk0�f0%RPn0eQ��0��|Ts0��0eQ�Y0�T�W[k0�i�Rj0	Y��pe�|Ts0�S0h0k0�c0f0�Rj0�\OL0��0j0�0</p>

<p>

�R�Ok0�0�NQ0�Y0�D0K0j0�����0�T�`0L0�0����L0�SS��0�[0Z0k0�SOn0�W[ƖT�o0&{��	YH0_0j0�p0�Ln0&{���0��0j0D00�W[&{��0���ň�0�On0�0�NQ0k0O(uY0���Ss0Y�0�1Xn0ck�U0n0�<�0�aY0�n0L0g~0W0D00

</p>

<p>�vn04XTo0�Ln0�SOn0�k0�SS�1XL0X[(WY0�h0M0g0B0c0f0�0d0K0n0����0���Ss0����0���0��0o0�0&{��1XL0X[(WY0�0�en0�1XL0)R(ug0M0�h0M0�-- (e.g. both the

internal encoding declaration and an external label),  -->]0��n0��j0*QHQ��s0]0��L0��_0h0M0n0g~0W0D0�t��o0�Ln0M��0O(uY0��0ؚ4l�n0��0��0N�0W0f0�zY0�n0L0�D00�H0p0��0��Ss0Y�header;k0X[(WY0�MIMEb__n0�0�0��j0*QHQ�k0���GRo0�xt/xml�s0application/xmln0MIME����Y0�RFC��N�0j0��L0�D00W0K0W0�NK�u'`n0_0�k0�0�GRk0�F0S0h0L0g~0W0D00

<ulist>

<item><p>a) XMLn0�SOL0����0X[(WY0�p0�yte-order-mark;�s0&{���Io0�[(WY0�p0)�W[&{��zl�Y0�_0�k0O(uY0�0�n0Y0y0f0n0&hueristics;�s0�1Xo0�rror;��n0_0�`0Q0k0(uD0�0

</p></item>

<item><p>b) XMLn0�SO�MIME�text/xmlg0M��0�h0M0o0�0MIME�n0�d0charset��0�L0�W[&{����zl�Y0�0�n0Y0y0f0n0&hueristics;�s0�1Xo0�rror;��n0_0�`0Q0k0(uD0�0

</p></item>

<item><p>c) XMLn0�SO� <!-- via the HTTP protocol -->MIME�application/xmlg0M��0�h0M0o0�yte-order-mark;�s0&{���I�(X[(WY0�p0)�W[&{�n0zl�n0_0�k0O(uY0�0�n0Y0y0f0n0&hueristics;�s0�1Xo0&error;��n0_0�`0Q0k0(uD0�0

</p></item>

</ulist>

S0��n0�GRo0�0���0d0D0f0n0nj�L0j0D0h0M0k0`0Q0(uD0�0yrk0�ME�text/xml�s0application/xml���W0_0��0����Y0�RFCk0X[(WY0���L0�0�n0�GRk0�c0f0�0�0

</p>

</inform-div1>

<!--

<div1 id='sec-trival-grammar'>

<head>A Trivial Grammar for XML Documents</head>

<p>The grammar given in the body of this specification is relatively

simple, but for some purposes it is convenient to have an even simpler

one.  

A very simple, though non-conforming, <termref def="dt-xml-proc">XML

processor</termref> could parse a <termref

def="dt-wellformed">well-formed</termref> XML document using the

following simplified grammar, recognizing all element boundaries

correctly, though not expanding entity references and not detecting

all errors:



<scrap lang="ebnf">

<head>Trivial text grammar</head>

<prodgroup pcw2="5.5" pcw4="17" pcw5="10">

<prod id='NT-simpleDoc'><lhs>simpleDoc</lhs>

<rhs>(<nt def='NT-SimpleData'>SimpleData</nt> 

| <nt def='NT-Markup'>Markup</nt>)*</rhs></prod>

<prod id="NT-SimpleData"><lhs>SimpleData</lhs>

<rhs>[^&lt;&amp;]*</rhs>

<com>cf. PCData</com>

</prod>

<prod id="NT-SimpleLit"><lhs>SimpleLit</lhs>

<rhs>('"' [^"]* '"')</rhs>

<rhs>|&nbsp;("'" [^']* "'")</rhs>

<com>cf. SkipLit</com>

</prod>

<prod id='NT-Markup'><lhs>Markup</lhs>

<rhs>'&lt;' <nt def='NT-Name'>Name</nt> 

(<nt def='NT-S'>S</nt> 

<nt def='NT-Name'>Name</nt> 

<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?

<nt def='NT-SimpleLit'>SimpleLit</nt>)* 

<nt def='NT-S'>S</nt>? '&gt;'</rhs><com>start-tags </com>

<rhs>| '&lt;' <nt def='NT-Name'>Name</nt> 

(<nt def='NT-S'>S</nt> 

<nt def='NT-Name'>Name</nt> 

<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?

<nt def='NT-SimpleLit'>SimpleLit</nt>)* 

<nt def='NT-S'>S</nt>? '/&gt;'</rhs><com>empty elements</com>

<rhs>| '&lt;/' 

<nt def='NT-Name'>Name</nt> 

<nt def='NT-S'>S</nt>? '&gt;'</rhs>

<com>end-tags </com>

<rhs>| '&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>

<com>entity references </com>

<rhs>| '&amp;#' [0-9]+ ';'</rhs>

<com>decimal character references </com>

<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>

<com>hexadecimal character references </com>

<rhs>| '&lt;!&como;' 

(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))

'&comc;&gt;'</rhs>

<com>comments </com>

<rhs>| '&lt;?'

(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))

'&pic;'</rhs>

<com>processing instructions </com>

<rhs>| '&lt;![CDATA[' 

(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))

']]&gt;'</rhs>

<com>CDATA sections</com>

<rhs>| '&lt;!DOCTYPE' 

(<nt def="NT-Char">Char</nt> - ('[' | ']'))+

('[' 

<nt def="NT-simpleDTD">simpleDTD</nt>*

']')? '&gt;'</rhs>

<com>doc type declaration</com>

</prod>

<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>

<rhs>'&lt;!&como;' 

(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))

'&comc;&gt;'</rhs>

<com>comment </com>

<rhs>| '&lt;?'

(<nt def='NT-Char'>Char</nt>* - 

(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))

'&pic;'</rhs>

<com>processing instruction </com>

<rhs><nt def="NT-SimpleLit">SimpleLit</nt></rhs>

<rhs>(<nt def="NT-Char">Char</nt> - (']' | '&lt;' | '"' | "'"))+

</rhs>



<rhs>'&lt;!' (<nt def="NT-Char">Char</nt> - ('-'))+</rhs>

<com>declarations other than comment</com>

</prod>

</prodgroup>

</scrap>

Most processors will require the more complex

grammar given in the body of this specification.



</p>

</div1>

-->



<inform-div1 id="sec-xml-wg">

<head>&informative;W3C XML �0����0�</head>

 

<p>S0n0&TR-or-Rec;o0�C XML �0����0�(WG)L0��W0��0b�W0_00WGL0S0n0&TR-or-Rec;�b�Y0�h0D0F0S0h0o0�n0Y0y0f0n0��0b��hy�L�0_0h0D0F0S0h0��Z0W0�asTW0j0D00XML WGn0�n0��Ss0�Rn0��0!kk0:yY00</p>

 

<!-- parens and spaces removed from role elements by bosak 1997.11.07 -->

<orglist>

<member><name>Jon Bosak, Sun</name><role>Chair</role></member>

<member><name>James Clark</name><role>Technical Lead</role></member>

<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>

<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>

<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML Co-editor</role></member>

<member><name>Dan Connolly, W3C</name></member>

<member><name>Steve DeRose, INSO</name></member>

<member><name>Dave Hollander, HP</name></member>

<member><name>Eliot Kimber, Highland</name></member>

<member><name>Eve Maler, ArborText</name></member>

<member><name>Tom Magliery, NCSA</name></member>

<member><name>Murray Maloney, Muzmo and Grif</name></member>

<member><name>Qg0u0w�X��0���1X����*h)</name></member>

<member><name>Joel Nava, Adobe</name></member>

<member><name>Peter Sharpe, SoftQuad</name></member>

<member><name>John Tigue, DataChannel</name></member>

</orglist>



</inform-div1>

</back>

</spec>

<!-- Keep this comment at the end of the file

Local variables:

mode: sgml

sgml-omittag:t

sgml-shorttag:t

End:

-->







Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.