Extensible Markup Language (XML) 1.0 (Second Edition)

±¾ÎĵµÊÇ W3C ½¨Òé XML 1.0 µÚ¶þ°æ£¨2000 Äê 10 Ô 6 ÈÕ£©µÄ¼òÌåÖÐÎÄ·­Òë°æ£¬ÆäÖпÉÄÜÓдíÎóºÍ²»Í×Ö®´¦¡£

Ó¢ÎİæÊÇΨһµÄÕýʽ°æ£¬Î»ÓÚ£º

http://www.w3.org/TR/2000/REC-xml-20001006

±¾ÎĵµÎ»ÓÚ£º

http://lightning.prohosting.com/~qqiu/REC-xml-20001006-cn.html

ÒëÕߣº

Öø×÷ȨÉùÃ÷λÓÚ£ºhttp://www.w3.org/Consortium/Legal/copyright-documents.html

Copyright  © 1998 W3C® (MIT, INRIA, Keio ), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.

 

W3C


¿ÉÀ©Õ¹±ê¼ÇÓïÑÔ£¨XML£©1.0£¨µÚ¶þ°æ£©

W3C ½¨Òé 2000Äê10ÔÂ6ÈÕ

±¾°æ±¾:
http://www.w3.org/TR/2000/REC-xml-20001006 £¨XHTML ¸ñʽ£¬XML ¸ñʽ£¬PDF ¸ñʽ£¬Óò»Í¬ÑÕÉ«±êʾÔöɾ¸ÄµÄ XHTML ÉóÔİ棩
×îа汾:
http://www.w3.org/TR/REC-xml
ÒÔǰ°æ±¾:
http://www.w3.org/TR/2000/WD-xml-2e-20000814
http://www.w3.org/TR/PR-xml-971208
±àÕß:
Tim Bray£¬Textuality and Netscape <tbray@textuality.com>
Jean Paoli£¬Microsoft <jeanpa@microsoft.com>
C. M. Sperberg-McQueen£¬University of Illinois at Chicago and Text Encoding Initiative mailto:cmsmcq@uic.edu
Eve Maler, Sun Microsystems, Inc. mailto:elm@east.sun.com - µÚ¶þ°æ

ÕªÒª

±¾ÎĵµÍêÕûµØÃèÊöÁË¿ÉÀ©Õ¹±ê¼ÇÓïÑÔ£¨Extensible Markup Language£¬XML£©£¬ËüÊDZê׼ͨÓñê¼ÇÓïÑÔ£¨Standard Generic Markup Language£¬SGML£©µÄÒ»¸ö×Ó¼¯¡£ÆäÄ¿µÄÔÚÓÚʹµÃÔÚ Web ÉÏÄÜÒÔÏÖÓг¬Îı¾±ê¼ÇÓïÑÔ£¨Hypertext Markup Language£¬HTML£©µÄʹÓ÷½Ê½Ìṩ£¬½ÓÊպʹ¦ÀíͨÓÃµÄ SGML ³ÉΪ¿ÉÄÜ¡£XML µÄÉè¼Æ¼È¿¼ÂÇÁËʵÏֵķ½±ãÐÔ£¬Í¬Ê±Ò²¹Ë¼°ÁËÓë SGML ºÍ HTML µÄ»¥²Ù×÷ÐÔ¡£

±¾ÎĵµµÄ״̬

±¾ÎĵµÒÑÓÉ W3C ×éÖ¯³ÉÔ±ºÍÆäËûÏà¹Ø¸÷·½ÉóÔÄ£¬²¢Òѱ»×éÖ¯ÀíÊÂÅú׼Ϊ W3C ½¨Òé¡£ÕâÊÇÒ»·ÝÎȶ¨µÄÎĵµ£¬¿ÉÒÔÓÃ×÷²Î¿¼²ÄÁÏ£¬Ò²¿ÉÒÔ×÷ΪÆäËûÎĵµµÄÕýʽ²Î¿¼ÎÄÏס£W3C ÔÚ½¨ÒéÖÆ¶¨¹ý³ÌÖеÄ×÷ÓÃÊÇÎüÒý¶Ô±¾½¨ÒéµÄ×¢Òâ²¢´Ù½øËüµÄ¹ã·ºÊ¹Óá£ÕâÄÜÔöÇ¿WebµÄ¹¦Äܺͻ¥²Ù×÷ÐÔ¡£

±¾Îĵµ¹æ¶¨ÁËÒ»ÖÖÓÃÓÚ World Wide Web µÄÓï·¨£¬´ËÓï·¨ÊÇͨ¹ýȡһ¸öÒµÒÑ´æÔÚ²¢Òѹ㷺ʹÓõÄÎı¾´¦Àí¹ú¼Ê±ê×¼£¨±ê׼ͨÓñê¼ÇÓïÑÔ£¬¾­Ôö²¹ºÍ¸üÕýµÄ ISO 8879:1986(E)£©µÄ×Ó¼¯¶ø´´½¨µÄ¡£ËüÊÇ W3C XML Ðж¯×飨XML Activity£©µÄ¹¤×÷³É¹û£¬¹ØÓÚ XML Ðж¯×éµÄÏêϸÐÅÏ¢¿ÉÒÔÔÚ http://www.w3.org/XML ÕÒµ½¡£Ó¢ÎİæÊÇΨһµÄÕýʽ°æ¡£±¾ÎĵµµÄ·­Òë¼û http://www.w3.org/XML/#trans¡£ÔÚ http://www.w3.org/TR ¿ÉÒÔÕÒµ½ÏÖÓÐ W3C ½¨ÒéºÍÆäËû¼¼ÊõÎĵµµÄÒ»¸öÁÐ±í¡£

XML 1.0 µÚ¶þ°æ²»ÊÇ XML µÄÒ»¸öа汾£¨1998 Äê 2 Ô 10 ÈÕÊ״η¢±í£©£»ËüÖ»ÊÇΪÁË·½±ã¶ÁÕߣ¬²¢ÈëÁ˵ÚÒ»°æ¿±Îó±íÖÐÖ¸³öµÄ´íÎóºÍÐ޸ģ¨ÔÚ http://www.w3.org/XML/xml-19980210-errata£©¡£ ±¾µÚ¶þ°æµÄ¿±Îó±íÔÚ http://www.w3.org/XML/xml-V10-2e-errata¡£

Ç뽫±¾ÎĵµÖеĴíÎó±¨¸æ¸ø xml-editor@w3.org¡£¿ÉÒÔÔÚ´ËÕÒµ½Ïà¹ØµÄ´æµµ¡£

×¢£º

C. M. Sperberg-McQueen ÔÚµÚÒ»°æ·¢±íÖ®ºó¹©Ö°Ö®´¦ÒÑÓб仯¡£ËûÏÖÔÚ¹©Ö°ÓÚ W3C£¬¿ÉÒÔͨ¹ý cmsmcq@w3.org ºÍËûÁªÏµ¡£

Ŀ¼

1. Ð÷ÂÛ
    1.1 ¿ª·¢ÕߺͿª·¢Ä¿±ê
    1.2 ÊõÓï
2. Îļþ
    2.1 ¸ñʽÕýÈ·µÄ XML Îļþ
    2.2 ×Ö·û
    2.3 ͨÓÃÓï·¨³É·Ö
    2.4 ×Ö·ûÊý¾ÝºÍ±ê¼Ç
    2.5 ×¢ÊÍ
    2.6 ´¦ÀíÖ¸Áî
    2.7 CDATA ¶Î
    2.8 ÐòÑÔºÍÎļþÀàÐÍÉùÃ÷
    2.9 ¶ÀÁ¢ÎļþÉùÃ÷
    2.10 ¿Õ°×´¦Àí
    2.11 ÐÐβ´¦Àí
    2.12 ÓïÑÔ±êʶ
3. Âß¼­½á¹¹
    3.1 Æðʼ±êÇ©£¬½áÊø±êÇ©ºÍ¿ÕÔªËØ±êÇ©
    3.2 ÔªËØÀàÐÍÉùÃ÷
        3.2.1 ÔªËØÐÍÄÚÈÝ
        3.2.2 »ìºÏÐÍÄÚÈÝ
    3.3 ÊôÐÔ±íÉùÃ÷
        3.3.1 ÊôÐÔÀàÐÍ
        3.3.2 ÊôÐÔµÄȱʡֵ
        3.3.3 ÊôÐÔ-Öµ¶ÔµÄ¹æ·¶»¯
    3.4 Ìõ¼þ¶Î
4. ÎïÀí½á¹¹
    4.1 ×Ö·ûºÍʵÌåÒýÓÃ
    4.2 ʵÌåÉùÃ÷
        4.2.1 ÄÚ²¿ÊµÌå
        4.2.2 ÍⲿʵÌå
    4.3 ÒÑÎöʵÌå
        4.3.1 Îı¾ÉùÃ÷
        4.3.2 ¸ñʽÕýÈ·µÄÒÑÎöʵÌå
        4.3.3 ʵÌåÖеÄ×Ö·û±àÂë
    4.4 XML ´¦ÀíÆ÷¶ÔʵÌåºÍÒýÓõĴ¦Àí
        4.4.1 ²»±»Ê¶±ð
        4.4.2 ±»°üº¬
        4.4.3 ½øÐÐÑé֤ʱ±»°üº¬
        4.4.4 ±»½ûÖ¹
        4.4.5 ×÷Ϊ³£Á¿±»°üº¬
        4.4.6 ֪ͨ
        4.4.7 ²»´¦Àí
        4.4.8 ×÷Ϊ²ÎÊýʵÌå±»°üº¬
    4.5 ÄÚ²¿ÊµÌåÖû»Îı¾µÄ¹¹½¨
    4.6 Ô¤¶¨ÒåʵÌå
    4.7 ¼Ç·¨ÉùÃ÷
    4.8 ÎļþʵÌå
5. Ò»ÖÂÐÔ
    5.1 ½øÐÐÑéÖ¤ºÍ²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷
    5.2 ʹÓà XML ´¦ÀíÆ÷
6. ¼Ç·¨

¸½Â¼

A. ²Î¿¼ÎÄÏ×
    A.1 Õýʽ²Î¿¼ÎÄÏ×
    A.2 ÆäËû²Î¿¼ÎÄÏ×
B. ×Ö·ûµÄ·ÖÀà
C. XML ºÍ SGML£¨·ÇÕýʽ£©
D. ʵÌåºÍ×Ö·ûÒýÓõÄÕ¹¿ª£¨·ÇÕýʽ£©
E. È·¶¨ÐÍÄÚÈÝÄ£ÐÍ£¨·ÇÕýʽ£©
F. ×Ö·û±àÂëµÄ×Ô¶¯¼ì²â£¨·ÇÕýʽ£©
    F.1 ÎÞÍⲿ±àÂëÐÅϢʱµÄ¼ì²â
    F.2 ÓÐÍⲿ±àÂëÐÅϢʱµÄÓÅÏȼ¶
G. W3C XML ¹¤×÷×飨·ÇÕýʽ£©
H. W3C XML ºËÐŤ×÷×飨·ÇÕýʽ£©
I. ÎĵµÖÆ×÷˵Ã÷£¨·ÇÕýʽ£©


1. Ð÷ÂÛ

¿ÉÀ©Õ¹±ê¼ÇÓïÑÔ£¬ËõдΪ XML£¬ÃèÊöÁËÒ»Àà³ÆÎª XML ÎļþµÄÊý¾Ý¶ÔÏó£¬Í¬Ê±Ò²²¿·ÖµØÃèÊöÁË´¦ÀíÕâЩÊý¾Ý¶ÔÏóµÄ¼ÆËã»ú³ÌÐòµÄ¶¯×÷¡£XML ÊÇ SGML£¨±ê׼ͨÓñê¼ÇÓïÑÔ [ISO 8879]£©Õë¶ÔÌØ¶¨Ó¦ÓÃÁìÓòµÄÒ»¸ö×Ó¼¯£¬»òÕß˵ÊÇ SGML µÄÒ»ÖÖÊÜÏÞÐÎʽ¡£¸ù¾Ý¶¨Ò壬XML ÎļþÊǺϺõ¹æ·¶µÄ SGML Îļþ¡£

XML ÎļþÓɳÆÎªÊµÌåµÄ´æ´¢µ¥Ôª×é³É£¬ÊµÌå¿ÉÒÔ°üº¬ÒÑÎö£¨parsed£©Êý¾Ý»òδÎö£¨unparsed£©Êý¾Ý¡£ÒÑÎöÊý¾ÝÓÉ×Ö·û×é³É£¬ÆäÖÐһЩ×Ö·û×é³É×Ö·ûÊý¾Ý£¬ÁíһЩ×Ö·û×é³É±ê¼Ç¡£±ê¼ÇÖаüº¬Á˶ÔÎļþ´æ´¢¸ñʽ£¨storage layout£©ºÍÂß¼­½á¹¹µÄÃèÊö¡£XML ÌṩÁËÒ»ÖÖ»úÖÆÓÃÓÚÔ¼Êø´æ´¢¸ñʽºÍÂß¼­½á¹¹¡£

[¶¨Ò壺³ÆÎª XML ´¦ÀíÆ÷µÄÈí¼þÄ£¿éÓÃÓÚ¶ÁÈ¡ XML Îļþ£¬´æÈ¡ÆäÖеÄÄÚÈݺͽṹ¡£] [¶¨Ò壺XML ´¦ÀíÆ÷±»ÉèÏëΪÊÇΪÁíÒ»¸ö³ÆÎªÓ¦ÓõÄÄ£¿é×÷´¦Àí¡£] ±¾¹æ·¶´Ó XML ´¦ÀíÆ÷Ó¦ÈçºÎ¶ÁÈ¡ XML Êý¾ÝÒÔ¼°Ó¦ÏòÓ¦ÓÃÌṩÄÄЩÐÅÏ¢µÄÕâÁ½¸ö·½Ã棬ÃèÊöÁËÒªÇó XML ´¦ÀíÆ÷×÷³öµÄ¶¯×÷¡£

1.1 ¿ª·¢ÕߺͿª·¢Ä¿±ê

XML ÓÉ XML ¹¤×÷×飨ԭÏ鵀 SGML ±à¼­Éó²éίԱ»á£©¿ª·¢£¬´Ë¹¤×÷×éÓÉ World Wide Web Consortium (W3C) ÔÚ 1996 ÄêÖ÷³Ö³ÉÁ¢¡£¹¤×÷×éÓÉ Sun Microsystems µÄ Jon Bosak ¸ºÔð£¬Í¬ÑùÓÉ W3C ×éÖ¯µÄ XML SIG (Special Interest Group)£¨Ô­Ï鵀 SGML ¹¤×÷×飩»ý¼«²ÎÓëÁË XML ¹¤×÷×éµÄ¹¤×÷¡£XML ¹¤×÷×éµÄ³ÉÔ±ÔÚ¸½Â¼Öиø³ö¡£ ¹¤×÷×éÓë W3C µÄÁªÏµÈËÊÇ Dan Connolly¡£

XML µÄÉè¼ÆÄ¿±êÈçÏ£º

  1. XML Ó¦¸Ã¿ÉÒÔÖ±½ÓÔÚÒòÌØÍø£¨Internet£©ÉÏʹÓá£
  2. XML Ó¦¸ÃÖ§³Ö´óÁ¿²»Í¬µÄÓ¦Óá£
  3. XML Ó¦¸ÃÓë SGML ¼æÈÝ¡£
  4. ´¦Àí XML ÎļþµÄ³ÌÐòÓ¦¸ÃÈÝÒ×±àд¡£
  5. XML ÖеĿÉÑ¡ÏîÓ¦ÎÞÌõ¼þµØ±£³Ö×îÉÙ£¬ÀíÏë×´¿öÏÂÓ¦¸ÃΪ 0 ¸ö¡£
  6. XML ÎļþÓ¦¸ÃÄܹ»ÈÃÈËÖ±½ÓÔĶÁ£¬¶øÇÒÓ¦¸ÃÓÐ×ã¹»µÄ¿É¶ÁÐÔ¡£
  7. XML µÄÉè¼ÆÓ¦¿ìËÙÍê³É¡£
  8. XML µÄÉè¼ÆÓ¦¸ÃÊÇÐÎʽ»¯µÄ£¬¼ò½àµÄ¡£
  9. XML ÎļþÓ¦Ò×ÓÚ´´½¨¡£
  10. XML ±ê¼ÇµÄ¼ò½àÐÔÊÇ×î²»ÖØÒªµÄÉè¼ÆÄ¿±ê¡£

±¾¹æ·¶ÓëÆäËûÏà¹ØµÄ±ê×¼Ò»Æð£¨Unicode ºÍ ISO/IEC 10646 ¶¨ÒåÁË×Ö·û¼¯£¬Internet RFC1766 ¶¨ÒåÁËÓïÑÔʶ±ðÂ룬ISO 639 ¶¨ÒåÁËÓïÑÔÃû³Æ´úÂ룬ISO 3166 ¶¨ÒåÁ˹ú¼ÒÃû³Æ´úÂ룩£¬ÌṩÁËÀí½â XML °æ±¾ 1.0 ºÍ¹¹½¨ÏàÓ¦¼ÆËã»ú´¦Àí³ÌÐòËùÐèµÄËùÓÐÐÅÏ¢¡£

ÔÚÍêÕû±£ÁôËùÓÐÎı¾ºÍ·¨ÂÉ×¢ÒâÊÂÏîµÄǰÌáÏ£¬±¾°æ±¾µÄ XML ¹æ·¶¿ÉÒÔ×ÔÓÉ·Ö·¢¡£

1.2 ÊõÓï

ÓÃÓÚÃèÊö XML ÎļþµÄÊõÓïÔڴ˹淶µÄÕýÎÄÖж¨Òå¡£ ÔÚÕâЩ¶¨ÒåÖÐÒÔ¼°ÃèÊöÒ»¸ö XML ´¦ÀíÆ÷µÄ¶¯×÷ʱ£¬Ê¹ÓÃÁËϱíÖеÄÊõÓ

¿ÉÒÔ£¨may£©
[¶¨Ò壺ÔÊÐíºÏºõ¹æ·¶µÄÎļþºÍ XML ´¦ÀíÆ÷°´ËùÃèÊöµÄ·½Ê½¹¤×÷£¬µ«²»ÒªÇó±ØÐëÈç´Ë¡£]
±ØÐ루must£©
[¶¨Ò壺ҪÇóºÏºõ¹æ·¶µÄÎļþºÍ XML ´¦ÀíÆ÷°´ËùÃèÊöµÄ·½Ê½¹¤×÷; ·ñÔòËüÃdzöÏÖ´íÎó¡£]
´íÎó£¨error£©
[¶¨Ò壺¶Ô±¾¹æ·¶ÖеĹæÔòµÄÎ¥·´£»Æä½á¹û²»È·¶¨¡£ºÏºõ¹æ·¶µÄÈí¼þ¿ÉÒÔ¼ì²âºÍ±¨¸æ´íÎ󣬲¢¿ÉÒÔ´ÓÖлָ´¡£]
ÑÏÖØ´íÎó£¨fatal error£©
[¶¨Ò壺ºÏºõ¹æ·¶µÄ XML ´¦ÀíÆ÷±ØÐë¼ì²âµ½£¬²¢ÏòÓ¦Óñ¨¸æµÄÒ»Àà´íÎó¡£ÔÚÓöµ½ÑÏÖØ´íÎóÖ®ºó£¬´¦ÀíÆ÷¿ÉÒÔ¼ÌÐø´¦ÀíÊý¾ÝÒÔ·¢ÏÖ¸ü¶àµÄ´íÎ󲢿ÉÒÔÏòÓ¦Óñ¨¸æÕâЩ´íÎó¡£ÎªÁËÖ§³Ö´íÎóµÄ¸üÕý£¬´¦ÀíÆ÷¿ÉÒÔÏòÓ¦ÓÃÌṩÎļþÖÐδ¾­´¦ÀíµÄÊý¾Ý£¨×Ö·ûÊý¾ÝºÍ±ê¼ÇµÄ»ìºÏÌ壩¡£µ«ÊÇ£¬Ò»µ©¼ì²âµ½Ò»¸öÑÏÖØ´íÎ󣬴¦ÀíÆ÷±ØÐëÍ£Ö¹Õý³£µÄ´¦Àí£¨Ò²¾ÍÊÇ˵£¬Ëü±ØÐëÍ£Ö¹ÒÔÕý³£µÄ·½Ê½ÏòÓ¦ÓÃÌṩÓëÎļþÂß¼­½á¹¹ÓйصÄÊý¾ÝºÍÐÅÏ¢£©¡£]
ÓÉʹÓÃÕßÑ¡Ôñ£¨at user option£©
[¶¨Ò壺ºÏºõ¹æ·¶µÄÈí¼þ¿ÉÒÔ»òÕß±ØÐ루ȡ¾öÓÚ¾ä×ÓÖеÄÇé̬¶¯´Ê£©°´ËùÃèÊöµÄ·½Ê½¹¤×÷; Èç¹ûËüÂú×ãÕâ¸öÌõ¼þ£¬Ëü±ØÐëͬʱÌṩʹÓÃÕßÒ»ÖÖÊֶΣ¬Ê¹µÃʹÓÃÕßÄܹ»ÆôÓúͽûÓÃËùÃèÊöµÄ¹¤×÷·½Ê½¡£]
ÓÐЧÐÔÔ¼Êø£¨validity constraint£©
[¶¨Ò壺ÊÊÓÃÓÚËùÓÐÓÐЧµÄ XML ÎļþµÄÒ»ÖÖ¹æÔò¡£Î¥·´ÓÐЧÐÔÔ¼ÊøÊôÓÚ´íÎó£»½øÐÐÑéÖ¤µÄ XML ´¦ÀíÆ÷±ØÐ룬ÓÉʹÓÃÕßÑ¡Ôñ£¬±¨¸æÕâЩ´íÎó¡£]
¸ñʽÕýÈ·ÐÔÔ¼Êø£¨well-formedness constraint£©
[¶¨Ò壺ÊÊÓÃÓÚËùÓиñʽÕýÈ·µÄ XML ÎļþµÄÒ»ÖÖ¹æÔò¡£Î¥·´¸ñʽÕýÈ·ÐÔÔ¼ÊøÊôÓÚÑÏÖØ´íÎó¡£]
Æ¥Å䣨match£©
[¶¨Ò壺£¨¶ÔÓÚ×Ö·û´®ºÍÃû×Ö£º£©±»±È½ÏµÄÁ½¸ö×Ö·û´®»òÃû×Ö±ØÐëÍêÈ«Ïàͬ¡£ÔÚ ISO/IEC 10646 ÖÐÓжàÖÖ¿ÉÄܱíʾ·½Ê½µÄ×Ö·û£¨ÀýÈ磬¼ÈÓÐÔ¤¶¨Òå (precomposed£© ÐÎʽºÍ»ù×Ö·û (base£© + ±äÒô·ûÐÎʽµÄ×Ö·û£©Ö»ÔÚÁ½¸ö×Ö·û´®Öеıíʾ·½Ê½Ïàͬʱ²ÅÆ¥Åä¡£²»½øÐÐ×Ö·ûµÄ´óСдת»»¡££¨¶ÔÓÚÎÄ·¨ÖеÄ×Ö·û´®ºÍ¹æÔò£º£©Èç¹ûÒ»¸ö×Ö·û´®ÊôÓÚÒ»¸öÎÄ·¨²úÉúʽ²úÉúµÄÓïÑÔ£¬ÔòËüÆ¥ÅäÕâ¸ö²úÉúʽ¡££¨¶ÔÓÚÄÚÈݺÍÄÚÈÝÄ£ÐÍ£º£©µ±Ò»¸öÔªËØ·ûºÏ "ÔªËØÓÐЧÐÔ"Ô¼ÊøÖеÄÃèÊöʱ£¬ËüÆ¥ÅäÆäÉùÃ÷¡£]
³öÓÚ¼æÈÝÐÔ¿¼ÂÇ£¨for compatibility£©
[¶¨Ò壺ָ³ö´Ë¾äÃèÊöµÄ XML ÌØÐÔÍêȫֻÊÇΪÁËºÍ SGML ±£³Ö¼æÈÝ ¡£]
³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¨for interoperability£©
[¶¨Ò壺ָ³ö´Ë¾äÊÇÒ»¸ö²»¾ßÔ¼ÊøÐԵĽ¨Ò飬ĿµÄÊÇÔö¼Ó XML ÎļþÄܱ»ÔÚ ISO 8879 µÄ WebSGML ¸Ä±à¸½¼þ֮ǰÒÑÓÐµÄ SGML ´¦ÀíÆ÷´¦ÀíµÄ¿ÉÄÜÐÔ¡£]

2. Îļþ

[¶¨Ò壺Èç¹ûÒ»¸öÊý¾Ý¶ÔÏóÂú×ã±¾¹æ·¶ÖиñʽÕýÈ·µÄÖ®¶¨Òåʱ£¬ËüÊÇÒ»¸ö XML Îļþ¡£Ò»¸ö¸ñʽÕýÈ·µÄ XML Îļþ¿ÉÒÔ¸ü½øÒ»²½ÊÇÓÐЧµÄ£¬Èç¹ûËüÂú×ãijЩ½øÒ»²½µÄÔ¼ÊøµÄ»°¡£]

ÿһ¸ö XML Îļþ¶¼ÓÐÂß¼­ºÍÎïÀí½á¹¹¡£ÎïÀíÉ϶øÑÔ£¬ÎļþÓɳÆÎªÊµÌåµÄµ¥Ôª×é³É¡£Ò»¸öʵÌå¿ÉÒÔÒýÓã¨refer£©ÆäËûʵÌ壬½«ËüÃǰüº¬ÔÚÎļþÖС£Îļþ¿ªÊ¼ÓÚ"¸ù£¨root£©"»òÎļþʵÌå¡£Âß¼­É϶øÑÔ£¬ÎļþÓÉÉùÃ÷£¬ÔªËØ£¬×¢ÊÍ£¬×Ö·ûÒýÓúʹ¦ÀíÖ¸Áî×é³É£¬ËùÓÐÕâЩ¶¼ÔÚÎļþÖÐÓÃÏÔʽ±ê¼ÇÖ¸Ã÷¡£Âß¼­ºÍÎïÀí½á¹¹±ØÐëÈç"4.3.2 ¸ñʽÕýÈ·µÄÒÑÎöʵÌå"ÖÐËùÃèÊöµÄÄÇÑùÑϸñµØÇ¶Ìס£

2.1 ¸ñʽÕýÈ·µÄ XML Îļþ£¨Well-Formed XML Documents£©

[¶¨Ò壺һ¸öÎı¾¶ÔÏóÊÇÒ»¸ö¸ñʽÕýÈ·µÄ XML ÎļþÈç¹ûËüÂú×㣺]

  1. ×÷Ϊһ¸öÕûÌ壬ËüÆ¥Åä document ²úÉúʽ¡£
  2. ËüÂú×ã±¾¹æ·¶Öж¨ÒåµÄËùÓиñʽÕýÈ·ÐÔÔ¼Êø¡£
  3. ´ËÎļþÖÐÖ±½Ó»ò¼ä½ÓÒýÓõÄÿһ¸öÒÑÎöʵÌå¶¼ÊǸñʽÕýÈ·µÄ¡£
Îļþ
[1]    document    ::=    prolog element Misc*

Æ¥Åä document ²úÉúʽÒâζ×Å£º

  1. Ëü°üº¬Ò»¸ö»ò¶à¸öÔªËØ¡£
  2. [¶¨Ò壺ÓÐÇÒ½öÓÐÒ»¸ö³ÆÎª¸ù£¨root£©»òÎļþÔªËØµÄÔªËØ£¬Ëü²»³öÏÖÔÚÆäËûÈκÎÔªËØµÄÄÚÈÝ£¨content£©ÖС£] ¶ÔÓÚÆäËûËùÓÐÔªËØ£¬Èç¹ûÆðʼ±êÇ©ÔÚÁíÒ»¸öÔªËØµÄÄÚÈÝÖУ¬ÔòÆä½áÊø±êǩҲÔÚÍ¬Ò»ÔªËØµÄÄÚÈÝÖС£»»Ò»¸ö¸ü¼òµ¥µÄ˵·¨£¬ÒÔÆðʼ±êÇ©ºÍ½áÊø±êǩΪ½çµÄ¸÷¸öÔªËØ£¬±ØÐëÑϸñµØÇ¶Ìס£

[¶¨Ò壺ÕâÑù×öµÄ½á¹ûÊÇ£¬¶ÔÓÚÿһ¸ö·Ç¸ùµÄÔªËØ C£¬ÎļþÖÐÁíÓÐÒ»¸öÔªËØ P£¬C ÔÚ P µÄÄÚÈÝÖУ¬¶ø²»ÔÚÆäËûÈκα» P Ëù°üº¬µÄÔªËØµÄÄÚÈÝÖС£P ±»³ÆÎª C µÄ¸¸ÔªËØ£¨parent£©£¬¶ø C ±»³ÆÎª P µÄ×ÓÔªËØ£¨child£©¡£]

2.2 ×Ö·û

[¶¨Ò壺һ¸öÒÑÎöʵÌå°üº¬Îı¾£¨text£©£¬Îı¾ÊÇÒ»¸ö×Ö·û£¨character£©ÐòÁУ¬¿ÉÒÔ±íʾ±ê¼Ç»ò×Ö·ûÊý¾Ý¡£] [¶¨Ò壺һ¸ö×Ö·ûÊÇ ISO/IEC 10646 [ISO/IEC 10646]£¨»ò [ISO/IEC 10646-2000]£©Öж¨ÒåµÄÎı¾×îСµ¥Ôª¡£ºÏ·¨µÄ×Ö·û°üÀ¨ÖƱí·û£¬»Ø³µ£¬»»ÐÐÒÔ¼° Unicode ºÍ ISO/IEC 10646 Öж¨ÒåµÄºÏ·¨×Ö·û¡£ÔÚÖÆ¶¨±¾ÎĵµÊ±£¬ÔÚ¸½Â¼ A.1 Õýʽ²Î¿¼ÎÄÏ×ÖÐÒýÓõıê×¼¶¼Êǵ±Ê±µÄ×îа汾£¬ÔÚÕâЩ±ê×¼µÄÔö²¹°æ»òаæÖпÉÄÜ»á¼ÓÈëеÄ×Ö·û¡£Òò´Ë£¬XML ´¦ÀíÆ÷±ØÐëÄܽÓÊܲúÉúʽ Char ÖÐËù¶¨Ò巶ΧÄÚµÄÈÎÒâ×Ö·û¡£²»ÌᳫʹÓà [Unicode] 6.8 ½Ú£¨»ò [Unicode3] 3.6 ½Ú D21 £©Öж¨ÒåµÄ"¼æÈÝ×Ö·û£¨compatibility characters£©"¡£]

×Ö·û·¶Î§
[2]    Char    ::=    #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* ³ýÁË´úÓÿ飨surrogate block£©£¬FFFE ºÍ FFFF ÒÔÍâµÄÈÎÒâ Unicode ×Ö·û¡£*/

½«×Ö·û´úÂë±àÂë³ÉλģʽµÄ»úÖÆ¸÷¸öʵÌå¼ä¿ÉÄÜ»áÓÐËù²»Í¬¡£ËùÓÐµÄ XML ´¦ÀíÆ÷±ØÐë½ÓÊÜ 10646 ÖÐµÄ UTF-8 ºÍ UTF-16 ±àÂ룻ÓÃÓÚÖ¸³öËùÓñàÂë»òÖ¸¶¨Ê¹ÓÃÆäËû±àÂëµÄ»úÖÆÔÚºóÃæµÄ"4.3.3 ÊµÌåÖеÄ×Ö·û±àÂë"ÖÐÌÖÂÛ¡£

2.3 ͨÓÃÓï·¨³É·Ö

±¾½ÚÖж¨ÒåÁËһЩÔÚÎÄ·¨Öй㷺ʹÓõķûºÅ¡£

S£¨¿Õ°×£©°üÀ¨Ò»¸ö»ò¶à¸ö¿Õ¸ñ×Ö·û£¨#x20£©£¬»Ø³µ£¬»»ÐкÍÖÆ±í·û¡£

¿Õ°×
[3]    S    ::=    (#x20 | #x9 | #xD | #xA)+

Ϊ·½±ãÆð¼û£¬×Ö·û±»·ÖΪ×Öĸ£¬Êý×ÖºÍÆäËû×Ö·ûÈýÀà¡£×Öĸ¿ÉÒÔÊÇ×Öĸ±íÖеÄ×Öĸ£¬»òÊÇÒ»¸öÒô½Ú»ù×Ö·û£¨syllabic base character£©£¬Ò²¿ÉÒÔÊÇÒ»¸ö±íÒâ×Ö·û¡£ÔÚ"B. ×Ö·ûµÄ·ÖÀà"Öиø³öÁËÿһÀà×Ö·ûµÄÍêÕû¶¨Òå¡£

[¶¨Ò壺Ãû×Ö£¨name£©ÊÇÒÔ×Öĸ»òijЩ±êµã·ûºÅ¿ªÍ·µÄ¼ÇºÅ£¬ºó¸ú×Öĸ£¬Êý×Ö£¬Á¬×Ö·û£¬Ï»®Ïߣ¬Ã°ºÅ»ò¾äºÅ£¬ÕâЩ·ûºÅͳ³ÆÎªÃüÃû×Ö·û£¨name character£©¡£] ÒÔ "xml" »òÆäËûÈÎºÎÆ¥Åä (('X'|'x') ('M'|'m') ('L'|'l')) µÄ×Ö·û´®¿ªÍ·µÄÃû×Ö£¬±»±£ÁôÓÃÓÚ±¾¹æ·¶µÄ´Ë°æ±¾»òºóÐø°æ±¾µÄ±ê×¼»¯¡£

×¢£º

XML ½¨ÒéÖеÄÃûÓò [XML Names] ¸³ÓèÁ˰üº¬Ã°ºÅµÄÃû×ÖijÖÖº¬Òå¡£Òò´Ë³ý·ÇÓÃÓÚÃûÓò£¬XML Îļþ×÷Õß²»Ó¦¸ÃÔÚ XML Ãû×ÖÖÐʹÓÃðºÅ£¬µ« XML ´¦ÀíÆ÷Ó¦¸Ã½ÓÊÜðºÅ×÷Ϊһ¸öÃüÃû×Ö·û¡£

Nmtoken£¨Ãû×ּǺţ¬name token£©ÊÇÈκÎÃüÃû×Ö·ûµÄ»ìºÏÌå¡£

Ãû×ֺͼǺÅ
[4]    NameChar    ::=    Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
[5]    Name    ::=    (Letter | '_' | ':') (NameChar)*
[6]    Names    ::=    Name (S Name)*
[7]    Nmtoken    ::=    (NameChar)+
[8]    Nmtokens    ::=    Nmtoken (S Nmtoken)*

³£Á¿Êý¾ÝÊÇÈκÎÓÃÒýºÅÀ¨ÆðµÄ×Ö·û´®£¬²»°üÀ¨ÓÃ×÷¶¨½ç·ûµÄÒýºÅ¡£³£Á¿ÓÃÓÚÖ¸Ã÷ÄÚ²¿ÊµÌåµÄÄÚÈÝ£¨EntityValue£©£¬ÊôÐÔÖµ£¨AttValue£©£¬ÒÔ¼°Íⲿ±êʶ·û£¨SystemLiteral£©¡£×¢Ò⣬¶Ô SystemLiteral µÄÓï·¨·ÖÎö¿ÉÒÔ²»É¨Ãè±ê¼Ç¡£

³£Á¿
[9]    EntityValue    ::=    '"' ([^%&"] | PEReference | Reference)* '"'
|  "'" ([^%&'] | PEReference | Reference)* "'"
[10]    AttValue    ::=    '"' ([^<&"] | Reference)* '"'
|  "'" ([^<&'] | Reference)* "'"
[11]    SystemLiteral    ::=    ('"' [^"]* '"') | ("'" [^']* "'")
[12]    PubidLiteral    ::=    '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13]    PubidChar    ::=    #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]

×¢£º

ËäÈ»²úÉúʽ EntityValue ÔÊÐí¶¨ÒåÖ»°üº¬µ¥¸ö < µÄʵÌ壨È磬<!ENTITY mylt "<">£©£¬µ«ÊÇÇ¿ÁÒ½¨Òé±ÜÃâÕâÖÖÓ÷¨£¬ÒòΪ¶Ô´ËʵÌåµÄÈκÎÒýÓö¼»áÒýÆðÒ»¸ö¸ñʽÕýÈ·ÐÔ´íÎó¡£

2.4 ×Ö·ûÊý¾ÝºÍ±ê¼Ç

Îı¾ÓÉ×Ö·ûÊý¾ÝºÍ±ê¼Ç»ìºÏ¹¹³É¡£[¶¨Ò壺±ê¼Ç°üÀ¨Æðʼ±êÇ©£¬½áÊø±êÇ©£¬¿ÕÔªËØ±êÇ©£¬ÊµÌåÒýÓã¬×Ö·ûÒýÓã¬×¢ÊÍ£¬CDATA ¶Î¶¨½ç·û£¬ÎļþÀàÐÍÉùÃ÷£¬´¦ÀíÖ¸ÁXML ÉùÃ÷£¬Îı¾ÉùÃ÷£¬ÒÔ¼°ÈκÎÔÚÎļþʵÌå¶¥²ãµÄ¿Õ°×£¨¼´£¬ÔÚÎļþÔªËØÖ®ÍâÇÒ²»ÔÚÈÎºÎÆäËûµÄ±ê¼ÇÖУ©¡£]

[¶¨Ò壺ÆäËûËùÓзDZê¼ÇµÄÎı¾×é³ÉÎļþµÄ×Ö·ûÊý¾Ý¡£]

"and"ºÅ£¨&£©ºÍ×ó¼âÀ¨ºÅ£¨<£©Ö»ÓÐ×÷Ϊ±ê¼Ç¶¨½ç·û£¬»òÔÚ×¢ÊÍ£¬´¦ÀíÖ¸Á»ò CDATA ¶ÎÖÐʱ²ÅÄÜÒÔ³£Á¿ÐÎʽ³öÏÖ¡£Èç¹ûÔÚÆäËûµØ·½ÐèÒªÓõ½ÕâÁ½¸ö×Ö·û£¬ËüÃDZØÐëÓÃÊýֵʽ×Ö·ûÒýÓÃÀ´×ªÒå»ò·Ö±ðÓÃ×Ö·û´®"&amp;"ºÍ"&lt;"±íʾ¡£ÓÒ¼âÀ¨ºÅ(>£©¿ÉÒÔÓÃ"&gt;"±íʾ£¬¶øµ±ËüÔÚÄÚÈÝÖеÄ×Ö·û´®"]]>"ÖгöÏÖ£¬µ«´Ë×Ö·û´®²»±íʾһ¸ö CDATA ¶ÎµÄ½áÊøÊ±£¬³öÓÚ¼æÈÝÐÔ¿¼ÂÇ£¬±ØÐëÓÃ"&gt;"»òÒ»¸ö×Ö·ûÒýÓÃתÒåµÃµ½¡£

ÔÚÒ»¸öÔªËØµÄÄÚÈÝÖУ¬×Ö·ûÊý¾Ý¿ÉÒÔÊDz»°üÀ¨Èκαê¼ÇµÄÆðʼ¶¨½ç·ûµÄÈÎÒâ×Ö·û´®¡£ÔÚÒ»¸ö CDATA ¶ÎÖУ¬×Ö·ûÊý¾Ý¿ÉÒÔÊDz»°üÀ¨ CDATA ¶Î½áÊø¶¨½ç·û"]]>"µÄÈÎÒâ×Ö·û´®¡£

ΪÁËÔÊÐíÔÚÊôÐÔÖµÖаüº¬µ¥ÒýºÅºÍË«ÒýºÅ£¬Ê¡ÂÔ·û»ò³Æµ¥ÒýºÅ£¨'£©¿ÉÒÔ±»±íʾΪ"&apos;"£¬¶øË«ÒýºÅ£¨"£©¿ÉÒÔ±»±íʾΪ"&quot;"¡£

×Ö·ûÊý¾Ý
[14]    CharData    ::=    [^<&]* - ([^<&]* ']]>' [^<&]*)

2.5 ×¢ÊÍ

[¶¨Ò壺עÊÍ¿ÉÒÔÔÚÆäËû±ê¼ÇÖ®ÍâµÄÎļþÖеÄÈκÎλÖóöÏÖ¡£ÁíÍ⣬ËüÃÇ¿ÉÒÔÔÚÎļþÀàÐÍÉùÃ÷ÖÐÎÄ·¨ÔÊÐíµÄµØ·½³öÏÖ¡£ËüÃDz»ÊÇÎļþ×Ö·ûÊý¾ÝµÄÒ»²¿·Ö£¬XML ´¦ÀíÆ÷¿ÉÒÔ£¬µ«²»ÊDZØÐ룬ÔÊÐíÒ»¸öÓ¦ÓüìË÷×¢Ê͵ÄÎı¾¡£³öÓÚ¼æÈÝÐÔ¿¼ÂÇ£¬×Ö·û´®"--"£¨Ë«Á¬×Ö·û£©²»ÄÜÔÚ×¢ÊÍÖгöÏÖ¡£] ×¢ÊÍÖеIJÎÊýʵÌå²»±»Ê¶±ð¡£

×¢ÊÍ
[15]    Comment    ::=    '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

×¢Ê͵ÄÒ»¸öÀý×Ó£º

<!-- declarations for <head> & <body> -->

×¢Ò⣬´ËÎÄ·¨²»ÔÊÐí×¢ÊÍÒÔ ---> ½áβ¡£ÏÂÃæµÄÀý×Ó²»ÊǸñʽÕýÈ·µÄ¡£

<!-- B+, B, or B--->

2.6 ´¦ÀíÖ¸Áî

[¶¨Ò壺´¦ÀíÖ¸ÁPI£©ÔÊÐíÎļþÖаüº¬ÓÉÓ¦ÓÃÀ´´¦ÀíµÄÖ¸Áî¡£]

´¦ÀíÖ¸Áî
[16]    PI    ::=    '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17]    PITarget    ::=    Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

PI ²»ÊÇÎļþ×Ö·ûÊý¾ÝµÄÒ»²¿·Ö£¬µ«±ØÐë´«µÝ¸øÓ¦Óá£PI ÒÔÓÃÓÚָʾ´«µÝ¸øÄĸöÓ¦ÓõÄÄ¿±ê£¨PITarget£©¿ªÍ·¡£Ä¿±êÃû×Ö "XML"£¬"xml"£¬µÈµÈ£¬±£ÁôÓÃÓÚ±¾¹æ·¶µÄ´Ë°æ±¾»òºóÐø°æ±¾µÄ±ê×¼»¯¡£XML ¼Ç·¨»úÖÆ¿ÉÒÔÓÃÓÚ PI Ä¿±êµÄÐÎʽ»¯ÉùÃ÷¡£²ÎÊýʵÌåÔÚ´¦ÀíÖ¸ÁîÖв»±»Ê¶±ð¡£

2.7 CDATA ¶Î

[¶¨Ò壺CDATA ¶Î¿ÉÒÔ³öÏÖÔÚ×Ö·ûÊý¾Ý¿ÉÒÔ³öÏÖµÄÈκεط½£¬ËüÃÇÓÃÓÚתÒå°üº¬»á±»Ê¶±ðΪ±ê¼ÇµÄ×Ö·û´®µÄÎı¾¿é¡£CDATA ¶ÎÒÔ×Ö·û´® "<![CDATA[" ¿ªÊ¼£¬ÒÔ×Ö·û´® "]]>" ½áÊø£º]

CDATA ¶Î
[18]    CDSect    ::=    CDStart CData CDEnd
[19]    CDStart    ::=    '<![CDATA['
[20]    CData    ::=    (Char* - (Char* ']]>' Char*))
[21]    CDEnd    ::=    ']]>'

ÔÚÒ»¸ö CDATA ¶ÎÄÚ£¬Ö»ÓÐ CDEnd ×Ö·û´®±»Ê¶±ðΪ±ê¼Ç£¬Òò´Ë×ó¼âÀ¨ºÅºÍ"&"¿ÉÒÔÒÔËüÃǵij£Á¿ÐÎʽ³öÏÖ£¬²»ÐèÒª£¨Ò²²»ÄÜ£©±»»»ÂëΪ"&lt;"ºÍ"&amp;"¡£CDATA ¶Î²»ÄÜǶÌס£

Ò»¸ö CDATA ¶ÎµÄÀý×Ó£¬ÆäÖÐ"<greeting>"ºÍ"</greeting>"±»Ê¶±ðΪ×Ö·ûÊý¾Ý£¬¶ø²»ÊDZê¼Ç£º

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

2.8 ÐòÑÔ£¨prolog£©ºÍÎļþÀàÐÍÉùÃ÷

[¶¨Ò壺XML ÎļþÓ¦¸ÃÒÔÒ»¸ö XML ÉùÃ÷¿ªÊ¼£¬ÆäÖÐÖ¸Ã÷ÁËËùÓà XML µÄ°æ±¾¡£] ÀýÈ磬ÒÔÏÂÊÇÒ»¸öÍêÕûµÄ XML Îļþ£¬ËüÊǸñʽÕýÈ·µÄ£¬µ«²»ÊÇÓÐЧµÄ£º

<?xml version="1.0"?>
<greeting>Hello, world!</greeting>

ÏÂÃæÕâ¸öҲͬÑù£º

<greeting>Hello, world!</greeting>

°æ±¾ºÅ "1.0" Ó¦¸ÃÓÃÓÚ±íÃ÷Óë±¾¹æ·¶µÄ±¾°æ±¾ÏàÒ»Ö£¬Èç¹ûʹÓÃÁËÖµ "1.0" µ«ÓÖÓë±¾¹æ·¶µÄ±¾°æ±¾²»Ò»Ö£¬ÄÇôÕâÊÇÎļþµÄÒ»¸ö´íÎó¡£XML ¹¤×÷×é´òË㸳Óè±¾¹æ·¶µÄºóÐø°æ±¾²»Í¬ÓÚ "1.0" µÄÊýÖµ£¬µ«Õâ²¢²»´ú±í¿ª·¢ºóÐø°æ±¾µÄ³Ðŵ£¬Ò²²»´ú±íÈç¹ûÓкóÐø°æ±¾£¬»áʹÓÃÈκÎÌØÊâµÄÃüÃû·½°¸µÄ³Ðŵ¡£ÒòΪ²»ÅųýÓкóÐø°æ±¾µÄ¿ÉÄÜÐÔ£¬ÌṩÁ˱¾¹¹Ô죨construct£©×÷Ϊһµ©ÐèҪʱ½øÐÐ×Ô¶¯°æ±¾Ê¶±ðµÄÊֶΡ£µ±´¦ÀíÆ÷ÊÕµ½µÄÎļþ±êÓÐËüÃDz»Ö§³ÖµÄ°æ±¾Ê±£¬¿ÉÒÔ¸ø³öÒ»¸ö´íÎó¡£

XML ÎļþÖбê¼ÇµÄ¹¦ÄÜÊÇÃèÊöÎļþµÄ´æ´¢¸ñʽºÍÂß¼­½á¹¹£¬²¢½«ÊôÐÔ-Öµ¶ÔºÍÂß¼­½á¹¹¹ØÁªÆðÀ´¡£XML ÌṩһÖÖ³ÆÎªÎļþÀàÐÍÉùÃ÷µÄ»úÖÆ£¬ÓÃÓÚ¶¨Òå¶ÔÂß¼­½á¹¹µÄÔ¼Êø£¬Ö§³ÖÔ¤¶¨Òå´æ´¢µ¥ÔªµÄʹÓá£[¶¨Ò壺Èç¹ûÒ»¸ö XML ÎļþÓÐÏàÓ¦µÄÎļþÀàÐÍÉùÃ÷²¢ÇÒËü×ñÑ­ÆäÖеÄÔ¼Êø£¬Ôò³ÆËüÊÇÓÐЧµÄ£¨valid£©¡£]

ÎļþÀàÐÍÉùÃ÷±ØÐëλÓÚÎļþµÚÒ»¸öÔªËØÖ®Ç°¡£

ÐòÑÔ
[22]    prolog    ::=    XMLDecl? Misc* (doctypedecl Misc*)?
[23]    XMLDecl    ::=    '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[24]    VersionInfo    ::=    S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"')/* */
[25]    Eq    ::=    S? '=' S?
[26]    VersionNum    ::=    ([a-zA-Z0-9_.:] | '-')+
[27]    Misc    ::=    Comment | PI | S

[¶¨Ò壺XML ÎļþÀàÐÍÉùÃ÷°üº¬»òÖ¸Ïò±ê¼ÇÉùÃ÷£¬±ê¼ÇÉùÃ÷ÌṩijһÀàÎļþµÄÎÄ·¨¡£ÕâÖÖÎÄ·¨±»³ÆÎªÎļþÀàÐͶ¨Ò壨document type difinition£¬DTD£©¡£ÎļþÀàÐͶ¨Òå¿ÉÒÔÖ¸ÏòÒ»¸öÍⲿ×Ó¼¯£¨Ò»ÖÖÌØÊâÀàÐ͵ÄÍⲿʵÌ壩£¬»òÕß¿ÉÒÔÔÚÒ»¸öÄÚ²¿×Ó¼¯ÖÐÖ±½Ó°üº¬±ê¼ÇÉùÃ÷£¬»òÕßÁ½Õß¼æÓá£Ò»¸öÎļþµÄÎļþÀàÐͶ¨ÒåÓÉÕâÁ½¸ö×Ó¼¯ºÏÔÚÒ»Æð×é³É¡£]

[¶¨Ò壺±ê¼ÇÉùÃ÷¿ÉÒÔÊÇÔªËØÀàÐÍÉùÃ÷£¬ÊôÐÔ±íÉùÃ÷£¬ÊµÌåÉùÃ÷£¬»òÊǼǷ¨ÉùÃ÷¡£] ÕâЩÉùÃ÷¿ÉÒÔÈçÏÂÃæ¸ñʽÕýÈ·ÐÔºÍÓÐЧÐÔÔ¼ÊøÖÐËùÊö£¬È«²¿»ò²¿·ÖµØ°üº¬ÔÚ²ÎÊýʵÌåÖУ¬"4. ÎïÀí½á¹¹"ÖÐÓиü¶àµÄÐÅÏ¢¡£

ÎļþÀàÐͶ¨Òå
[28]    doctypedecl    ::=    '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl | DeclSep)* ']' S?)? '>' [VC: ¸ùÔªËØÀàÐÍ]
[WFC: Íⲿ×Ó¼¯]
/* */
[28a]    DeclSep    ::=    PEReference | S [WFC: ÉùÃ÷¼äµÄ²ÎÊýʵÌå]
/* */
[29]    markupdecl    ::=    elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment [VC: ÑϸñµÄÉùÃ÷/²ÎÊýʵÌåǶÌ×]
[WFC: ÄÚ²¿×Ó¼¯ÖеIJÎÊýʵÌå]

×¢Ò⣬Ҫ¹¹½¨°üº¬ÁËÒ»¸ö¼È²»Ö¸ÏòÍⲿ×Ó¼¯Ò²²»°üº¬ÄÚ²¿×Ó¼¯µÄ doctypedecl ¶ø¸ñʽÕýÈ·µÄÎļþÊÇ¿ÉÄܵġ£

±ê¼ÇÉùÃ÷¿ÉÒÔÈ«²¿»ò²¿·ÖµØÓɲÎÊýʵÌåµÄÖû»Îı¾×é³É¡£±¾¹æ·¶ºóÃæµÄ¸÷¸ö·ÇÖÕ½á·û£¨elementdecl£¬AttlistDecl£¬µÈµÈ£©²úÉúʽÃèÊöµÄÊÇÔÚËùÓеIJÎÊýʵÌå±»°üº¬£¨include£©Ö®ºóµÄÉùÃ÷¡£

³ýÁËÔÚ³£Á¿£¬´¦ÀíÖ¸ÁעÊͺͱ»ºöÂÔµÄÌõ¼þ¶ÎµÄÄÚÈÝÖгöÏֵIJÎÊýʵÌåÒýÓÃÒÔÍ⣬DTD ÖÐµÄÆäËûÈκεط½£¨ÄÚ²¿»òÍⲿ×Ó¼¯ÒÔ¼°Íⲿ²ÎÊýʵÌ壩µÄ²ÎÊýʵÌåÒýÓö¼±»Ê¶±ð£¨¼û 3.4 Ìõ¼þ¶Î£©¡£ÔÚʵÌåÖµ³£Á¿ÖеIJÎÊýʵÌåÒýÓÃÒ²±»Ê¶±ð¡£ÄÚ²¿×Ó¼¯ÖвÎÊýʵÌåÒýÓõÄʹÓÃÏÞÖÆÈçÏÂËùÊö¡£

ÓÐЧÐÔÔ¼Êø: ¸ùÔªËØÀàÐÍ£¨Root Element Type£©
ÎļþÀàÐÍÉùÃ÷ÖÐµÄ Name ±ØÐëÆ¥Åä¸ùÔªËØµÄÀàÐÍ¡£

ÓÐЧÐÔÔ¼Êø: ÑϸñµÄÉùÃ÷/²ÎÊýʵÌåǶÌ×
²ÎÊýʵÌåµÄÖû»Îı¾±ØÐëÓñê¼ÇÉùÃ÷ÑϸñǶÌס£¼´£¬Èç¹ûÒ»¸ö±ê¼ÇÉùÃ÷£¨ÉÏÃæµÄ markupdecl£©µÄµÚÒ»¸ö»ò×îºóÒ»¸ö×Ö·û±»°üº¬ÓÚÒ»¸ö²ÎÊýʵÌåÒýÓõÄÖû»Îı¾ÖУ¬Á½Õß±ØÐë¶¼ÔÚ´ËÖû»Îı¾ÖС£

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÄÚ²¿×Ó¼¯ÖеIJÎÊýʵÌå

ÔÚÄÚ²¿ DTD ×Ó¼¯ÖУ¬²ÎÊýʵÌåÒýÓÃÖ»ÄܳöÏÖÔÚ±ê¼ÇÉùÃ÷¿ÉÒÔ³öÏֵĵط½£¬¶ø²»ÄÜÔÚ±ê¼ÇÉùÃ÷ÄÚ²¿³öÏÖ¡££¨Õâ¸öÔ¼Êø²»ÊÊÓÃÓÚ³öÏÖÔÚÍⲿ²ÎÊýʵÌåÄÚµÄÒýÓã¬Ò²²»ÊÊÓÃÓÚÍⲿ×Ó¼¯¡££©

¸ñʽÕýÈ·ÐÔÔ¼Êø: Íⲿ×Ó¼¯

Íⲿ×Ó¼¯£¨Èç¹ûÓеϰ£©±ØÐëÆ¥Åä²úÉúʽ extSubset¡£

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÉùÃ÷¼äµÄ²ÎÊýʵÌå

Ò»¸ö DeclSep ÄڵIJÎÊýʵÌåÒýÓõÄÖû»Îı¾±ØÐëÆ¥Åä²úÉúʽ extSubsetDecl¡£

ͬÄÚ²¿×Ó¼¯Ò»Ñù£¬Íⲿ×Ó¼¯ºÍÈκΠDeclSep ÖÐÒýÓõÄÍⲿ²ÎÊýʵÌ壬±ØÐëÓÉһϵÁб»·ÇÖÕ½á·û markupdecl ËùÔÊÐíµÄÍêÕûµÄ±ê¼ÇÉùÃ÷×é³É£¬ÆäÖпÉÒÔ¼ÐÔÓ¿Õ°××Ö·û»ò²ÎÊýʵÌåÒýÓᣵ«ÊÇ£¬Íⲿ×Ó¼¯ºÍÍⲿ²ÎÊýʵÌåµÄ²¿·ÖÄÚÈÝ¿ÉÒÔͨ¹ýʹÓÃÌõ¼þ¶Î£¨conditional section£©±»ÓÐÌõ¼þµØºöÂÔ£¬ÔÚÄÚ²¿×Ó¼¯ÖÐÔò²»ÔÊÐíÕâô×ö¡£

Íⲿ×Ó¼¯
[30]    extSubset    ::=    TextDecl? extSubsetDecl
[31]    extSubsetDecl    ::=    ( markupdecl | conditionalSect | DeclSep)* /* */

Íⲿ×Ó¼¯ºÍÍⲿ²ÎÊýʵÌåÓëÄÚ²¿ÊµÌ岻֮ͬ´¦»¹ÔÚÓÚ£ºÔÚËüÃÇÄÚ£¬²ÎÊýʵÌåÒýÓò»½ö¿ÉÒÔ³öÏÖÔÚ±ê¼ÇÉùÃ÷¼ä£¬»¹¿ÉÒÔ³öÏÖÔÚ±ê¼ÇÉùÃ÷ÄÚ¡£

ÓÐÎļþÀàÐÍÉùÃ÷µÄ XML ÎļþµÄÀý×Ó£º

<?xml version="1.0"?>
<!DOCTYPE greeting SYSTEM "hello.dtd">
<greeting>Hello, world!</greeting>

ϵͳ±êʶ·û "hello.dtd" ¸ø³öÁË´ËÎļþµÄ DTD µÄµØÖ·£¨Ò»¸ö URI ÒýÓã©¡£

ÉùÃ÷Ò²¿ÉÒÔÈçͬÏÂÃæÕâ¸öÀý×ÓÒ»ÑùÖ±½Ó£¨locally£©¸ø³ö£º

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE greeting [
  <!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello, world!</greeting>

Èç¹ûͬʱʹÓÃÍⲿºÍÄÚ²¿×Ó¼¯£¬×Ó¼¯×Ó¼¯±»¿´³É³öÏÖÔÚÍⲿ×Ó¼¯Ö®Ç°£¬ÕâÒâζ×ÅÄÚ²¿×Ó¼¯ÖеÄʵÌåºÍÊôÐÔ±íÉùÃ÷µÄÓÅÏȼ¶Òª±ÈÔÚÍⲿ×Ó¼¯Öеĸߡ£

2.9 ¶ÀÁ¢ÎļþÉùÃ÷

µ±Îļþ´Ó XML ´¦ÀíÆ÷µÝ¸øÓ¦ÓÃʱ£¬±ê¼ÇÉùÃ÷¿ÉÒÔÓ°ÏìËüµÄÄÚÈÝ£¬ÊôÐÔȱʡֵºÍʵÌåÉùÃ÷ÊÇÆäÖеÄÀý×Ó¡£¿ÉÒÔ×÷Ϊ XML ÉùÃ÷Ò»¸ö³É·ÖµÄ¶ÀÁ¢ÎļþÉùÃ÷£¬Ö¸Ã÷ÁËÊÇ·ñ´æÔÚ×ÅÔÚÎļþʵÌåÍâ»òÔÚ²ÎÊýʵÌåÖеÄÉùÃ÷¡£[¶¨Ò壺Íⲿ±ê¼ÇÉùÃ÷±»¶¨ÒåΪ³öÏÖÔÚÍⲿ×Ó¼¯»ò²ÎÊýʵÌ壨Íⲿ»òÄÚ²¿£¬°üÀ¨ÄÚ²¿²ÎÊýʵÌåÊÇÒòΪ²¢²»Ç¿ÖƲ»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷¶ÁÈ¡ÆäÖеıê¼ÇÉùÃ÷£©Öеıê¼ÇÉùÃ÷¡£]

¶ÀÁ¢ÎļþÉùÃ÷
[32]    SDDecl    ::=    S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"')) [VC: ¶ÀÁ¢ÎļþÉùÃ÷]

ÔÚÒ»¸ö¶ÀÁ¢ÎļþÉùÃ÷ÖУ¬Öµ "yes" ±íʾ¶ÔÓÚÎļþʵÌåûÓÐÍⲿ±ê¼ÇÉùÃ÷£¨²»ÂÛÊÇÔÚ DTD Íⲿ×Ó¼¯ÖУ¬»¹ÊÇÔÚÓÉÄÚ²¿ÊµÌåÒýÓõÄÍⲿ²ÎÊýʵÌåÖУ©»áÓ°Ïì´Ó XML ´¦ÀíÆ÷´«µÝ¸øÓ¦ÓõÄÐÅÏ¢¡£Öµ "no" ±íʾÓлò¿ÉÄÜÓÐÕâÑùµÄÍⲿ±ê¼ÇÉùÃ÷¡£×¢Ò⣬¶ÀÁ¢ÎļþÉùÃ÷Ö»ÊDZíʾÍⲿÉùÃ÷µÄ´æÔÚ£¬Èç¹ûÎļþÖдæÔÚ¶ÔÍⲿʵÌåµÄÒýÓ㬶øÕâЩʵÌåÒÑÔÚÄÚ²¿ÉùÃ÷ʱ£¬²»Ó°ÏìËüµÄ¶ÀÁ¢×´Ì¬¡£

Èç¹û²»´æÔÚÍⲿ±ê¼ÇÉùÃ÷£¬¶ÀÁ¢ÎļþÉùÃ÷ûÓÐÒâÒå¡£Èç¹û´æÔÚÍⲿ±ê¼ÇÉùÃ÷£¬µ«Ã»ÓжÀÁ¢ÎļþÉùÃ÷£¬¾Í¼Ù¶¨È¡Öµ "no"¡£

Ä³Ð©ÍøÂç´«ÊäÓ¦ÓÃÒ²ÐíÐèÒª¶ÀÁ¢µÄÎļþ£¬ÈκÎÂú×ã standalone="no" µÄ XML Îļþ¿ÉÒÔͨ¹ýÒ»¶¨µÄË㷨ת»»Îª¶ÀÁ¢Îļþ¡£

ÓÐЧÐÔÔ¼Êø: ¶ÀÁ¢ÎļþÉùÃ÷
¶ÀÁ¢ÎļþÉùÃ÷±ØÐëȡֵΪ "no"£¬Èç¹ûÈκÎÍⲿ±ê¼ÇÉùÃ÷Öаüº¬£º

¾ßÓжÀÁ¢ÎļþÉùÃ÷µÄ XML ÉùÃ÷µÄÀý×Ó£º

<?xml version="1.0" standalone='yes'?>

2.10 ¿Õ°×´¦Àí

Ôڱ༭ XML Îļþʱ£¬Ê¹ÓÃ"¿Õ°×"£¨¿Õ¸ñ£¬ÖƱí·û£¬¿ÕÐУ©À´·Ö¿ª±ê¼ÇÒÔ»ñµÃ¸üºÃµÄ¿É¶ÁÐÔÊǺܷ½±ãµÄ¡£Í¨³£ÔÚÎļþµÄ½»¸¶°æ±¾Öв»Ïë°üº¬ÕâЩ¿Õ°×¡£ÁíÒ»·½Ã棬±ØÐë±£ÁôÔÚ½»¸¶°æ±¾ÖеÄÓÐÒâÒåµÄ¿Õ°×ÊǺܳ£¼ûµÄ£¬ÈçÔÚÊ«¸èºÍÔ´ÂëÖеĿհס£

XML ´¦ÀíÆ÷±ØÐëʼÖհѲ»ÊDZê¼ÇµÄËùÓÐ×Ö·û´«µÝ¸øÓ¦Óᣠһ¸ö½øÐÐÑéÖ¤µÄ XML ´¦ÀíÆ÷±ØÐëͬʱ֪ͨӦÓÃÕâЩ×Ö·ûÖеÄÄÇһЩ×é³ÉÁ˳öÏÖÔÚÔªËØÐÍÄÚÈÝÖеĿհס£

¿ÉÒÔÔÚÔªËØÖи½¼ÓÒ»¸öÃûΪ xml:space µÄÌØÊâÊôÐÔ£¬ÒÔ֪ͨӦÓÃÓ¦¸Ã±£Áô´ËÔªËØÖеĿհס£ÔÚÓÐЧµÄÎļþÖУ¬´ËÊôÐÔºÍÆäËûÊôÐÔÒ»Ñù£¬Ê¹ÓÃʱ±ØÐëÉùÃ÷¡£Ëü±ØÐë±»ÉùÃ÷Ϊö¾ÙÀàÐÍ£¬¿ÉÒÔȡֵ "default" ºÍ "preserve" Á½ÕßÖ®Ò»£¬Ò²¿ÉÒÔÁ½¸ö¶¼È¡¡£ÀýÈ磺

<!ATTLIST poem  xml:space (default|preserve) 'preserve'>

<!-- -->
<!ATTLIST pre xml:space (preserve) #FIXED 'preserve'>

"default" ±íʾ¿ÉÒÔ¶Ô´ËÔªËØÊ¹ÓÃÓ¦ÓõÄȱʡ¿Õ°×´¦Àíģʽ£¬"preserve" ±íʾӦÓÃÓ¦¸Ã±£ÁôËùÓеĿհס£ÕâÊÊÓÃÓÚÆäËù´¦ÔªËصÄÄÚÈÝÖеÄËùÓÐÔªËØ£¬³ý·Ç±»ÁíÒ»¸ö xml:space ÊôÐÔµÄʵÀýËù¸²¸Ç¡£

ÈκÎÎļþµÄ¸ùÔªËØ±»ÈÏΪ¶ÔÓ¦ÓõĿհ״¦Àí·½Ê½²»×÷ÒªÇ󣬳ý·ÇËü¸ø´ËÊôÐÔ¸³ÁËÖµ»ò½«´ËÊôÐÔÉùÃ÷Ϊ´øÈ±Ê¡Öµ¡£

2.11 ÐÐβ´¦Àí

Ϊ±à¼­µÄ·½±ãÆð¼û£¬´æ´¢ XML ÒÑÎöʵÌåµÄ¼ÆËã»úÎļþ¾­³£ÓÃÐÐÀ´×éÖ¯¡£Í¨³£ÕâЩÐÐÓûسµ·û£¨#xD£©ºÍ»»Ðзû£¨#xA£©µÄһЩ×éºÏÀ´·Ö¸ô¡£

ΪÁËʹӦÓõŤ×÷¼òµ¥»¯£¬XML ´¦ÀíÆ÷Ó¦ÔÚ½«×Ö·û´«¸øÓ¦ÓÃǰ£¬½«ÍⲿÒÑÎöʵÌ壨°üÀ¨ÎļþʵÌ壩ÖеÄÁ½×Ö·ûÐòÁÐ "#xD#xA" »òûÓÐÎ²Ëæ #xA µÄ #xD ÔÚ½øÐÐÓï·¨·ÖÎöǰת»»³Éµ¥¸ö #xA ×Ö·û¡£

2.12 ÓïÑÔ±êʶ

ÔÚ½øÐÐÎļþ´¦Àíʱ£¬±êʶ³öÆäÄÚÈÝËùʹÓõÄ×ÔÈ»»òÐÎʽ»¯ÓïÑÔ¾­³£ÊǺÜÓÐÓõġ£¿ÉÒÔÔÚÎļþÖвåÈëÒ»¸öÃûΪ xml:lang µÄÌØÊâÊôÐÔÓÃÓÚÖ¸³ö XML ÎļþÖÐÈκÎÔªËØµÄÄÚÈݺÍÊôÐÔËùʹÓõÄÓïÑÔ¡£ÔÚÓÐЧµÄÎļþÖУ¬´ËÊôÐÔºÍÆäËûÊôÐÔÒ»Ñù£¬Ê¹ÓÃʱ±ØÐëÉùÃ÷¡£´ËÊôÐÔµÄÖµÊÇ [IETF RFC 1766]£¬Tags for the Identification of Languages »òÆäºóµÄ ITEF ±ê×¼Öж¨ÒåµÄÓïÑÔ±êʶ·û¡£

×¢£º

[IETF RFC 1766] ÖеıêÇ©ÓÉ [ISO 639] Öж¨ÒåµÄÁ½×ÖĸÓïÑÔÂëºÍ [ISO 3166] Öж¨ÒåµÄÁ½×Öĸ¹ú¼ÒÂë¹¹³É£¬»òÕßÓÉ Internet Assigned Numbers Authority [IANA-LANGCODES] ×¢²áµÄÓïÑÔ±êʶ·û¹¹³É¡£ Ô¤¼Æ [IETF RFC 1766] µÄºó¼Ì±ê×¼½«»áÒýÈëÈý×ÖĸÓïÑÔÂëÓÃÓÚ±íʾ [ISO 639] ÖÐûÓÐÉæ¼°µÄÓïÑÔ¡£

£¨²úÉúʽ 33 µ½ 38 Òѱ»É¾³ý¡££©

¾ÙÀýÈçÏ£º

<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>durchaus studiert mit heißem Bemüh'n.</l>
  </sp>

xml:lang Ëù±íʾµÄÓïÑÔÑ¡ÔñÊÊÓÃÓÚËüËù´¦ÔªËصÄËùÓÐÊôÐÔºÍÄÚÈÝ£¬³ý·Ç±»´ËÄÚÈÝÖеÄÔªËØÄÚµÄÁíÒ»¸ö xml:lang µÄʵÀýËù¸²¸Ç¡£

xml:lang µÄÒ»¸ö¼òµ¥ÉùÃ÷¿ÉÒÔ²ÉÓÃÈçÏÂÐÎʽ£º

xml:lang  NMTOKEN  #IMPLIED

µ«ÊÇÈç¹ûºÏÊʵϰ£¬Ò²¿ÉÒÔ¸ø³öÌØ¶¨µÄȱʡֵ¡£ÔÚÒ»±¾¹©Ó¢¹úѧÉúʹÓõķ¨ÎÄÊ«¸è¼¯ÖУ¬ÆÀ×¢ºÍ×¢½âʹÓÃÓ¢Óxml:lang ÊôÐÔ¿ÉÒÔÕâÑùÉùÃ÷£º

    <!ATTLIST poem   xml:lang NMTOKEN 'fr'>
    <!ATTLIST gloss  xml:lang NMTOKEN 'en'>
    <!ATTLIST note   xml:lang NMTOKEN 'en'>

3. Âß¼­½á¹¹

[¶¨Ò壺ÿ¸ö XML Îļþ°üº¬Ò»¸ö»ò¶à¸öÔªËØ£¬ËüÃǵı߽çÓÃÆðʼ±êÇ©ºÍ½áÊø±êÇ©·Ö¸ô£¬»òÕߣ¬¶ÔÓÚ¿ÕÔªËØ£¬ÓÃÒ»¸ö¿ÕÔªËØ±êÇ©·Ö¸ô¡£Ã¿Ò»¸öÔªËØÓÐÒ»¸öÓÃÃû×Ö±êʶµÄÀàÐÍ£¬ÓÐʱ³ÆÖ®ÎªËüµÄ"ͨÓñêʶ·û£¨generic identifier£©"£¨GI£©£¬Í¬Ê±Ëü¿ÉÒÔÓÐÒ»¸öÊôÐÔֵ˵Ã÷£¨attribute specification£©¼¯¡£] ÿһ¸öÊôÐÔֵ˵Ã÷ÓÐÒ»¸öÃû×ÖºÍÒ»¸öÖµ¡£

ÔªËØ
[39]    element    ::=    EmptyElemTag
| STag content ETag [WFC: ÔªËØÀàÐÍÆ¥Åä]
[VC: ÔªËØÓÐЧÐÔ]

³ýÁËÄÇЩ¿ªÍ·Æ¥Åä(('X'|'x')('M'|'m')('L'|'l'))µÄÃû×Ö±£ÁôÓÃÓÚ±¾¹æ·¶µÄ´Ë°æ±¾ºÍºó¼Ì°æ±¾µÄ±ê×¼»¯Í⣬±¾¹æ·¶²»¶ÔÔªËØÀàÐͺÍÊôÐÔµÄÓïÒ壬Ó÷¨ºÍÃû×Ö£¨Óï·¨Ö®Í⣩×÷³öÏÞÖÆ¡£

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÔªËØÀàÐÍÆ¥Åä
ÔªËØ½áÊø±êÇ©ÖÐµÄ Name ±ØÐëºÍÆðʼ±êÇ©ÖеÄÔªËØÀàÐÍÏàÆ¥Åä¡£

ÓÐЧÐÔÔ¼Êø: ÔªËØÓÐЧÐÔ
Èç¹ûÓÐÒ»¸öÓë elementdecl ÏàÆ¥ÅäµÄÉùÃ÷µÄ Name ÓëÔªËØÀàÐÍÏàÆ¥Å䣬ÇÒÏÂÊöÖ®Ò»³ÉÁ¢Ê±£¬³Æ´ËÔªËØÊÇÓÐЧµÄ£º

  1. ´ËÉùÃ÷Óë EMPTY ÏàÆ¥Å䣬ͬʱ´ËÔªËØÃ»ÓÐÄÚÈÝ¡£
  2. ´ËÉùÃ÷Óë children ÏàÆ¥Å䣬ͬʱ×ÓÔªËØµÄÐòÁÐÊôÓÚÄÚÈÝÄ£ÐÍÖеÄÕýÔò±í´ïʽËù²úÉúµÄÓïÑÔ£¬ÔÚÆðʼ±êÇ©ºÍµÚÒ»¸ö×ÓÔªËØÖ®¼ä£¬×ÓÔªËØÖ®¼äÒÔ¼°×îºóÒ»¸ö×ÓÔªËØºÍ½áÊø±êǩ֮¼äÔÊÐíÓпհף¨Æ¥Åä·ÇÖÕ½á·û S µÄ×Ö·û£©¡£×¢Ò⣬½ö°üÀ¨¿Õ°×µÄ CDATA ¶Î²»Æ¥Åä·ÇÖÕ½á·û S£¬Òò´Ë²»ÄÜÔÚÕâЩλÖóöÏÖ¡£
  3. ´ËÉùÃ÷Óë Mixed ÏàÆ¥Å䣬ͬʱÄÚÈÝÓÉÆäÀàÐÍÆ¥ÅäÄÚÈÝÄ£ÐÍÖеÄÃû×ÖµÄ×Ö·ûÊý¾ÝºÍ×ÓÔªËØ×é³É¡£
  4. ´ËÉùÃ÷Óë ANY ÏàÆ¥Å䣬ͬʱÿ¸ö×ÓÔªËØµÄÀàÐ;ùÒÑÉùÃ÷¡£

3.1 Æðʼ±êÇ©£¬½áÊø±êÇ©ºÍ¿ÕÔªËØ±êÇ©

[¶¨Ò壺ÿһ¸ö·Ç¿Õ XML ÔªËØÒÔÒ»¸öÆðʼ±êÇ©×÷Ϊ¿ªÊ¼µÄ±ê¼Ç¡£]

Æðʼ±êÇ©
[40]    STag    ::=    '<' Name (S Attribute)* S? '>' [WFC: ΨһµÄÊôÐÔֵ˵Ã÷]
[41]    Attribute    ::=    Name Eq AttValue [VC: ÊôÐÔÖµÀàÐÍ]
[WFC: ÎÞÍⲿʵÌåÒýÓÃ]
[WFC: ÔÚÊôÐÔÖµÖÐûÓÐ<]

Æðʼ±êÇ©ºÍ½áÊø±êÇ©ÖÐµÄ Name ¸ø³öÁËÔªËØµÄÀàÐÍ¡£[¶¨Ò壺Name-AttValue ¶Ô±»Í³³ÆÎªÔªËصÄÊôÐÔֵ˵Ã÷]£¬[¶¨Ò壺ÆäÖÐÿһ¶ÔÖÐµÄ Name ±»³ÆÎªÊôÐÔÃû]£¬[¶¨Ò壺AttValue µÄÄÚÈÝ£¨ÔÚ'»ò"¶¨½ç·û¼äµÄÎı¾£©±»³ÆÎªÊôÐÔÖµ]¡£×¢Ò⣬ÔÚÆðʼ±êÇ©ºÍ¿ÕÔªËØ±êÇ©Öи÷¸öÊôÐÔÖµÉùÃ÷µÄ´ÎÐòûÓÐÒâÒå¡£

¸ñʽÕýÈ·ÐÔÔ¼Êø: ΨһµÄÊôÐÔֵ˵Ã÷
Ò»¸öÊôÐÔÃûÖ»ÄÜÔÚͬһ¸öÆðʼ±êÇ©»ò¿ÕÔªËØ±êÇ©ÖгöÏÖÒ»´Î¡£

ÓÐЧÐÔÔ¼Êø: ÊôÐÔÖµÀàÐÍ
ÊôÐÔ±ØÐë±»ÉùÃ÷£¬ÆäÖµ±ØÐë¾ßÓÐËùÉùÃ÷µÄÀàÐÍ¡££¨ÊôÐÔÀàÐͲμû"3.3 ÊôÐÔ±íÉùÃ÷"¡££©

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÎÞÍⲿʵÌåÒýÓÃ
ÊôÐÔÖµ²»Äܰüº¬¶ÔÍⲿʵÌåÖ±½Ó»ò¼ä½ÓµÄʵÌåÒýÓá£

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÔÚÊôÐÔÖµÖÐûÓÐ <
ÔÚÒ»¸öÊôÐÔÖµÖÐÖ±½Ó»ò¼ä½ÓÒýÓõÄʵÌåµÄÖû»Îı¾²»Äܰüº¬ < ¡£

Æðʼ±êÇ©µÄÒ»¸öÀý×Ó£º

<termdef id="dt-dog" term="dog">

[¶¨Ò壺ÓÉÒ»¸öÆðʼ±êÇ©¿ªÊ¼µÄÿһ¸öÔªËØ±ØÐëÓÃÒ»¸ö½áÊø±êÇ©±ê¼ÇÆä½áÊø£¬½áÊø±êÇ©ÖеÄÃû×Ö±ØÐëÓëÆðʼ±êÇ©Öиø³öµÄÔªËØÀàÐÍÏàͬ£º]

½áÊø±êÇ©
[42]    ETag    ::=    '</' Name S? '>'

½áÊø±êÇ©µÄÒ»¸öÀý×Ó£º

</termdef>

[¶¨Ò壺ÔÚÆðʼ±êÇ©ºÍ½áÊø±êÇ©ÖеÄÎı¾±»³ÆÎªÔªËصÄÄÚÈÝ£º]

ÔªËØµÄÄÚÈÝ
[43]    content    ::=    CharData? ((element | Reference | CDSect | PI | Comment) CharData?)* /* */

[¶¨Ò壺³ÆÃ»ÓÐÄÚÈݵÄÔªËØÆäÄÚÈÝΪ¿Õ¡£] ¿ÕÔªËØ¿ÉÒÔÓÃÒ»¸öÆðʼ±êÇ©½ô¸úÒ»¸ö½áÊø±êÇ©µÄ·½Ê½»ò¿ÕÔªËØ±êÇ©À´±íʾ¡£[¶¨Ò壺¿ÕÔªËØ±êÇ©ÓÐÒ»ÖÖÌØÊâµÄÐÎʽ£º]

¿ÕÔªËØ±êÇ©
[44]    EmptyElemTag    ::=    '<' Name (S Attribute)* S? '/>' [WFC: ΨһµÄÊôÐÔֵ˵Ã÷]

²»ÂÛÔªËØÊÇ·ñÓùؼü×Ö EMPTY ÉùÃ÷£¬¿ÕÔªËØ±êÇ©¶¼¿ÉÒÔÓÃÓÚÈκÎûÓÐÄÚÈݵÄÔªËØ¡£³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¬¿ÕÔªËØÓ¦¸ÃÓÃÓÚ£¬ÇÒÖ»Ó¦ÓÃÓÚÉùÃ÷Ϊ EMPTY µÄÔªËØ¡£

¿ÕÔªËØµÄÀý×Ó£º

<IMG align="left"
 src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

3.2 ÔªËØÀàÐÍÉùÃ÷

³öÓÚÑéÖ¤µÄÄ¿µÄ£¬¿ÉÒÔÓÃÔªËØÀàÐͺÍÊôÐÔ±íÉùÃ÷ÏÞÖÆ XML ÎļþÖÐÔªËØµÄ½á¹¹¡£ÔªËØÀàÐÍÉùÃ÷ÏÞÖÆÁËÔªËØµÄÄÚÈÝ¡£

ÔªËØÀàÐÍÉùÃ÷ͨ³£ÏÞÖÆÁË×ÓÔªËØµÄÀàÐÍ¡£ÓÉʹÓÃÕßÑ¡Ôñ£¬µ±ÉùÃ÷Ìáµ½µÄÔªËØÀàÐÍûÓÐÏàÓ¦µÄÉùÃ÷ʱ£¬XML ´¦ÀíÆ÷¿ÉÒÔ¸ø³ö¾¯¸æ£¬µ«Õâ²»ÊÇÒ»¸ö´íÎó¡£

[¶¨Òå£ºÔªËØÀàÐÍÉùÃ÷µÄÐÎʽÈçÏ£º]

ÔªËØÀàÐÍÉùÃ÷
[45]    elementdecl    ::=    '<!ELEMENT' S Name S contentspec S? '>' [VC: ΨһµÄÔªËØÀàÐÍÉùÃ÷]
[46]    contentspec    ::=    'EMPTY' | 'ANY' | Mixed | children

ÆäÖÐ Name ¸ø³öÁËËùÉùÃ÷µÄÔªËØÀàÐÍ¡£

ÓÐЧÐÔÔ¼Êø: ΨһµÄÔªËØÀàÐÍÉùÃ÷
ÔªËØÀàÐÍÖ»ÄÜÉùÃ÷Ò»´Î¡£

ÔªËØÀàÐÍÉùÃ÷µÄÀý×Ó£º

<!ELEMENT br EMPTY>
<!ELEMENT p (#PCDATA|emph)* >
<!ELEMENT %name.para; %content.para; >
<!ELEMENT container ANY>

3.2.1 ÔªËØÐÍÄÚÈÝ

[¶¨Ò壺µ±Ä³Ò»ÀàÐ͵ÄÔªËØÖ»Äܰüº¬ÓÿÉÑ¡¿Õ°×£¨Æ¥Åä·ÇÖÕ½á·û S£©·Ö¸ôµÄ×ÓÔªËØ£¨ÎÞ×Ö·ûÊý¾Ý£©Ê±£¬³Æ´ËÔªËØÀàÐ;ßÓÐÔªËØÐÍÄÚÈÝ¡£] [¶¨Ò壺ÔÚÕâÖÖÇé¿öÏ£¬ÓÐÄÚÈÝÄ£ÐÍ×÷ΪÀàÐÍÏÞÖÆÖ®Ò»£¬ÄÚÈÝÄ£ÐÍÊǾö¶¨×ÓÔªËØÀàÐͺÍ×ÓÔªËØ³öÏÖ˳ÐòµÄÒ»ÖÖ¼òµ¥ÎÄ·¨¡£] ´ËÎÄ·¨ÓÃÄÚÈÝÁ£×Ó£¨ cp £©¹¹½¨£¬ÄÚÈÝÁ£×ÓÓÉÃû×Ö£¬ÄÚÈÝÁ£×ÓµÄÑ¡Ôñ±í£¨choice list£©»òÄÚÈÝÁ£×ÓµÄÐòÁÐ±í£¨sequence list£©×é³É£º

ÔªËØÐÍÄÚÈݵÄÄ£ÐÍ
[47]    children    ::=    (choice | seq) ('?' | '*' | '+')?
[48]    cp    ::=    (Name | choice | seq) ('?' | '*' | '+')?
[49]    choice    ::=    '(' S? cp ( S? '|' S? cp )+ S? ')' /* */
/* */
[VC: ÑϸñµÄ×é/²ÎÊýʵÌåǶÌ×]
[50]    seq    ::=    '(' S? cp ( S? ',' S? cp )* S? ')' /* */
[VC: ÑϸñµÄ×é/²ÎÊýʵÌåǶÌ×]

ÆäÖÐÿһ¸ö Name ÊÇ¿ÉÒÔ×÷Ϊ×ÓÔªËØµÄÔªËØµÄÀàÐÍ¡£Ñ¡Ôñ±íÖгöÏÖµÄÈÎÒâÄÚÈÝÁ£×ÓÔÚÔªËØÐÍÄÚÈÝÖÐÔÊÐí³öÏÖµÄλÖöÔÓ¦ÓÚÑ¡Ôñ±íÔÚÎÄ·¨ÖеÄλÖá£ÐòÁбíÖгöÏÖµÄËùÓÐÄÚÈÝÁ£×Ó±ØÐëÒÔÏàͬµÄ˳Ðò³öÏÖÔÚÔªËØÐÍÄÚÈÝÖС£ÔÚÃû×Ö»ò±íÖ®ºóµÄ¿ÉÑ¡×Ö·û£¨optional character£©¾ö¶¨Á˱íÖÐÔªËØ»òÄÚÈÝÁ£×Ó¿ÉÒÔ³öÏÖÒ»´Î»ò¶à´Î£¨+£©£¬»¹ÊÇÁã´Î»ò¶à´Î£¨*£©£¬»òÊÇÁã´Î»òÒ»´Î£¨?£©¡£Ã»ÓÐÕâÑùÒ»¸ö²Ù×÷·ûÒâζ×ÅÔªËØ»òÄÚÈÝÁ£×Ó±ØÐëÇ¡ºÃ³öÏÖÒ»´Î¡£ÕâÖÖÓï·¨ºÍÒâÒåºÍ±¾¹æ·¶ÖеIJúÉúʽÖÐËùʹÓõÄÏàͬ¡£

µ±ÇÒ½öµ±Ò»¸öÔªËØµÄÄÚÈÝ¿ÉÒÔͨ¹ýÂú×ãÄÚÈÝÄ£ÐÍÖеÄÑ¡Ôñ£¬ÐòÁкÍÖØ¸´²Ù×÷·ûµÃµ½£¬²¢ÇÒÄÚÈÝÖеÄÿһ¸öÔªËØÓëÄÚÈÝÄ£ÐÍÖеÄÒ»ÖÖÔªËØÀàÐÍÏàÆ¥Åäʱ£¬³Æ´ËÔªËØµÄÄÚÈÝÓë¸ÃÄÚÈÝÄ£ÐÍÏàÆ¥Åä¡£³öÓÚ¼æÈÝÐÔ¿¼ÂÇ£¬ Èç¹ûÎļþµÄij¸öÔªËØ¿ÉÒÔºÍÄÚÈÝÄ£ÐÍÖеÄÒ»ÖÖÔªËØÀàÐͶà´ÎÆ¥Å䣬ÕâÊÇÒ»¸ö´íÎó¡£ ¸üÏêϸµÄÐÅÏ¢²Î¼û"E. È·¶¨ÐÍÄÚÈÝÄ£ÐÍ".

ÓÐЧÐÔÔ¼Êø: ÑϸñµÄ×é/²ÎÊýʵÌåǶÌ×
²ÎÊýʵÌåµÄÖû»Îı¾±ØÐëÓÉÀ¨ºÅÀ¨ÆðµÄ×éÑϸñǶÌס£¼´£¬Èç¹û choice£¬seq »ò Mixed Óï·¨³É·ÖµÄ¿ªÊ¼»ò½áÊøÀ¨ºÅ³öÏÖÔÚij¸ö²ÎÊýʵÌåµÄÖû»Îı¾ÖУ¬Á½Õß±ØÐëͬÔÚ´ËÖû»Îı¾ÖС£

³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¬Èç¹ûÒ»¸ö²ÎÊýʵÌåÒýÓóöÏÖÔÚchoice£¬seq»òMixedÓï·¨³É·ÖÖÐʱ£¬ËüµÄÖû»Îı¾ÖÁÉÙÓ¦¸Ã°üº¬Ò»¸ö·Ç¿Õ×Ö·û£¬Í¬Ê±ÆäÖû»Îı¾µÄµÚÒ»¸öºÍ×îºóÒ»¸ö·Ç¿Õ×Ö·û¶¼²»Ó¦ÎªÒ»¸öÁ¬½Ó·û£¨| »ò ,£©¡£

ÔªËØÐÍÄÚÈݵÄÄ£Ð;ÙÀý£º

<!ELEMENT spec (front, body, back?)>
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
<!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>

3.2.2 »ìºÏÐÍÄÚÈÝ£¨Mixed Content£©

[¶¨Ò壺µ±Ä³ÔªËØÀàÐÍ¿ÉÒÔ°üº¬×Ö·ûÊý¾Ý£¬Æä¼ä¿ÉÒÔËæÒâ´©²å×ÓÔªËØÊ±£¬³Æ´ËÔªËØÀàÐ;ßÓлìºÏÐÍÄÚÈÝ¡£] ÔÚÕâÖÖÇé¿öÏ£¬¶Ô×ÓÔªËØµÄÀàÐÍ¿ÉÄÜÓÐËùÏÞÖÆ£¬µ«¶ÔËüÃǵĴÎÐòºÍ³öÏÖ´ÎÊýûÓÐÏÞÖÆ£º

»ìºÏÐÍÄÚÈÝÉùÃ÷
[51]    Mixed    ::=    '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
| '(' S? '#PCDATA' S? ')' [VC: ÑϸñµÄ×é/²ÎÊýʵÌåǶÌ×]
[VC: ÎÞÖØ¸´ÀàÐÍ]

ÆäÖÐ Name ¸ø³öÁË×ÓÔªËØµÄÔªËØµÄÀàÐÍ¡£¹Ø¼ü×Ö #PCDATA À´×ÔÊõÓï"ÒÑÎö×Ö·ûÊý¾Ý£¨parsed character data£©"¶øÀ´

ÓÐЧÐÔÔ¼Êø: ÎÞÖØ¸´ÀàÐÍ
ͬһÃû×ÖÔÚµ¥¸ö»ìºÏÐÍÄÚÈÝÉùÃ÷ÖÐÖ»ÄܳöÏÖÒ»´Î¡£

»ìºÏÄÚÈÝÉùÃ÷µÄÀý×Ó£º

<!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
<!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
<!ELEMENT b (#PCDATA)>

3.3 ÊôÐÔ±íÉùÃ÷

ÊôÐÔÓÃÓÚ¹ØÁªÃû×Ö-Öµ¶ÔºÍÔªËØ¡£ÊôÐÔֵ˵Ã÷Ö»ÄÜÔÚÆðʼ±êÇ©ºÍ¿ÕÔªËØ±êÇ©ÖгöÏÖ; Òò´Ë£¬ÓÃÓÚʶ±ðËüÃǵIJúÉúʽ³öÏÖÔÚ"3.1 Æðʼ±êÇ©£¬½áÊø±êÇ©ºÍ¿ÕÔªËØ±êÇ©"ÖС£ÊôÐÔ±íÉùÃ÷¿ÉÒÔÓÃÓÚ£º

[¶¨Ò壺ÊôÐÔ±íÉùÃ÷Ïêϸ˵Ã÷ÁËÓë¸ø¶¨ÔªËØÀàÐÍÏà¹ØÁªµÄÿһ¸öÊôÐÔµÄÃû×Ö£¬Êý¾ÝÀàÐͺÍȱʡֵ£¨Èç¹ûÓеϰ£©£º]

ÊôÐÔ±íÉùÃ÷
[52]    AttlistDecl    ::=    '<!ATTLIST' S Name AttDef* S? '>'
[53]    AttDef    ::=    S Name S AttType S DefaultDecl

AttlistDecl ¹æÔòÖÐ Name ÊÇÔªËØµÄÀàÐÍ¡£ÓÉʹÓÃÕßÑ¡Ôñ£¬µ±ÊôÐÔÉùÃ÷Ïà¹ØµÄÔªËØÀàÐÍûÓб»ÉùÃ÷ʱ£¬XML ´¦ÀíÆ÷¿ÉÒÔ¸ø³öÒ»¸ö¾¯¸æ£¬µ«Õâ²»ÊÇÒ»¸ö´íÎó¡£AttDef ¹æÔòÖÐµÄ Name ÊÇÊôÐÔµÄÃû×Ö¡£

µ±Óëij¸ö¸ø¶¨ÔªËØÀàÐÍÏà¹ØµÄ AttlistDecl ³¬¹ýÒ»¸öʱ£¬ÕâЩÉùÃ÷ÖеÄÄÚÈݱ»ºÏ²¢ÔÚÒ»Æð¡£µ±¸ø¶¨ÔªËØÀàÐ͵Äij¸öÊôÐԵ͍Ò峬¹ýÒ»¸öʱ£¬°ó¶¨µÚÒ»¸ö¶¨Ò壬ÆäÓඨÒå±»ºöÂÔ¡£³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¬DTD µÄ×÷Õß¿ÉÒÔÕâÑù×ö£ºÒ»¸ö¸ø¶¨µÄÔªËØÀàÐÍÖÁ¶àÓÐÒ»¸öÊôÐÔ±íÉùÃ÷£¬Ò»¸öÊôÐÔ±íÖÐÒ»¸ö¸ø¶¨µÄÊôÐÔÃûÖÁ¶àÓÐÒ»¸öÊôÐÔ¶¨Ò壬ÿ¸öÊôÐÔ±íÉùÃ÷ÖÁÉÙÓÐÒ»¸öÊôÐÔ¶¨Òå¡£³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¬µ±Ò»¸ö¸ø¶¨ÔªËØÓг¬¹ýÒ»¸öµÄÊôÐÔ±íÉùÃ÷»òÒ»¸ö¸ø¶¨ÊôÐÔÓг¬¹ýÒ»¸öµÄÊôÐÔ¶¨Òåʱ£¬XML ´¦ÀíÆ÷¿ÉÒÔ£¬ÓÉʹÓÃÕßÑ¡Ôñ£¬¸ø³ö¾¯¸æ£¬µ«Õâ²»ÊÇÒ»¸ö´íÎó¡£

3.3.1 ÊôÐÔÀàÐÍ

XML ÊôÐÔÓÐÈýÖÖÀàÐÍ£º×Ö·û´®ÀàÐÍ£¬Ò»×é¼ÇºÅ»¯ÀàÐͺÍö¾ÙÀàÐÍ¡£×Ö·û´®ÀàÐÍ¿ÉÒÔÒÔÈÎÒâ³£Á¿×Ö·û´®ÎªÖµ; ¸÷¸ö¼ÇºÅ»¯ÀàÐÍÓв»Í¬µÄ´Ê·¨ºÍÓïÒåÔ¼Êø¡£ÎÄ·¨ÖÐÖ¸³öµÄÓÐЧÐÔÔ¼ÊøÊÊÓÃÓÚÊôÐÔÖµÒѰ´ 3.3 ½Ú 3.3 ÊôÐÔ±íÉùÃ÷ÖÐËùÊö¹æ·¶»¯ÁËÖ®ºóµÄÇé¿ö¡£

ÊôÐÔÀàÐÍ
[54]    AttType    ::=    StringType | TokenizedType | EnumeratedType
[55]    StringType    ::=    'CDATA'
[56]    TokenizedType    ::=    'ID' [VC: ID]
[VC: ÿÖÖÔªËØÀàÐÍÒ»¸ö ID]
[VC: ID ÊôÐÔµÄȱʡֵ]
| 'IDREF' [VC: IDREF]
| 'IDREFS' [VC: IDREF]
| 'ENTITY' [VC: ʵÌåÃû]
| 'ENTITIES' [VC: ʵÌåÃû]
| 'NMTOKEN' [VC: Ãû×ּǺÅ]
| 'NMTOKENS' [VC: Ãû×ּǺÅ]

ÓÐЧÐÔÔ¼Êø: ID
ID ÀàÐ͵ÄÖµ±ØÐëÆ¥Åä Name ²úÉúʽ¡£×÷Ϊ´ËÀàÐÍÖµµÄÃû×ÖÖ»ÄÜÔÚ XML ÎļþÖгöÏÖÒ»´Î£»¼´£¬ID ÀàÐ͵ÄÖµ±ØÐëÄÜΨһ±êÊ¶ÔªËØ¡£

ÓÐЧÐÔÔ¼Êø: ÿÖÖÊôÐÔÀàÐÍÒ»¸öID
ÿÖÖÊôÐÔÀàÐÍÖ»ÄÜÓÐÒ»¸ö ID ÊôÐÔ¡£

ÓÐЧÐÔÔ¼Êø: ID ÊôÐÔµÄȱʡֵ
ID ÊôÐÔ±ØÐëÓÐÒ»¸öÉùÃ÷Ϊ #IMPLIED »ò #REQUIRED µÄȱʡֵ¡£

ÓÐЧÐÔÔ¼Êø: IDREF
IDREF ÀàÐ͵ÄÖµ±ØÐëÆ¥Åä Name ²úÉúʽ£¬IDREFS ÀàÐ͵ÄÖµ±ØÐëÆ¥Åä Names ²úÉúʽ£»Ã¿Ò»¸ö Name ±ØÐëÆ¥Åä XML ÎļþÖÐÄ³Ð©ÔªËØ ID ÊôÐÔµÄÖµ£»Ò²¾ÍÊÇ˵£¬IDREF ÀàÐ͵ÄÖµ±ØÐëÆ¥ÅäijЩ ID ÊôÐÔµÄÖµ¡£

ÓÐЧÐÔÔ¼Êø: ʵÌåÃû
ENTITY ÀàÐ͵ÄÖµ±ØÐëÆ¥Åä Name ²úÉúʽ£¬ENTITIES ÀàÐ͵ÄÖµ±ØÐëÆ¥Åä Names ²úÉúʽ£» ÿһ¸ö Name ±ØÐëÆ¥Åä DTD ÖÐÉùÃ÷µÄδÎöʵÌåµÄÃû×Ö¡£

ÓÐЧÐÔÔ¼Êø: Ãû×ּǺÅ
NMTOKEN ÀàÐ͵ÄÖµ±ØÐëÆ¥Åä Nmtoken ²úÉúʽ£»NMTOKENS ÀàÐ͵ÄÖµ±ØÐëÆ¥Åä Nmtokens ²úÉúʽ¡£

[¶¨Ò壺ö¾ÙÀàÐ͵ÄÊôÐÔ¿ÉÒÔÔÚÉùÃ÷ÖÐÌṩµÄȡֵ±íÖÐȡֵ¡£] ÓÐÁ½ÖÖö¾ÙÀàÐÍ£º

ö¾ÙÊôÐÔÀàÐÍ
[57]    EnumeratedType    ::=    NotationType | Enumeration
[58]    NotationType    ::=    'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' [VC: ¼Ç·¨ÊôÐÔ]
[VC: ÿÖÖÊôÐÔÀàÐÍÒ»ÖּǷ¨]
[VC: ¿ÕÔªËØÃ»ÓмǷ¨]
[59]    Enumeration    ::=    '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' [VC: ö¾Ù]

Ò»¸ö NOTATION ÀàÐ͵ÄÊôÐÔ±êʶÁËÒ»ÖÖÓÃÓÚ½âÊÍÓë´ËÊôÐÔÏà¹ØµÄÔªËØµÄ¼Ç·¨£¬´Ë¼Ç·¨ÖÐÓÃϵͳ»ò¹«¹²±êʶ·ûÔÚ DTD ÖÐÉùÃ÷¡£

ÓÐЧÐÔÔ¼Êø: ¼Ç·¨ÊôÐÔ
´ËÀàÐ͵ÄÖµ±ØÐëÓëÉùÃ÷ÖÐËù°üº¬µÄ¼Ç·¨ÃûÖ®Ò»ÏàÆ¥Åä;ÉùÃ÷ÖеÄËùÓмǷ¨Ãû¶¼±ØÐëÉùÃ÷¡£

ÓÐЧÐÔÔ¼Êø: ÿÖÖÊôÐÔÀàÐÍÒ»ÖּǷ¨

ÿÖÖÔªËØÀàÐ굀 NOTATION ÊôÐÔ²»ÄܶàÓÚÒ»¸ö¡£

ÓÐЧÐÔÔ¼Êø: ¿ÕÔªËØÃ»ÓмǷ¨

³öÓÚ¼æÈÝÐÔ¿¼ÂÇ£¬ÉùÃ÷Ϊ EMPTY µÄÔªËØ²»ÄÜÉùÃ÷ÀàÐÍΪ NOTATION µÄÊôÐÔ¡£

ÓÐЧÐÔÔ¼Êø: ö¾Ù
´ËÀàÐ͵ÄÖµ±ØÐëÓëÉùÃ÷ÖÐËù°üº¬µÄ Nmtoken ¼ÇºÅÖ®Ò»ÏàÆ¥Åä¡£

³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¬Í¬Ò» Nmtoken Ö»ÄÜÔÚµ¥¸öÔªËØÀàÐ͵Äö¾ÙÊôÐÔÀàÐÍÖгöÏÖÒ»´Î¡£

3.3.2 ÊôÐÔȱʡֵ

ÊôÐÔÉùÃ÷ÌṩµÄÐÅÏ¢Ö¸Ã÷ÁËijÊôÐÔÊÇ·ñ±ØÐë³öÏÖ£¬Í¬Ê±Ö¸Ã÷ÁËÔÚ±»ÉùÃ÷µÄÊôÐÔ²»ÊDZØÐë³öÏÖ¶øÎļþÖÐûÓгöÏÖ´ËÊôÐÔµÄÇé¿öÏ£¬XML ´¦ÀíÆ÷Ó¦ÈçºÎ´¦Àí¡£

ÊôÐÔȱʡֵ
[60]    DefaultDecl    ::=    '#REQUIRED' | '#IMPLIED'
| (('#FIXED' S)? AttValue) [VC: ±ØÐëµÄÊôÐÔ]
[VC: ºÏ·¨µÄÊôÐÔȱʡֵ]
[WFC: ÔÚÊôÐÔÖµÖÐÎÞ < ]
[VC: ¹Ì¶¨µÄÊôÐÔȱʡֵ]

ÔÚÒ»¸öÊôÐÔÉùÃ÷ÖУ¬#REQUIRED ±íʾ±ØÐë×ÜÊÇÌṩ´ËÊôÐÔ£¬#IMPLIED ±íʾ²»Ìṩȱʡֵ¡£Èç¹ûÉùÃ÷¼È²»ÊÇ #REQUIRED£¬Ò²²»ÊÇ #IMPLIED£¬ÄÇô AttValue Öµ°üº¬ÁËËùÉùÃ÷µÄȱʡֵ;¹Ø¼ü×Ö #FIXED ¹æ¶¨´ËÊôÐÔ±ØÐë×ÜÊÇÓÐȱʡֵ¡£Èç¹ûÉùÃ÷ÁËÒ»¸öȱʡֵ£¬µ± XML ´¦ÀíÆ÷Óöµ½Ò»¸ö±»Ê¡ÂÔµÄÊôÐÔʱ£¬Ëü½«µ±³É´ËÊôÐÔÒÔȱʡֵ³öÏÖ

ÓÐЧÐÔÔ¼Êø: ±ØÐëµÄÊôÐÔ
Èç¹ûȱʡֵÉùÃ÷Êǹؼü×Ö #REQUIRED£¬ÄÇôÊôÐÔ±íÉùÃ÷ËùÖ¸ÀàÐ͵ÄÔªËØÖж¼±ØÐëÓдËÊôÐÔ¡£

ÓÐЧÐÔÔ¼Êø: ºÏ·¨µÄÊôÐÔȱʡֵ
±»ÉùÃ÷µÄÊôÐÔȱʡֵ±ØÐëÂú×ã±»ÉùÃ÷µÄÊôÐÔÀàÐ͵Ĵʷ¨Ô¼Êø¡£

ÓÐЧÐÔÔ¼Êø: ¹Ì¶¨µÄÊôÐÔȱʡֵ
Èç¹ûijÊôÐÔµÄȱʡֵÓùؼü×Ö #FIXED ÉùÃ÷£¬´ËÊôÐÔµÄËùÓÐʵÀý±ØÐëÆ¥Åä¸Ãȱʡֵ¡£

ÊôÐÔ±íÉùÃ÷µÄÀý×Ó£º

<!ATTLIST termdef
          id      ID      #REQUIRED
          name    CDATA   #IMPLIED>
<!ATTLIST list
          type    (bullets|ordered|glossary)  "ordered">
<!ATTLIST form
          method  CDATA   #FIXED "POST">

3.3.3 ÊôÐÔ-Öµ¶ÔµÄ¹æ·¶»¯£¨Attribute-Value Normalization£©

ÔÚ½«ÊôÐÔµÄÖµ´«¸øÓ¦Óûò¼ìÑéÆäÓÐЧÐÔ֮ǰ£¬XML ´¦ÀíÆ÷±ØÐëʹÓÃÏÂÃæµÄËã·¨£¨»òʹÓÃÆäËûÄÜʹ´«¸øÓ¦ÓõÄÖµÓëÓôËËã·¨µÃµ½µÄÖµÏàͬµÄ·½·¨£©½«Æä¹æ·¶»¯¡£

  1. ËùÓеÄÐÐβ±ØÐëÔÚÊäÈëʱÈç 2.11 ÐÐβ´¦ÀíÖÐËùÊö¹æ·¶³É #xA£¬±¾Ëã·¨µÄÆäÓಿ·Ö×÷ÓÃÓÚÒÔ´Ë·½·¨¹æ·¶»¯Ö®ºóµÄÎı¾¡£

  2. ¿ªÊ¼Ê±¹æ·¶»¯Ö®ºóµÄÖµ°üº¬¿Õ×Ö·û´®¡£

  3. ¶ÔÓÚδ¾­¹æ·¶»¯µÄÊôÐÔÖµÖеÄÿ¸ö×Ö·û£¬ÊµÌåÒýÓûò×Ö·ûÒýÓ㬴ӵÚÒ»¸ö¿ªÊ¼£¬Ö±µ½×îºóÒ»¸ö£¬×öÈçϲÙ×÷£º

    • ¶ÔÓÚÒ»¸ö×Ö·ûÒýÓ㬽«ÆäËùÒýÓõÄ×Ö·û¼ÓÔڹ淶»¯Ö®ºóµÄÖµµÄĩβ¡£

    • ¶ÔÓÚÒ»¸öʵÌåÒýÓ㬶ԴËʵÌåµÄÖû»Îı¾µÝ¹éµØÊ¹Óñ¾Ëã·¨µÄµÚ 3 ²½¡£

    • ¶ÔÓÚÒ»¸ö¿Õ°××Ö·û£¨#x20, #xD, #xA, #x9£©£¬Ôڹ淶»¯Ö®ºóµÄÖµµÄĩβ¼ÓÒ»¸ö¿Õ¸ñ×Ö·û£¨#x20£©¡£

    • ¶ÔÓÚÆäËû×Ö·û£¬½«Æä¼ÓÔڹ淶»¯Ö®ºóµÄÖµµÄĩβ¡£

Èç¹ûÊôÐÔÖµµÄÀàÐͲ»ÊÇ CDATA£¬ÄÇô XML ´¦ÀíÆ÷±ØÐë¼ÌÐø´¦Àí¹æ·¶»¯Ö®ºóµÄÖµ£¬È¥µôÆäǰµ¼ºÍÎ²Ëæ¿Õ¸ñ£¨#x20£©×Ö·û£¬²¢½«¿Õ¸ñ£¨#x20£©×Ö·ûÐòÁÐÌæ»»³Éµ¥¸ö¿Õ¸ñ£¨#x20£©×Ö·û¡£

×¢Ò⣬Èç¹ûδ¾­¹æ·¶»¯µÄÊôÐÔÖµÖаüº¬¶Ô¿Õ¸ñ×Ö·û£¨#x20£©ÒÔÍâµÄ¿Õ°××Ö·ûµÄÒýÓã¬ÄÇô¹æ·¶»¯Ö®ºóµÄÖµ°üº¬±»ÒýÓõÄ×Ö·û±¾Éí£¨#xD, #xA or #x9£©£¬¶ø²»Êǿոñ£¨#x20£©¡£ÕâÓëδ¾­¹æ·¶»¯µÄÊôÐÔÖµÖаüº¬¿Õ°××Ö·û£¨²»ÊÇÒýÓ㩵ÄÇé¿ö²»Í¬£¬ÔÚÄÇÖÖÇé¿öÏ¿հ××Ö·û±»Öû»³É¿Õ¸ñ×Ö·û£¨#x20£©¡£Í¬Ê±ÕâÒ²Óëδ¾­¹æ·¶»¯µÄÊôÐÔÖµÖÐËù°üº¬µÄʵÌåÒýÓõÄÖû»Îı¾Öаüº¬¿Õ°××Ö·ûµÄµÄÇé¿ö²»Í¬£¬ÔÚÄÇÖÖÇé¿öÏ£¬ÊµÌåÒýÓõÄÖû»Îı¾±»µÝ¹é´¦Àí£¬¿Õ°××Ö·û±»Öû»³É¿Õ¸ñ×Ö·û£¨#x20£©¡£

²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷Ó¦¸Ã½«ËùÓÐÉÐδ¶Áµ½ÆäÉùÃ÷µÄÊôÐÔµ±³ÉÉùÃ÷Ϊ CDATA ´¦Àí¡£

ÒÔÏÂÊÇÊôÐԹ淶»¯µÄÀý×Ó¡£ÓÐÈçÏÂÉùÃ÷£º

<!ENTITY d "&#xD;">
<!ENTITY a "&#xA;">
<!ENTITY da "&#xD;&#xA;">

ϱíÖÐ×ó±ßÒ»ÁÐÖеÄÊôÐÔֵ˵Ã÷ÔÚ a ÉùÃ÷Ϊ NMTOKENS µÄÇé¿öϹ淶»¯ÎªÖмäÒ»ÁеÄ×Ö·ûÐòÁУ¬ÔÚ a ÉùÃ÷Ϊ CDATA µÄÇé¿öϹ淶»¯ÎªÓÒ±ßÒ»ÁÐÖеÄ×Ö·ûÐòÁС£

ÊôÐÔֵ˵Ã÷ a ÉùÃ÷Ϊ NMTOKENS a ÉùÃ÷Ϊ CDATA
a="

xyz"
x y z #x20 #x20 x y z
a="&d;&d;A&a;&a;B&da;"
A #x20 B #x20 #x20 A #x20 #x20 B #x20 #x20
a=
"&#xd;&#xd;A&#xa;&#xa;B&#xd;&#xa;"
#xD #xD A #xA #xA B #xD #xA #xD #xD A #xA #xA B #xD #xD

×¢Ò⣬ÔÚ a ÉùÃ÷Ϊ NMTOKENS ÀàÐ͵ÄÇé¿öÏ£¬×îºóÒ»¸öÀý×Ó²»ÊÇÓÐЧµÄ£¨µ«ÊÇÊǸñʽÕýÈ·µÄ£©¡£

3.4 Ìõ¼þ¶Î£¨Conditional Sections£©

[¶¨Ò壺Ìõ¼þ¶ÎÊÇÎļþÀàÐÍÉùÃ÷Íⲿ×Ó¼¯µÄÒ»²¿·Ö£¬È¡¾öÓÚÏàÓ¦µÄ¹Ø¼ü×Ö£¬ËüÃÇ»ò±»°üº¬ÔÚ DTD Âß¼­½á¹¹Ö®ÄÚ£¬»ò±»ÅųýÔÚ DTD Âß¼­½á¹¹Ö®Íâ¡£]

Ìõ¼þ¶Î
[61]    conditionalSect    ::=    includeSect | ignoreSect
[62]    includeSect    ::=    '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>' /* */
[VC: ÑϸñµÄÌõ¼þ¶Î/²ÎÊýʵÌåǶÌ×]
[63]    ignoreSect    ::=    '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>' /* */
[VC: ÑϸñµÄÌõ¼þ¶Î/²ÎÊýʵÌåǶÌ×]
[64]    ignoreSectContents    ::=    Ignore ('<![' ignoreSectContents ']]>' Ignore)*
[65]    Ignore    ::=    Char* - (Char* ('<![' | ']]>') Char*)

ÓÐЧÐÔÔ¼Êø: ÑϸñµÄÌõ¼þ¶Î/²ÎÊýʵÌåǶÌ×

Èç¹ûÒ»¸öÌõ¼þ¶ÎµÄ "<!["£¬"[" »ò "]]>" ÖеÄÈÎÒâÒ»¸ö°üº¬ÔÚÒ»¸ö²ÎÊýʵÌåÖеÄÖû»Îı¾ÖУ¬ËüÃDZØÐëÈ«²¿ÔÚ´ËͬһÖû»Îı¾ÖС£

ͬÄÚ²¿»òÍⲿ DTD ×Ó¼¯Ò»Ñù£¬Ìõ¼þ¶Î¿ÉÒÔ°üº¬Ò»¸ö»ò¶à¸öÍêÕûµÄÉùÃ÷£¬×¢ÊÍ£¬´¦ÀíÖ¸Á»òǶÌ×µÄÌõ¼þ¶Î£¬Æä¼ä¿ÉÒÔ¼ÐÔӿհס£

Èç¹ûÌõ¼þ¶ÎµÄ¹Ø¼ü×ÖÊÇ INCLUDE£¬ÄÇôÌõ¼þ¶ÎµÄÄÚÈÝÊÇ DTD µÄÒ»²¿·Ö£¬Èç¹ûÌõ¼þ¶ÎµÄ¹Ø¼ü×ÖÊÇ IGNORE£¬ÄÇôÌõ¼þ¶ÎµÄÄÚÈÝÂß¼­Éϲ»ÊÇ DTD µÄÒ»²¿·Ö¡£Èç¹ûÒ»¸ö¹Ø¼ü×ÖΪ INCLUDE µÄÌõ¼þ¶Î³öÏÖÔÚ¸ü´óµÄ¹Ø¼ü×ÖΪ IGNORE µÄÌõ¼þ¶ÎÖУ¬ÄÚÍâÁ½¸öÌõ¼þ¶Î¶¼±»ºöÂÔ¡£ÔÚ¶Ô±»ºöÂÔµÄÌõ¼þ¶ÎµÄÄÚÈݽøÐÐÓï·¨·ÖÎöʱ£¬´Ó½ôËæ¹Ø¼ü×ÖµÄ "[" Ö®ºó¿ªÊ¼£¬³ýÁËÌõ¼þ¶ÎµÄ¿ªÊ¼ "<![" ºÍ½áβ "]]>" ÒÔÍâµÄËùÓÐ×Ö·û¶¼±»ºöÂÔ£¬Ö±µ½ÕÒµ½ÏàÆ¥ÅäµÄÌõ¼þ¶Î½áβ¡£Ôڴ˹ý³ÌÖвÎÊýʵÌå²»±»Ê¶±ð¡£

Èç¹ûÌõ¼þ¶ÎµÄ¹Ø¼ü×ÖÊÇÒ»¸ö²ÎÊýʵÌåÒýÓ㬴¦ÀíÆ÷ÔÚ¾ö¶¨ÊÇ·ñ°üº¬»òºöÂÔ´ËÌõ¼þ¶Îǰ£¬±ØÐëÏȽ«¸Ã²ÎÊýʵÌåÖû»³ÉÆäÄÚÈÝ¡£

Ò»¸öÀý×Ó£º

<!ENTITY % draft 'INCLUDE' >
<!ENTITY % final 'IGNORE' >
 
<![%draft;[
<!ELEMENT book (comments*, title, body, supplements?)>
]]>
<![%final;[
<!ELEMENT book (title, body, supplements?)>
]]>

4. ÎïÀí½á¹¹

[¶¨Ò壺һ¸ö XML Îļþ¿ÉÄܰüº¬Ò»¸ö»ò¶à¸ö´æ´¢µ¥Ôª¡£ËüÃDZ»³ÆÎªÊµÌ壨entity£©;ËüÃǶ¼¾ßÓÐÄÚÈݲ¢ÇÒ¶¼ÓÃÃû×Ö½øÐбêʶ£¨³ýÁËÎļþʵÌ壬¼ûÏ£¬ºÍÍⲿ DTD ×Ó¼¯Ö®Í⣩¡£] ÿһ¸ö XML ÎļþÓÐÒ»¸ö³ÆÎªÎļþʵÌåµÄʵÌ壬Ëü×÷Ϊ XML ´¦ÀíÆ÷´¦ÀíµÄÆðµã²¢¿ÉÄܰüº¬ÁËÕû¸öÎļþ¡£

ʵÌå¿ÉÒÔÊÇÒÑÎöµÄ»òδÎöµÄ¡£[¶¨Ò壺ÒÑÎöʵÌ壨parsed entity£©µÄÄÚÈݱ»³ÆÎªËüµÄÖû»Îı¾;´ËÎı¾±»¿´³ÉÊÇÎļþÕûÌåµÄÒ»²¿·Ö¡£]

δÎöʵÌ壨unparsed entity£©ÊÇÒ»ÖÖ×ÊÔ´£¬ÆäÄÚÈÝ¿ÉÒÔÊÇÒ²¿ÉÒÔ²»ÊÇÎı¾£¬²¢ÇÒ£¬Èç¹ûÊÇÎı¾µÄ»°£¬¿ÉÒÔ²»ÊÇ XML Îı¾¡£Ã¿Ò»¸öδÎöʵÌåÓÐÒ»¸öÏà¹ØÁªµÄÓÃÃû×Ö±êʶµÄ¼Ç·¨¡£³ýÁËÒªÇó XML ´¦ÀíÆ÷ÄÜÏòÓ¦ÓÃÌṩʵÌåºÍ¼Ç·¨µÄ±êʶ·ûÖ®Í⣬XML ¶ÔδÎöʵÌåµÄÄÚÈݲ»×÷ÈκÎÏÞÖÆ¡£]

ÒÑÎöʵÌåÒÔʵÌåÒýÓõķ½Ê½Ê¹ÓÃÃû×ÖÀ´µ÷ÓÃ;δÎöʵÌåÓà ENTITY »ò ENTITIES ÊôÐÔÖиø³öµÄÃû×Öµ÷Óá£

[¶¨Ò壺ÆÕͨʵÌ壨general entity£©ÊÇÄÇЩÔÚÎļþÄÚÈÝÖÐʹÓõÄʵÌå¡£ÔÚ±¾¹æ·¶ÖУ¬ÆÕͨʵÌåÓÐʱÓÃδÐÞÊεÄÊõÓïentityÀ´±íʾ¡£] [¶¨Ò壺²ÎÊýʵÌåÊÇÓÃÓÚ DTD ÄÚµÄÒÑÎöʵÌå¡£]ÕâÁ½ÀàʵÌåÓò»Í¬ÐÎʽµÄÒýÓã¬ÔÚ²»Í¬µÄÉÏÏÂÎÄÖÐʶ±ð¡£ÁíÍ⣬ËüÃÇʹÓò»Í¬µÄÃûÓò£»¾ßÓÐÏàͬÃû×ֵIJÎÊýʵÌåºÍÆÕͨʵÌåÊÇÁ½¸ö½ØÈ»²»Í¬µÄÁ½¸öʵÌå¡£

4.1 ×Ö·ûºÍʵÌåÒýÓã¨Character and Entity References£©

Ò»¸ö×Ö·ûÒýÓÃÒýÓà ISO/IEC 10646 ×Ö·û¼¯ÖеÄÒ»¸ö×Ö·û¡£ÀýÈç²»ÄÜÓÃÊäÈëÉ豸ֱ½ÓÊäÈëµÄ×Ö·û¡£

×Ö·ûÒýÓÃ
[66]    CharRef    ::=    '&#' [0-9]+ ';'
| '&#x' [0-9a-fA-F]+ ';' [WFC: ºÏ·¨×Ö·û]

¸ñʽÕýÈ·ÐÔÔ¼Êø: ºÏ·¨×Ö·û
ÓÃ×Ö·ûÒýÓÃÒýÓõÄ×Ö·û±ØÐëÆ¥Åä Char ²úÉúʽ¡£

Èç¹û×Ö·ûÒýÓÃÒÔ "&#x" ¿ªÍ·£¬Ö±µ½ÖÕ½á ; µÄÊý×ÖºÍ×ÖĸÌṩÁËij×Ö·ûÔÚ ISO/IEC 10646 ÖдúÂëµÄÒ»¸öÊ®Áù½øÖƱíʾ¡£Èç¹ûËü½öÒÔ "&#" ¿ªÍ·£¬Ö±µ½ÖÕ½á ; µÄÊý×ÖÌṩÁËij×Ö·ûµÄ´úÂëµÄÊ®½øÖµ±íʾ¡£

ʵÌåÒýÓã¨entity reference£©ÒýÓÃÒ»¸öÃüÃûʵÌåµÄÄÚÈÝ¡£¶ÔÒÑÎöÆÕͨʵÌåµÄÒýÓÃʹÓà "and" ºÅ£¨&£©ºÍ·ÖºÅ£¨;£©×÷Ϊ¶¨½ç·û¡£²ÎÊýʵÌåÒýÓÃÔòʹÓðٷֺţ¨%£©ºÍ·ÖºÅ£¨;£©×÷Ϊ¶¨½ç·û¡£

ʵÌåÒýÓÃ
[67]    Reference    ::=    EntityRef | CharRef
[68]    EntityRef    ::=    '&' Name ';' [WFC: ÉùÃ÷ʵÌå]
[VC: ÉùÃ÷ʵÌå]
[WFC: ÒÑÎöʵÌå]
[WFC: Î޵ݹé]
[69]    PEReference    ::=    '%' Name ';' [VC: ÉùÃ÷ʵÌå]
[WFC: Î޵ݹé]
[WFC: ÔÚ DTD ÄÚ]

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÉùÃ÷ʵÌå
ÔÚÒ»¸öûÓÐÈκΠDTD µÄÎļþ£¬»òÒ»¸öÖ»Óв»°üº¬²ÎÊýʵÌåÒýÓõÄÄÚ²¿ DTD ×Ó¼¯µÄÎļþ£¬»òÒ»¸ö "standalone='yes'" µÄÎļþÄÚ£¬²»ÔÚÍⲿ×Ó¼¯»ò²ÎÊýʵÌåÄÚµÄʵÌåÒýÓÃÖиø³öµÄ Name ±ØÐëÓë²»ÔÚÍⲿ×Ó¼¯»ò²ÎÊýʵÌåÄÚʵÌåÉùÃ÷ÖÐËù¸ø³öµÄÏàÆ¥Å䣬µ«¸ñʽÕýÈ·µÄÎļþ²»ÐèÒªÉùÃ÷ÒÔϵÄÕâЩʵÌ壺amp£¬lt£¬gt£¬apos ºÍ quot¡£ÆÕͨʵÌåµÄÉùÃ÷±ØÐëÏÈÓÚÈκÎÔÚÊôÐÔ±íÉùÃ÷ÖеÄȱʡֵÖгöÏֵĶÔËüµÄÒýÓá£×¢Ò⣬¶ÔÓÚÔÚÍⲿ×Ó¼¯»òÍⲿ²ÎÊýʵÌåÖÐÉùÃ÷µÄʵÌ壬²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷²»±ØÒª¶ÁÈ¡ºÍ´¦ÀíËüÃǵÄÉùÃ÷£»¶ÔÕâЩÎļþ£¬½öµ± standalone='yes' ʱ£¬ÊµÌ屨Ðë±»ÉùÃ÷µÄ¹æÔò²ÅÊÇÒ»¸ö¸ñʽÕýÈ·ÐÔÔ¼Êø¡£

ÓÐЧÐÔÔ¼Êø: ÉùÃ÷ʵÌå
ÔÚÒ»¸öÓÐÍⲿ×Ó¼¯»òÍⲿ²ÎÊýʵÌåÇÒ "standalone='no'" µÄʵÌåÖУ¬ÊµÌåÒýÓÃÖиø³öµÄ Name ±ØÐëÓëʵÌåÉùÃ÷ÖÐËù¸ø³öµÄÏàÆ¥Åä¡£³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¬ÓÐЧµÄÎļþÓ¦¸ÃÒÔ"4.6 Ô¤¶¨ÒåʵÌå"Öеļò»¯ÐÎʽÉùÃ÷ʵÌå amp£¬lt£¬gt£¬apos ºÍ quot¡£²ÎÊýʵÌåµÄÉùÃ÷±ØÐëÏÈÓÚÈκζÔËüµÄÒýÓá£ÀàËÆµØ£¬ÆÕͨʵÌåµÄÉùÃ÷±ØÐëÏÈÓÚÈκÎÔÚÊôÐÔ±íÉùÃ÷ÖеÄȱʡֵÖгöÏֵĶÔËüÖ±½Ó»ò¼ä½ÓµÄÒýÓá£

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÒÑÎöʵÌå
ʵÌåÒýÓò»Äܰüº¬Ò»¸öδÎöʵÌåµÄÃû×Ö¡£Î´ÎöʵÌåÖ»ÄÜÔÚÉùÃ÷Ϊ ENTITY »ò ENTITIES µÄÊôÐÔÖµÖÐÒýÓá£

¸ñʽÕýÈ·ÐÔÔ¼Êø: Î޵ݹé
ÒÑÎöʵÌå²»ÄÜÖ±½Ó»ò¼ä½ÓµØ°üº¬¶Ô×ÔÉíµÄµÝ¹éÒýÓá£

¸ñʽÕýÈ·ÐÔÔ¼Êø: ÔÚ DTD ÄÚ
²ÎÊýʵÌåÒýÓÃÖ»ÄÜÔÚ DTD ÖгöÏÖ¡£

×Ö·ûÒýÓúÍʵÌåÒýÓõÄÀý×Ó£º

Type <key>less-than</key> (&#x3C;) to save options.
This document was prepared on &docdate; and
is classified &security-level;.

²ÎÊýʵÌåÒýÓõÄÀý×Ó£º

<!-- declare the parameter entity "ISOLat2"... -->
<!ENTITY % ISOLat2
         SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
<!-- ... now reference it. -->
%ISOLat2;

4.2 ʵÌåÉùÃ÷£¨Entity Declaration£©

[¶¨Ò壺ʵÌåÒÔÈçÏ·½Ê½ÉùÃ÷£º]

ʵÌåÉùÃ÷
[70]    EntityDecl    ::=    GEDecl | PEDecl
[71]    GEDecl    ::=    '<!ENTITY' S Name S EntityDef S? '>'
[72]    PEDecl    ::=    '<!ENTITY' S '%' S Name S PEDef S? '>'
[73]    EntityDef    ::=    EntityValue | (ExternalID NDataDecl?)
[74]    PEDef    ::=    EntityValue | ExternalID

ʵÌåÒýÓÃÖÐµÄ Name ±êʶÁ˸ÃʵÌå;¶ÔÓÚδÎöʵÌ壬ENTITY »ò ENTITIES ÊôÐÔµÄÖµ±êʶÁ˸ÃʵÌå¡£Èç¹ûͬһʵÌå±»ÉùÃ÷Á˲»Ö¹Ò»´Î£¬°ó¶¨µÚÒ»¸öÓöµ½µÄÉùÃ÷¡£ÓÉʹÓÃÕßÑ¡Ôñ£¬Èç¹ûʵÌå±»¶à´ÎÉùÃ÷£¬XML ´¦ÀíÆ÷¿ÉÒÔ¸ø³ö¾¯¸æ¡£

4.2.1 ÄÚ²¿ÊµÌ壨Internal Entities£©

[¶¨Ò壺Èç¹ûʵÌ嶨ÒåÊÇÒ»¸ö EntityValue£¬±»¶¨ÒåµÄʵÌå±»³ÆÎªÄÚ²¿ÊµÌå¡£] ÄÚ²¿ÊµÌåûÓе¥¶ÀµÄÎïÀí´æ´¢¶ÔÏó£¬ÊµÌåµÄÄÚÈÝÔÚÉùÃ÷Öиø³ö¡£×¢Òâ³£Á¿ÊµÌåÖµÖÐһЩʵÌåºÍ×Ö·ûÒýÓõĴ¦Àí¿ÉÄÜÒªÇó²úÉúÕýÈ·µÄÖû»Îı¾£º²Î¼û"4.5 ÄÚ²¿Öû»Îı¾µÄ¹¹Ôì"¡£

ÄÚ²¿ÊµÌåÊÇÒÑÎöʵÌå¡£

ÄÚ²¿ÊµÌåÉùÃ÷µÄÀý×Ó£º

<!ENTITY Pub-Status "This is a pre-release of the
 specification.">

4.2.2 ÍⲿʵÌ壨External Entities£©

[¶¨Ò壺Èç¹ûʵÌå²»ÊÇÄÚ²¿µÄ£¬ÄÇôËüÊÇÒ»¸öÍⲿʵÌ壬ÉùÃ÷ÈçÏ£º]

ÍⲿʵÌåÉùÃ÷
[75]    ExternalID    ::=    'SYSTEM' S SystemLiteral
| 'PUBLIC' S PubidLiteral S SystemLiteral
[76]    NDataDecl    ::=    S 'NDATA' S Name [VC: ÉùÃ÷¼Ç·¨]

Èç¹ûÓÐ NDataDecl£¬ÄÇôÕâÊÇÒ»¸öÆÕͨδÎöʵÌ壻·ñÔòËüÊÇÒ»¸öÒÑÎöʵÌå¡£

ÓÐЧÐÔÔ¼Êø: ÉùÃ÷¼Ç·¨
Name±ØÐëÓë¼Ç·¨µÄÃû×ÖÏàÆ¥Åä¡£

[¶¨Ò壺SystemLiteral ±»³ÆÎª¸ÃʵÌåµÄϵͳ±êʶ·û¡£ÕâÊÇÒ»¸ö URI ÒýÓã¨ÔÚ [IETF RFC 2396] Öж¨Ò壬ÔÚ [IETF RFC 2732] ÖиüУ©£¬¿ÉÒÔÓÉ´Ë»ñµÃ XML ´¦ÀíÆ÷µÄÊäÈëÓÃÓÚ¹¹½¨´ËʵÌåµÄÖû»Îı¾¡£] Ƭ¶Ï±êʶ·û£¨ÒÔ # ¿ªÍ·£©³öÏÖÔÚϵͳ±êʶ·ûÖÐÊÇÒ»¸ö´íÎó¡£Èç¹ûÒ»¸öƬ¶Ï±êʶ·û×÷Ϊϵͳ±êʶ·ûµÄ²¿·Ö¸ø³ö£¬XML ´¦ÀíÆ÷¿ÉÒÔ¸ø³öÒ»¸ö´íÎó¡£³ý·ÇÔÚ±¾¹æ·¶·¶Î§Ö®ÍâÁíÍâ¸ø³ö£¨È磬һ¸öÌØÊâ DTD Öж¨ÒåµÄרÓà XML ÔªËØÀàÐÍ£¬»òÒ»¸öÌØÊâÓ¦Óù淶Öж¨ÒåµÄ´¦ÀíÖ¸Á£¬Ïà¶Ô URI Ö¸Ïà¶ÔÓÚʵÌåÉùÃ÷ËùÔÚ×ÊÔ´µÄλÖá£Òò´Ë£¬Ò»¸ö URI ¿ÉÄÜÊÇÏà¶ÔÓÚÎļþʵÌ壬»òÏà¶ÔÓÚ°üº¬Íⲿ DTD ×Ó¼¯µÄʵÌ壬»òÏà¶ÔÓÚÆäËûһЩÍⲿ²ÎÊýʵÌå¡£

URI ÒýÓÃÐèÒª¶ÔijЩ×Ö·û½øÐбàÂëºÍתÒå¡£²»ÔÊÐí³öÏÖµÄ×Ö·û°üÀ¨ËùÓÐ·Ç ASCII ×Ö·û£¬ÒÔ¼° [IETF RFC 2396] µÚ 2.4 ½ÚÖÐÁгöµÄ²»±»ÔÊÐíµÄ×Ö·û£¬¾®ºÅ£¨#£©¡¢°Ù·ÖºÅ£¨%£©£© ºÍ [IETF RFC 2732] ÖÐÔÊÐíµÄ·½À¨ºÅ³ýÍâ¡£²»±»ÔÊÐíµÄ×Ö·û±ØÐëÓÃÈçÏµķ½·¨×ªÒ壺

  1. ÿ¸ö²»±»ÔÊÐíµÄ×Ö·ûÊ×Ïȱ»×ª»»³ÉÒ»¸ö»ò¶à¸ö×Ö½ÚµÄ UTF-8 [IETF RFC 2279] ±àÂë¡£

  2. ÈκζÔÓ¦ÓÚÒ»¸ö²»±»ÔÊÐíµÄ×Ö·ûµÄ°Ëλ×éÓà URI תÒå»úÖÆ×ªÒ壨¼´£¬½«Æäת»»³É%HH£¬ÆäÖÐ HH ÊÇ×Ö½ÚÖµµÄÊ®Áù½øÖƼǷ¨£©¡£

  3. Óõõ½µÄ×Ö·ûÐòÁÐÖû»Ô­À´µÄ×Ö·û¡£

³ýÁËϵͳ±êʶ·ûÖ®Í⣬Íⲿ±êʶ·û»¹¿ÉÒÔ°üº¬¹«¹²±êʶ·û¡£ÊÔͼ´æÈ¡ÊµÌåÄÚÈÝµÄ XML ´¦ÀíÆ÷¿ÉÒÔÓù«¹²±êʶ·ûÊÔ×ŲúÉúÒ»¸ö¿ÉÑ¡ URI ÒýÓá£Èç¹û´¦ÀíÆ÷ÎÞ·¨×öµ½ÕâÒ»µã£¬Ëü±ØÐëʹÓÃϵͳ³£Á¿ÖÐµÄ URI ÒýÓá£ÔÚÊÔ×ÅÆ¥Åä֮ǰ£¬¹«¹²±êʶ·ûÖÐËùÓпհ××Ö·û´®±ØÐë±»¹æ·¶Îªµ¥¸ö¿Õ¸ñ×Ö·û£¨#x20£©£¬Í¬Ê±±ØÐëÈ¥µôǰµ¼ºÍÎ²Ëæ¿Õ°×¡£

ÍⲿʵÌåÉùÃ÷µÄÀý×Ó£º

<!ENTITY open-hatch
         SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY open-hatch
         PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
         "http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY hatch-pic
         SYSTEM "../grafix/OpenHatch.gif"
         NDATA gif >

4.3 ÒÑÎöʵÌ壨Parsed Entities£©

4.3.1 Îı¾ÉùÃ÷£¨Text Declaration£©

[¶¨Ò壺ÿ¸öÍⲿÒÑÎöʵÌåÓ¦¸ÃÒÔÎı¾ÉùÃ÷×÷Ϊ¿ªÊ¼¡£]

Îı¾ÉùÃ÷
[77]    TextDecl    ::=    '<?xml' VersionInfo? EncodingDecl S? '?>'

Îı¾ÉùÃ÷±ØÐëÒÔ³£Á¿ÐÎʽ¸ø³ö£¬¶ø²»ÄÜʹÓÃÒÑÎöʵÌåµÄÒýÓá£Îı¾ÉùÃ÷Ö»ÄÜÔÚÍⲿÒÑÎöʵÌåµÄ¿ªÍ·³öÏÖ£¬²»ÔÊÐíÔÚÆäËûÈκεط½³öÏÖ¡£ÔÚÍⲿÒÑÎöʵÌåÖеÄÎı¾ÉùÃ÷²»±»ÈÏΪÊÇÆäÖû»Îı¾µÄÒ»²¿·Ö

4.3.2 ¸ñʽÕýÈ·µÄÒÑÎöʵÌ壨Well-Formed Parsed Entities£©

Èç¹ûÎļþʵÌ寥Åä document ²úÉúʽ£¬ÄÇôËüÊǸñʽÕýÈ·µÄ¡£Èç¹ûÍⲿÆÕͨÒÑÎöʵÌ寥Åä extParsedEnt ²úÉúʽ£¬ÄÇôËüÊǸñʽÕýÈ·µÄ¡£Èç¹ûÍⲿ²ÎÊýʵÌ寥Åä extPE ²úÉúʽ£¬ÄÇôËüÊǸñʽÕýÈ·µÄ¡£¸ù¾Ý¶¨Ò壬Íⲿ²ÎÊýʵÌåÊǸñʽÕýÈ·µÄ¡£

¸ñʽÕýÈ·µÄÍⲿÒÑÎöʵÌå
[78]    extParsedEnt    ::=    TextDecl? content

Èç¹ûÄÚ²¿ÆÕͨÒÑÎöʵÌåµÄÖû»Îı¾Æ¥Åä content ²úÉúʽ£¬ÄÇôËüÊǸñʽÕýÈ·µÄ¡£¸ù¾Ý¶¨Ò壬ËùÓÐÄÚ²¿µÄ²ÎÊýʵÌå¶¼ÊǸñʽÕýÈ·µÄ¡£

ʵÌå·ûºÏ¸ñʽÕýÈ·ÐÔµÄÒ»¸ö½á¹ûÊÇ XML ÎļþµÄÂß¼­ºÍÎïÀí½á¹¹ÊÇÑϸñǶÌ׵컯ðʼ±êÇ©£¬½áÊø±êÇ©£¬¿ÕÔªËØ±êÇ©£¬ÔªËØ£¬×¢ÊÍ£¬´¦ÀíÖ¸Á×Ö·ûÒýÓ㬻òʵÌåÒýÓö¼²»ÄÜÔÚÒ»¸öʵÌåÖпªÊ¼¶øÔÚÁíÒ»¸öʵÌåÖнáÊø¡£

4.3.3 ʵÌåÖеÄ×Ö·û±àÂ루Character Encoding in Entities£©

XML ÎļþÖеÄÿ¸öÍⲿÒÑÎöʵÌå¶¼¿ÉÒÔ¶ÔÆä×Ö·û²ÉÓÃÒ»ÖÖ²»Í¬µÄ±àÂë·½°¸¡£ËùÓÐ XML ´¦ÀíÆ÷±ØÐëÄܶÁÈ¡±àÂëΪ UTF-8 ºÍ UTF-16 µÄʵÌå¡£±¾¹æ·¶ÖеÄÊõÓï "UTF-8" ºÍ "UTF-16" ²»ÊÊÓÃÓÚÈκβÉÓÃÆäËû±êʶ£¨label£©µÄ×Ö·û±àÂ룬¼´Ê¹ÕâÖÖ±àÂë»ò±êʶÓë UTF-8 »ò UTF-16 ·Ç³£ÀàËÆ¡£

ÒÔ UTF-16 ±àÂëµÄʵÌ屨ÐëÒÔ ISO/IEC 10646 Ôö²¹ F£¬[ISO/IEC 10646-2000] Ôö²¹ H£¬ [Unicode] µÄ 2.4 ½ÚºÍ [Unicode3] 2.7 ½Ú£¨Áã¿í¶È²»¼ä¶Ï¿Õ¸ñ×Ö·û£¬#xFEFF£©ÖÐËùÃèÊöµÄ×Ö½Ú´ÎÐò±ê¼Ç£¨Byte Order Mark£©¿ªÍ·¡£ÕâÊÇÒ»¸ö±àÂëÇ©Ãû£¬¼´²»ÊÇ XML ÎļþÖбê¼ÇµÄÒ»²¿·Ö£¬Ò²²»ÊÇ XML Îļþ×Ö·ûÊý¾ÝµÄÒ»²¿·Ö¡£XML ´¦ÀíÆ÷±ØÐëÄÜÓôË×Ö·ûÇø·Ö UTF-8 ±àÂëºÍ UTF-16 ±àÂëµÄÎļþ¡£

ËäÈ» XML ´¦ÀíÆ÷Ö»±»ÒªÇóÄܶÁÈ¡ UTF-8 ºÍ UTF-16 ±àÂëµÄʵÌ壬²»¹ý¶ÔÓÚÊÀ½çÉÏ»¹ÓÐÆäËûµÄ±àÂë·½°¸ÒÑÓй²Ê¶¡£ÓÐʱ¿ÉÄÜÏëÈà XML ´¦ÀíÆ÷¶ÁÈ¡ÒÔÄÇЩ±àÂë·½°¸±àÂëµÄʵÌå¡£ÔÚûÓÐÍⲿ×Ö·û±àÂëÐÅÏ¢£¨Èç MIME Í·£©µÄÇé¿öʱ£¬ÒÔ²»Í¬ÓÚ UTF-8 ºÍ UTF-16 µÄ±àÂë·½°¸´æ´¢µÄʵÌ屨ÐëÒÔ°üº¬±àÂëÉùÃ÷µÄÎı¾ÉùÃ÷£¨¼û 4.3.1 Îı¾ÉùÃ÷£©¿ªÍ·£º

±àÂëÉùÃ÷
[80]    EncodingDecl    ::=    S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )
[81]    EncName    ::=    [A-Za-z] ([A-Za-z0-9._] | '-')* /* ±àÂë·½°¸µÄÃû³ÆÖ»°üº¬À­¶¡×Öĸ */

ÔÚÎļþʵÌåÖУ¬±àÂëÉùÃ÷ÊÇ XML ÉùÃ÷µÄÒ»²¿·Ö¡£EncName ÊÇËùÓñàÂë·½°¸µÄÃû³Æ¡£

ÔÚÒ»¸ö±àÂëÉùÃ÷ÖУ¬Öµ "UTF-8"£¬"UTF-16"£¬"ISO-10646-UCS-2" ºÍ "ISO-10646-UCS-4" Ó¦¸ÃÓÃÓÚ±íʾ Unicode »ò ISO/IEC 10646 Öеĸ÷ÖÖ²»Í¬±àÂëºÍ±ä»»·½°¸£¬Öµ "ISO-8859-1"£¬"ISO-8859-2"£¬... "ISO-8859-n" £¨ÆäÖÐ n ÊÇÇø¿éºÅ£©Ó¦¸ÃÓÃÓÚ±íʾ ISO 8859 µÄ¸÷¸ö²¿·Ö£¬¶øÖµ "ISO-2022-JP"£¬"Shift_JIS" ºÍ "EUC-JP" Ó¦¸ÃÓÃÓÚ±íʾ JIS X-0208-1997 µÄ¸÷ÖÖ±àÂë¡£½¨Òé¶ÔÓÚÔÚ Internet Assigned Numbers Authority [IANA] ×¢²áµÄ×Ö·û±àÂë·½°¸£¨ÒÔ×Ö·û¼¯£¨charset£©µÄ·½Ê½£©£¬³ýÁËÒÔÉÏËùÁÐÖ®ÍâµÄ±àÂë·½°¸£¬Ó¦¸ÃÓÃËüÃǵÄ×¢²áÃûÒýÓá£ÆäËûµÄ±àÂëÓ¦¸ÃʹÓôø "x-" ǰ׺µÄÃû³Æ¡£ÓûÓë֮ƥÅäµÄ XML ´¦ÀíÆ÷Ó¦¸ÃÒÔ´óСдÃô¸ÐµÄ·½Ê½¶Ô×Ö·û±àÂëµÄÃû³Æ½øÐÐÆ¥Åä¡£¶øÇÒ XML ´¦ÀíÆ÷´¦Àí×Ö·û±àÂëµÄÃû³ÆÊ±£¬Ó¦¸Ã½«ÔÚ IANA ×¢²áµÄ±àÂëÃû³Æ½âÊÍΪÔÚ IANA ×¢²áµÄÏàÓ¦±àÂ룬²»È»¾ÍÓ¦¸Ãµ±³Éδ֪µÄ±àÂ루µ±È»£¬²»ÒªÇó´¦ÀíÆ÷Ö§³ÖËùÓÐÔÚ IANA ×¢²áµÄ±àÂ룩¡£

ÔÚȱÉÙÍⲿ´«ÊäЭÒ飨Èç HTTP »ò MIME£©ËùÌṩµÄÐÅϢʱ£¬ÒÔÏÂÇé¿ö¾ùÊÇ´íÎó£ºXML ´¦ÀíÆ÷½ÓÊÕµ½µÄʵÌåµÄ±àÂë·½°¸ÓëʵÌåËùº¬±àÂëÉùÃ÷ÖÐÖ¸³öµÄ±àÂë·½°¸²»Í¬£¬¼È²»ÒÔ×Ö½Ú´ÎÐò±ê¼Ç¿ªÍ·Ò²²»ÒÔ±àÂëÉùÃ÷¿ªÍ·µÄʵÌåʹÓÃÁ˲»Í¬ÓÚ UTF-8 µÄ±àÂë¡£×¢Ò⣬ÒòΪ ASCII ÊÇ UTF-8 µÄÒ»¸ö×Ó¼¯£¬Ñϸñ˵À´ÆÕͨ ASCII ×Ö·û²»ÐèÒª±àÂëÉùÃ÷¡£

TextDecl ³öÏÖÔÚÍⲿʵÌ忪ͷÒÔÍâµÄµØ·½ÊÇÒ»¸öÑÏÖØ´íÎó¡£

µ± XML ´¦ÀíÆ÷Óöµ½µÄʵÌåʹÓÃÁËËü²»ÄÜ´¦ÀíµÄ±àÂëʱ£¬ÊÇÒ»¸öÑÏÖØ´íÎó¡£Èç¹ûÒ»¸ö XML ʵÌ屻ȷÈÏΪʹÓÃÁËijÖÖ±àÂ루ÓÉĬÈÏÖµ£¬±àÂëÉùÃ÷»ò¸ß²ãЭÒéÈ·¶¨£©£¬µ«ÊÇËü°üº¬ÁËÔڴ˱àÂëÖзǷ¨µÄ°Ëλ×éÐòÁеϰ£¬ÊÇÒ»¸öÑÏÖØ´íÎó¡£Èç¹ûÒ»¸ö XML ʵÌåûÓбàÂëÉùÃ÷¶øËüµÄÄÚÈݲ»ÊǺϷ¨µÄ UTF-8 »ò UTF-16 ±àÂëµÄ»°£¬Ò²ÊÇÒ»¸öÑÏÖØ´íÎó¡£

°üº¬±àÂëÉùÃ÷µÄÎı¾ÉùÃ÷µÄÀý×Ó£º

<?xml encoding='UTF-8'?>
<?xml encoding='EUC-JP'?>

4.4 XML ´¦ÀíÆ÷¶ÔʵÌåºÍÒýÓõĴ¦Àí

ϱí»ã×ÜÁË×Ö·ûÒýÓã¬ÊµÌåÒýÓ㬠ºÍ¶ÔδÎöʵÌåµÄµ÷ÓÿÉÒÔ³öÏÖµÄÉÏÏÂÎÄ£¬ÒÔ¼°Ã¿ÖÖÇé¿öÏ XML ´¦ÀíÆ÷µÄ¶¯×÷¡£ ×î×ó±ßÒ»ÁеıêʶָÃ÷ÁËʶ±ðʱµÄÉÏÏÂÎÄ£º

ÄÚÈÝÖеÄÒýÓÃ
¿ÉÒÔÔÚÔªËØµÄÆðʼ±êǩ֮ºó£¬½áÊø±êǩ֮ǰµÄÈκεط½ÒÔÒýÓÃÐÎʽ³öÏÖ£¬¶ÔÓ¦ÓÚ·ÇÖÕ½á·û content¡£
ÊôÐÔÖµÖеÄÒýÓÃ
¿ÉÒÔÔÚÆðʼ±êÇ©ÄÚµÄÊôÐÔÖµÖУ¬»òÊôÐÔÉùÃ÷ÄÚµÄȱʡֵÖÐÒÔÒýÓÃÐÎʽ³öÏÖ;¶ÔÓ¦ÓÚ·ÇÖÕ½á·û AttValue¡£
×÷ΪÊôÐÔÖµ
¿ÉÒÔÒÔ Name ¶ø²»ÊÇÒÔÒýÓõÄÐÎʽ³öÏÖ£¬×÷ΪÉùÃ÷Ϊ ENTITY ÀàÐ͵ÄÊôÐÔµÄÖµ£¬»ò¿ÉÒÔ×÷ΪÉùÃ÷Ϊ ENTITIES ÀàÐ͵ÄÊôÐÔÖµÖеÄÒÔ¿Õ°×·Ö¸ôµÄ¼ÇºÅÖ®Ò»¡£
ʵÌåÖµÖеÄÒýÓÃ
¿ÉÒÔÔÚ²ÎÊýÖлòÄÚ²¿ÊµÌåµÄʵÌåÉùÃ÷Äڵij£Á¿ÊµÌåÖµÖÐÒÔÒýÓÃÐÎʽ³öÏÖ£»¶ÔÓ¦ÓÚ·ÇÖÕ½á·û EntityValue¡£
DTD ÖеÄÒýÓÃ
ÔÚ DTD µÄÄÚ²¿»òÍⲿ×Ó¼¯ÖеÄÒýÓ㬵«ÔÚ EntityValue£¬AttValue£¬PI£¬Comment£¬SystemLiteral£¬PubidLiteral »ò±»ºöÂÔµÄÌõ¼þ¶ÎµÄÄÚÈÝ£¨¼û 3.4 Ìõ¼þ¶Î£©Ö®Íâ¡£
ʵÌåÀàÐÍ ×Ö·û
²ÎÊý ÄÚ²¿ÆÕͨ ÍⲿÒÑÎöÆÕͨ δÎö
ÄÚÈÝÖеÄÒýÓà ²»±»Ê¶±ð ±»°üº¬ ½øÐÐÑé֤ʱ±»°üº¬ ±»½ûÖ¹ ±»°üº¬
ÊôÐÔÖµÖеÄÒýÓà ²»±»Ê¶±ð ×÷Ϊ³£Á¿±»°üº¬ ±»½ûÖ¹ ±»½ûÖ¹ ±»°üº¬
×÷ΪÊôÐÔÖµ ²»±»Ê¶±ð ±»½ûÖ¹ ±»½ûÖ¹ ֪ͨ ²»±»Ê¶±ð
ʵÌåÖµÖеÄÒýÓà ×÷Ϊ³£Á¿±»°üº¬ ²»´¦Àí ²»´¦Àí ±»½ûÖ¹ ±»°üº¬
DTD ÖеÄÒýÓà ×÷Ϊ²ÎÊýʵÌå±»°üº¬ ±»½ûÖ¹ ±»½ûÖ¹ ±»½ûÖ¹ ±»½ûÖ¹

4.4.1 ²»±»Ê¶±ð£¨Not Recognized£©

ÔÚ DTD Ö®Í⣬°Ù·ÖºÅ×Ö·û % ûÓÐÌØÊ⺬Ò壻Òò´ËÔÚ DTD ÖеIJÎÊýʵÌåÒýÓÃÔÚ content Öв»±»µ±³É±ê¼Çʶ±ð¡£ÀàËÆµØ£¬³ý·ÇδÎöʵÌåµÄÃû×Ö³öÏÖÔÚÒÑÊʵ±ÉùÃ÷µÄÊôÐÔµÄÖµÖУ¬·ñÔòËüÃDz»±»Ê¶±ð¡£

4.4.2 ±»°üº¬£¨Included£©

[¶¨Ò壺µ±Ò»¸öʵÌåµÄÖû»Îı¾±»µ±³É³öÏÖÔÚÒýÓÃËùÔÚλÖõÄÎļþµÄÒ»²¿·ÖÒ»Ñù±»´æÈ¡ºÍ´¦Àíʱ£¬³Æ´ËʵÌå±»°üº¬¡£] ÆäÖû»Îı¾¿ÉÒÔ°üº¬×Ö·ûÊý¾ÝºÍ±ê¼Ç£¨²»°üÀ¨²ÎÊýʵÌ壩£¬ÆäÖбê¼Ç±ØÐëÒÔͨ³£µÄ·½Ê½Ê¶±ð¡££¨×Ö·û´® "AT&amp;T;" Õ¹¿ªÎª "AT&T;"£¬ÉдæµÄ "and" ºÅ & ²»±»Ê¶±ðΪʵÌåÒýÓõ͍½ç·û¡££©µ±±»±íʾµÄ×Ö·û±»µ±³É³öÏÖÔÚÒýÓÃËùÔÚλÖÃÒ»Ñù±»´¦Àíʱ£¬³Æ´Ë×Ö·ûÒýÓñ»°üº¬¡£

4.4.3 ½øÐÐÑé֤ʱ±»°üº¬£¨Included If Validating£©

µ± XML ´¦ÀíÆ÷ʶ±ð³öÒ»¸ö¶ÔÒÑÎöʵÌåµÄÒýÓã¬ÎªÁËÑéÖ¤¸ÃÎļþ£¬´¦ÀíÆ÷±ØÐë°üº¬´ËʵÌåµÄÖû»Îı¾¡£Èç¹ûʵÌåÊÇÍⲿµÄ£¬¶ø´¦ÀíÆ÷²»ÊÔͼÑéÖ¤¸Ã XML Îļþ£¬ÄÇô´¦ÀíÆ÷¿ÉÒÔ£¬µ«²»ÊDZØÐ룬°üº¬´ËʵÌåµÄÖû»Îı¾¡£Èç¹ûÒ»¸ö²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷²»°üº¬´ËÖû»Îı¾£¬Ëü±ØÐë֪ͨӦÓÃËüʶ±ð³öµ«Ã»ÓжÁÈ¡´ËʵÌå¡£

ÕâÌõ¹æÔò»ùÓÚÕâÑùÒ»¸ö¹²Ê¶£ºÓÉ SGML ºÍ XML µÄʵÌå»úÖÆÌṩµÄÆð³õÉè¼ÆÓÃÓÚÖ§³ÖÄ£¿é»¯´´×÷µÄ×Ô¶¯°üº¬²»Ò»¶¨ÊʺÏÓÚÆäËûÓ¦Óã¬ÓÈÆäÊÇÎļþä¯ÀÀ¡£ÀýÈ磬µ±ä¯ÀÀÆ÷Óöµ½Ò»¸öÍⲿÒÑÎöʵÌåÒýÓÃʱ£¬¿ÉÄÜÑ¡ÔñÓÿÉÊÓ·½Ê½±íʾÆä´æÔÚµ«Ö»ÔÚ±»ÇëÇóʱ²Å¶ÁÈ¡Ëü½øÐÐÏÔʾ¡£

4.4.4 ±»½ûÖ¹£¨Forbidden£©

ÒÔÏÂÇé¿ö±»½ûÖ¹£¬²¢¹¹³ÉÒ»¸öÑÏÖØ´íÎó£º

4.4.5 ×÷Ϊ³£Á¿±»°üº¬£¨Included in Literal£©

µ±ÊµÌåÒýÓóöÏÖÔÚÊôÐÔÖµÖлò²ÎÊýʵÌåÒýÓóöÏÖÔÚ³£Á¿ÊµÌåÖµÖÐʱ£¬ËüÃǵÄÖû»Îı¾±»µ±³É³öÏÖÔÚÒýÓÃËùÔÚλÖõÄÎļþµÄÒ»²¿·ÖÒ»Ñù±»´æÈ¡ºÍ´¦Àí£¬Öû»Îı¾Öеĵ¥Ë«ÒýºÅ×ÜÊDZ»µ±³ÉÕý³£µÄÊý¾Ý×Ö·û¶ø²»»á½áÊø´Ë³£Á¿¡£ÀýÈ磬ÏÂÃæµÄÀý×ÓÊǸñʽÕýÈ·µÄ£º

<!--  -->
<!ENTITY % YN '"Yes"' >
<!ENTITY WhatHeSaid "He said %YN;" >

¶øÕâ¸öÀý×Ó²»ÊÇ£º

<!ENTITY EndAttr "27'" >
<element attribute='a-&EndAttr;>

4.4.6 ֪ͨ£¨Notify£©

µ±Î´ÎöʵÌåÃû×Ö×÷Ϊ¼ÇºÅÔÚÉùÃ÷Ϊ ENTITY »ò ENTITIES ÀàÐ͵ÄÊôÐÔµÄÖµÖгöÏÖʱ£¬ ½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷±ØÐ뽫´ËʵÌåºÍËüµÄÏà¹Ø¼Ç·¨µÄϵͳºÍ¹«¹²£¨Èç¹ûÓеϰ£©±êʶ·û֪ͨ¸øÓ¦Óá£

4.4.7 ²»´¦Àí£¨Bypassed£©

µ±ÊµÌåÉùÃ÷ÄÚÒ»¸öÆÕͨʵÌåÒýÓóöÏÖÔÚ EntityValue ÖÐʱ£¬ Ëü²»±»´¦Àí£¬±£³Ö²»±ä¡£

4.4.8 ×÷Ϊ²ÎÊýʵÌå±»°üº¬£¨Included as PE£©

ºÍÍⲿÒÑÎöʵÌåÒ»Ñù£¬²ÎÊýʵÌåÖ»ÐèÔÚ½øÐÐÑé֤ʱ±»°üº¬¡£µ±²ÎÊýʵÌåÒýÓÃÔÚ DTD Öб»Ê¶±ð²¢±»°üº¬Ê±£¬ËüµÄÖû»Îı¾±»Ç°ºó¸÷¼ÓÉÏÒ»¸ö¿Õ¸ñ×Ö·û£»ÆäÄ¿µÄÔÚÓÚÇ¿ÖÆ²ÎÊýʵÌåµÄÖû»Îı¾°üº¬ÕûÊý¸ö DTD ÖеÄÓï·¨¼ÇºÅ¡£Õâ²»ÊÊÓÃÓÚʵÌåÖµÄڵIJÎÊýʵÌ壻¶ÔËüÃǵĴ¦Àí¼û 4.4.5 ×÷Ϊ³£Á¿±»°üº¬

4.5 ÄÚ²¿ÊµÌåÖû»Îı¾µÄ¹¹½¨£¨Construction of Internal Entity£©

ÔÚÌÖÂÛÄÚ²¿ÊµÌåµÄ´¦Àíʱ£¬Çø·ÖÁ½ÖÖÐÎʽµÄʵÌåÖµÊÇÓаïÖúµÄ¡£[¶¨Ò壺³£Á¿ÊµÌåÖµ£¨literal entity value£©ÊÇʵ¼Ê³öÏÖÔÚʵÌåÉùÃ÷ÖÐÓÃÒýºÅÀ©ÆðµÄ×Ö·û´®¡£] ¶ÔÓ¦ÓÚ·ÇÖÕ½á·û EntityValue¡£Öû»Îı¾£¨replacement text£©ÊÇÖû»ÁË×Ö·ûÒýÓúͲÎÊýʵÌåÒýÓúóµÄʵÌåÄÚÈÝ¡£

ÔÚÄÚ²¿ÊµÌåÉùÃ÷£¨EntityValue£©Öиø³öµÄ³£Á¿ÊµÌåÖµ¿ÉÒÔ°üÀ¨×Ö·ûÒýÓ㬲ÎÊýʵÌåÒýÓÃºÍÆÕͨʵÌåÒýÓá£ÕâЩÒýÓñØÐë±»Õû¸ö°üº¬ÓÚ³£Á¿ÊµÌåÖµÖС£ÈçǰÊö·½Ê½±»°üº¬µÄʵ¼ÊÖû»Îı¾±ØÐë°üº¬ËùÓб»ÒýÓõIJÎÊýʵÌåµÄÖû»Îı¾£¬Í¬Ê±ËùÓб»ÒýÓõÄ×Ö·û±ØÐëÔÚ³£Á¿ÊµÌåÖµÖÐ×Ö·ûÒýÓÃËùÔÚλÖñ»°üº¬¡£µ«ÆÕͨʵÌåµÄÒýÓñØÐë±£³Ö²»±ä£¬²»±»Õ¹¿ª¡£ÀýÈ磬Èç¹ûÓÐÒÔϵÄÉùÃ÷£º

<!ENTITY % pub    "&#xc9;ditions Gallimard" >
<!ENTITY   rights "All rights reserved" >
<!ENTITY   book   "La Peste: Albert Camus, 
&#xA9; 1947 %pub;. &rights;" >

ÄÇôʵÌå "book" µÄÖû»Îı¾Îª£º

La Peste: Albert Camus, 
?nbsp;1947 Éditions Gallimard. &rights;

Ò»µ©ÒýÓà "&book;" ³öÏÖÔÚÎļþµÄÄÚÈÝ»òÊôÐÔÖµÖÐʱ£¬ÆÕͨʵÌåÒýÓà "&rights;" Ó¦¸Ã±»Õ¹¿ª¡£

ÕâЩ¼òµ¥µÄ¹æÔò½«¿ÉÄÜ»áÓи´ÔÓµÄÏ໥×÷ÓÃ;²Î¼û "D. ÊµÌåºÍ×Ö·ûÒýÓõÄÕ¹¿ª" ÖжÔÒ»¸öÄѵÄÀý×ÓµÄÏêϸÌÖÂÛ¡£

4.6 Ô¤¶¨ÒåʵÌ壨Predefined Entities£©

[¶¨Ò壺ʵÌåºÍ×Ö·ûÒýÓö¼¿ÉÒÔÓÃÓÚתÒå×ó¼âÀ¨ºÅ£¬"and" ºÅ£¨&£©ºÍÆäËû¶¨½ç·û¡£ÆÕͨʵÌ弯ºÏ£¨amp£¬lt£¬gt£¬apos£¬quot£©×¨ÃÅÓÃÓÚ´ËÄ¿µÄ¡£Ò²¿ÉÒÔʹÓÃÊýÖµ×Ö·ûÒýÓã»Ò»µ©±»Ê¶±ð£¬ËüÃÇÁ¢¼´±»Õ¹¿ª£¬Í¬Ê±ËüÃDZØÐë±»µ±³É×Ö·ûÊý¾Ý£¬Òò´ËÊýÖµ×Ö·ûÒýÓà "&#60;" ºÍ "&#38;" ¿ÉÒÔÓÃÓÚתÒå³öÏÖÔÚ×Ö·ûÊý¾ÝÖÐµÄ < ºÍ &¡£]

²»¹ÜÕâЩʵÌåÊÇ·ñ±»ÉùÃ÷£¬ËùÓÐµÄ XML ´¦ÀíÆ÷±ØÐëÄÜʶ±ðËüÃÇ¡£³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ£¬ÓÐЧµÄ XML ÎļþÓ¦¸ÃÈçÆäËûʵÌåÒ»Ñù£¬ÔÚʹÓÃÕâЩʵÌåǰÏÈÉùÃ÷ËüÃÇ¡£Èç¹ûʵÌå lt »ò amp ±»ÉùÃ÷£¬ËüÃDZØÐë±»ÉùÃ÷ΪÖû»Îı¾ÎªÏàÓ¦±»×ªÒå×Ö·ûµÄ×Ö·ûÒýÓã¨Ð¡ÓںŻò "and" ºÅ£©µÄÄÚ²¿ÊµÌ壻¶ÔÕâЩʵÌåÐèҪתÒåÁ½´ÎÒÔʹ¶ÔËüÃǵÄÒýÓÃÄܵõ½¸ñʽÕýÈ·µÄ½á¹û¡£Èç¹ûʵÌå gt£¬apos »ò quot ±»ÉùÃ÷£¬ËüÃDZØÐë±»ÉùÃ÷ΪÖû»Îı¾ÎªÏàÓ¦±»×ªÒåµÄµ¥¸ö×Ö·ûµÄÄÚ²¿ÊµÌ壨»òÖ¸Ïò±»×ªÒå×Ö·ûµÄ×Ö·ûÒýÓã»ÕâÀïתÒåÁ½´ÎÊDz»±ØÒªµÄ£¬µ«Ò²ÊÇÎÞº¦µÄ£©¡£ÀýÈ磺

<!ENTITY lt     "&#38;#60;"> 
<!ENTITY gt     "&#62;"> 
<!ENTITY amp    "&#38;#38;"> 
<!ENTITY apos   "&#39;"> 
<!ENTITY quot   "&#34;"> 

4.7 ¼Ç·¨ÉùÃ÷£¨Notation Declarations£©

[¶¨Ò壺¼Ç·¨ÓÃÃû×Ö±êʶÁËδÎöʵÌåµÄ¸ñʽ£¬¾ßÓмǷ¨ÊôÐÔµÄÔªËØµÄ¸ñʽÒÔ¼°´¦ÀíÖ¸ÁîËùÕë¶ÔµÄÓ¦Óõĸñʽ¡£]

[¶¨Ò壺¼Ç·¨ÉùÃ÷¸³Óè¼Ç·¨Ò»¸öÃû×ÖÓÃÓÚʵÌåÖУ¬ÊôÐÔ±íÉùÃ÷ÖкÍÊôÐÔֵ˵Ã÷ÖУ¬Í¬Ê±Ò²¸ø³öÁËÒ»¸ö¼Ç·¨µÄÍⲿ±êʶ·ûʹµÃ XML ´¦ÀíÆ÷»òËüµÄ¿Í»§Ó¦ÓÿÉÒÔ¶¨Î»ÄÜÒÔ¸ø¶¨¼Ç·¨µÄ¸ñʽ´¦ÀíÊý¾ÝµÄÖúÀíÓ¦Óá£]

¼Ç·¨ÉùÃ÷
[82]    NotationDecl    ::=    '<!NOTATION' S Name S (ExternalID | PublicID) S? '>' [VC: ΨһµÄ¼Ç·¨Ãû×Ö]
[83]    PublicID    ::=    'PUBLIC' S PubidLiteral

ÓÐЧÐÔÔ¼Êø£ºÎ¨Ò»µÄ¼Ç·¨Ãû×Ö

Ò»¸ö¸ø¶¨µÄ Name Ö»Äܱ»Ò»¸ö¼Ç·¨ÉùÃ÷ËùÉùÃ÷.

XML ´¦ÀíÆ÷±ØÐëÏòÓ¦ÓÃÌṩÈκÎÔÚÊôÐÔÖµÖУ¬ÊôÐÔ¶¨ÒåÖлòʵÌåÉùÃ÷Öж¨Òå»òÒýÓõļǷ¨µÄÃû×ÖºÍÍⲿ±êʶ·û¡£ËüÃÇ»¹¿ÉÒÔ½«Íⲿ±êʶ·û½âÎö³Éϵͳ±êʶ·û£¬ÎļþÃû£¬»òÊÇÓ¦Óõ÷ÓÃÏàÓ¦´¦ÀíÆ÷´¦Àí¸ø¶¨¼Ç·¨¸ñʽµÄÊý¾ÝµÄËùÐèµÄÆäËûÐÅÏ¢¡££¨µ«Èç¹û XML ´¦ÀíÆ÷»òÓ¦ÓÃËùÔËÐеÄϵͳÖÐûÓд¦Àí XML ÎļþÉùÃ÷ºÍÒýÓõļǷ¨µÄÏàÓ¦Ó¦ÓõÄÇé¿ö£¬²»ÊÇÒ»¸ö´íÎó¡££©

4.8 ÎļþʵÌ壨Document Entity£©

[¶¨Ò壺ÎļþʵÌ壨document entity£©ÊÇʵÌåÊ÷µÄ¸ùºÍ XML ´¦ÀíÆ÷µÄ´¦ÀíÆðµã¡£] ±¾¹æ·¶Ã»Óй涨 XML ÈçºÎ¶¨Î»ÎļþʵÌ壻ÓëÆäËûʵÌ岻ͬ£¬ÎļþʵÌåûÓÐÃû×Ö£¬¶øÇÒ¿ÉÒÔÍêÈ«²»´øÈκαêʶµØ³öÏÖÔÚ´¦ÀíÆ÷µÄÊäÈëÁ÷ÖС£

5. Ò»ÖÂÐÔ£¨Conformance£©

5.1 ½øÐÐÑéÖ¤ºÍ²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷£¨Validating and Non-Validating Processors£©

ºÏºõ¹æ·¶µÄ XML ´¦ÀíÆ÷¿ÉÒÔ·ÖΪÁ½Àࣺ½øÐÐÑéÖ¤µÄºÍ²»½øÐÐÑéÖ¤µÄ¡£

½øÐÐÑéÖ¤ºÍ²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷¶¼±ØÐ뱨¸æÔÚÎļþʵÌåµÄÄÚÈÝÖкÍÈÎºÎÆäËûËüÃǶÁµ½µÄÒÑÎöʵÌåÖжԸñʽÕýÈ·ÐÔÔ¼ÊøµÄÎ¥·´¡£

[¶¨Ò壺½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷±ØÐ룬ÓÉʹÓÃÕßÑ¡Ôñ£¬±¨¸æÎ¥·´ DTD ÉùÃ÷ÖÐËùÊöÔ¼ÊøµÄÇé¿öÒÔ¼°²»Âú×ã±¾¹æ·¶Öиø³öµÄÓÐЧÐÔÔ¼ÊøµÄÇé¿ö¡£] ÒªÍê³ÉÕâÒ»µã£¬½øÐÐÑéÖ¤µÄ XML ´¦ÀíÆ÷±ØÐë¶ÁÈ¡ºÍ´¦ÀíÕû¸ö DTD ºÍËùÓÐÔÚÎļþÖÐÒýÓõÄÍⲿÒÑÎöʵÌå¡£

²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷Ö»±»ÒªÇó¼ì²éÎļþʵÌåºÍÕû¸öÄÚ²¿ DTD ×Ó¼¯µÄ¸ñʽÕýÈ·ÐÔ¡£[¶¨Ò壺ËäÈ»ËüÃDz»±»ÒªÇó¼ì²éÎļþµÄÓÐЧÐÔ£¬µ«ËüÃDZØÐë´¦ÀíËüÃǶÁÈ¡µÄËùÓÐÄÚ²¿ DTD ×Ó¼¯ÖеÄÉùÃ÷ºÍËùÓвÎÊýʵÌ壬ֱµ½Óöµ½µÚÒ»¸ö¶ÔËüÃÇûÓжÁÈ¡µÄ²ÎÊýʵÌåµÄÒýÓã»Ò²¾ÍÊÇ˵£¬ËüÃDZØÐë¸ù¾ÝÕâЩÉùÃ÷ÖеÄÐÅÏ¢¹æ·¶»¯ÊôÐÔÖµ£¬°üº¬ÄÚ²¿ÊµÌåµÄÖû»Îı¾£¬²¢ÌṩȱʡÊôÐÔÖµ¡£] ³ýÁË standalone="yes" µÄÇé¿ö£¬ËüÃÇÔÚÓöµ½µÚÒ»¸ö¶ÔËüÃÇûÓжÁÈ¡µÄ²ÎÊýʵÌåµÄÒýÓú󣬲»Ó¦´¦ÀíÆäºóµÄʵÌåÉùÃ÷»òÊôÐÔ±íÉùÃ÷£¬ÒòΪ´ËʵÌåÖаüº¬µÄÉùÃ÷¿ÉÄܸ²¸ÇÇ°ÃæµÄÉùÃ÷¡£

5.2 ʹÓà XML ´¦ÀíÆ÷

½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷µÄÐÐΪÊǸ߶ȿÉÔ¤²âµÄ;Ëü±ØÐë¶ÁÈ¡ÎļþµÄËùÓв¿·Ö£¬±¨¸æËùÓжԸñʽÕýÈ·ÐÔºÍÓÐЧÐÔµÄÎ¥·´¡£¶ÔÒ»¸ö²»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷µÄÒªÇóÒªµÍÒ»µã£»Ëü²»ÐèÒª¶ÁÈ¡ÎļþʵÌåÒÔÍâµÄÈκÎÎļþ²¿·Ö¡£Õâ¶Ô XML µÄ´¦ÀíÆ÷µÄʹÓÃÕß¶øÑÔ¿ÉÄÜ»áÓÐÁ½¸öÖØÒªµÄÓ°Ï죺

ΪÁËʹ²»Í¬ XML ´¦ÀíÆ÷¼äµÄ»¥²Ù×÷ÓÐ×î´óµÄ¿É¿¿ÐÔ£¬ ʹÓò»½øÐÐÑéÖ¤µÄ´¦ÀíÆ÷µÄÓ¦Óò»Ó¦ÒÀÀµÓÚ²»ÒªÇóÕâЩ´¦ÀíÆ÷¾ß±¸µÄ¶¯×÷¡£ ÄÇЩҪÇóʹÓÃÈçȱʡֵ»òÔÚÍⲿʵÌåÖÐÉùÃ÷ÄÚ²¿ÊµÌåµÈ¹¦ÄܵÄÓ¦ÓÃÓ¦¸ÃʹÓýøÐÐÑéÖ¤µÄ XML ´¦ÀíÆ÷¡£

6. ¼Ç·¨£¨Notation£©

±¾¹æ·¶ÖÐ XML µÄÐÎʽ»¯ÎÄ·¨ÓÃÒ»ÖÖ¼òµ¥µÄÀ©Õ¹°Í¿ÆË¹·¶Ê½£¨Extended Backus-Naur Form£¬EBNF£©¸ø³ö¡£ÎÄ·¨ÖеÄÿһÌõ¹æÔò¶¨ÒåÁËÒ»¸ö·ûºÅ£¬ÐÎʽÈçÏ£º

symbol ::= expression

Èç¹û·ûºÅÊÇÕýÔòÓïÑÔµÄÆðʼ·ûºÅ£¬ÔòËüÒÔ´óд×Öĸ¿ªÍ·£¬ ·ñÔòÒÔСд×Öĸ¿ªÍ·¡£×Ö·û´®³£Á¿£¨literal strings£©ÓÃÒýºÅÀ¨Æð¡£

ÔÚ¹æÔòÓұߵıí´ïʽÖУ¬ÒÔϱí´ïʽÓÃÓÚÆ¥ÅäÒ»¸ö»ò¶à¸ö×Ö·ûµÄ×Ö·û´®£º

#xN

N ÊÇÒ»¸öÊ®Áù½øÖƵÄÕûÊý£¬µ± ISO/IEC 10646 ÖÐij¸ö×Ö·ûµÄ¹æ·¶£¨UCS-4£©´úÂëÖµ×÷ΪÎÞ·ûºÅ¶þ½øÖÆÊýÓë N ÏàµÈʱ£¬´Ë±í´ïʽƥÅäÕâ¸ö×Ö·û¡£#xN ÖеÄǰµ¼ 0 ûÓÐÒâÒ壬ÔÚÏàÓ¦µÄ´úÂëÖµÖеÄǰµ¼ 0 µÄ¸öÊýÔòÓÉËùÓÃ×Ö·û±àÂë·½°¸¾ö¶¨£¬¶Ô XML ûÓÐÒâÒå¡£

[a-zA-Z]£¬ [#xN-#xN]

ÓëÆäÖµÔÚÖ¸¶¨·¶Î§ÄÚµÄÈκΠChar ÏàÆ¥Å䣨º¬½ç£¬inclusive£©¡£

[abc], [#xN#xN#xN]

ÓëÆäֵΪËùö¾ÙµÄÖµÖ®Ò»µÄ Char ÏàÆ¥Åä¡£ÔÚÒ»¶Ô·½À¨ºÅÄÚö¾ÙºÍ·¶Î§¿ÉÒÔ»ìÓá£

[^a-z]£¬ [^#xN-#xN]

ÓëÆäÖµÔÚÖ¸¶¨·¶Î§Ö®ÍâµÄÈκΠChar ÏàÆ¥Åä¡£

[^abc]£¬ [^#xN#xN#xN]

ÓëÈκβ»ÔÚ¸ø¶¨×Ö·û¼¯ÄÚµÄ Char ÏàÆ¥Åä¡£ÔÚÒ»¶Ô·½À¨ºÅÄÚ±»½ûÖµµÄö¾ÙºÍ·¶Î§¿ÉÒÔ»ìÓá£

"string"

ÓëÆ¥ÅäË«ÒýºÅÖÐËù¸ø×Ö·û´®µÄ³£Á¿×Ö·û´®ÏàÆ¥Åä¡£

'string'

ÓëÆ¥Åäµ¥ÒýºÅÖÐËù¸ø×Ö·û´®µÄ³£Á¿×Ö·û´®ÏàÆ¥Åä¡£

ÕâЩ·ûºÅ¿ÉÒÔ°´ÏÂÁз½Ê½×éºÏ£¬ÒÔÆ¥Åä¸ü¸´ÔÓµÄģʽ£¬ÆäÖÐAºÍB±íʾ¼òµ¥±í´ïʽ£º

(expression)
expression ±»µ±³ÉÒ»¸öµ¥Ôª£¬¿ÉÒÔÏò±¾±íÃèÊöµÄÄÇÑù½øÐÐ×éºÏ¡£
A?
ÓëÁã¸ö»òÒ»¸ö A ÏàÆ¥Å䣬¼´ A ¿ÉÑ¡¡£
A B
Óë A ºó¸ú B µÄģʽÏàÆ¥Åä¡£Õâ¸ö²Ù×÷·ûµÄÓÅÏȼ¶¸ßÓÚ |£¬Òò´Ë A B | C D Ï൱ÓÚ (A B) | (C D)¡£
A | B
Óë A »ò B Ö®Ò»ÏàÆ¥Å䣬µ«²»Í