Extensible Markup Language (XML) 1.0

±¾ÎĵµÊÇW3C½¨ÒéXML 1.0(1998Äê2ÔÂ10ÈÕ)µÄÖÐÎİ棬ÆäÖпÉÄÜÓдíÎóºÍ²»Í×Ö®´¦¡£

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

http://www.w3.org/TR/1998/REC-xml-19980210

±¾ÎĵµÎ»ÓÚ£º

http://lightning.prohosting.com/~qqiu/xml/trans/REC-xml-19980210-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.

W3CREC-xml-19980210-cn


¿ÉÀ©Õ¹±ê¼ÇÓïÑÔ(XML) 1.0

W3C½¨Òé 1998Äê2ÔÂ10ÈÕ

±¾°æ±¾:
http://www.w3.org/TR/1998/REC-xml-19980210
http://www.w3.org/TR/1998/REC-xml-19980210.xml
http://www.w3.org/TR/1998/REC-xml-19980210.html
http://www.w3.org/TR/1998/REC-xml-19980210.pdf
http://www.w3.org/TR/1998/REC-xml-19980210.ps
×îа汾:
http://www.w3.org/TR/REC-xml
ÉÏÒ»°æ±¾:
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) <cmsmcq@uic.edu>

ÕªÒª

±¾ÎĵµÍêÕûµØÃèÊöÁË¿ÉÀ©Õ¹±ê¼ÇÓïÑÔ(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/TR¿ÉÒÔÕÒµ½ÏÖÓÐW3C½¨ÒéºÍÆäËû¼¼ÊõÎĵµµÄÒ»¸öÁÐ±í¡£

±¾¹æ·¶ÖÐʹÓÃÁË[Berners-LeeµÈÈË]¶¨ÒåµÄÒ»¸öÊõÓïURI£¬ËûÃÇÕýÔÚ´ÓʵĵŤ×÷½«¸üÐÂ[IETF RFC1738]ºÍ[IETF RFC1808]¡£

±¾¹æ·¶µÄÒÑÖª´íÎóÁбí¿ÉÒÔÔÚhttp://www.w3.org/XML/xml-19980210-errataÕÒµ½¡£

Ç뽫±¾ÎĵµÖеĴíÎó±¨¸æ¸øxml-editor@w3.org¡£

¿ÉÀ©Õ¹±ê¼ÇÓïÑÔ(XML) 1.0

Ŀ¼

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 ×÷ΪPE±»°üº¬
    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. ×Ö·û±àÂëµÄ×Ô¶¯¼ì²â(·ÇÕýʽ)
G. W3C XML¹¤×÷×é(·ÇÕýʽ)


1. Ð÷ÂÛ

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

XMLÎļþÓɳÆÎªÊµÌåµÄ´æ´¢µ¥Ôª×é³É£¬ÊµÌå¿ÉÒÔ°üº¬ÒÑÎöÊý¾Ý»òδÎöÊý¾Ý¡£ÒÑÎöÊý¾ÝÓÉ×Ö·û×é³É£¬ÆäÖÐһЩ×Ö·û×é³É×Ö·ûÊý¾Ý£¬ÁíһЩ×Ö·û×é³É±ê¼Ç¡£±ê¼ÇÖаüº¬Á˶ÔÎļþ´æ´¢¸ñʽ(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)+±äÒô·ûÐÎʽµÄ×Ö·û)Ö»ÔÚÁ½¸ö×Ö·û´®Öеıíʾ·½Ê½Ïàͬʱ²ÅÆ¥Åä¡£ÓÉÓû§Ñ¡Ôñ£¬´¦ÀíÆ÷¿ÉÒÔ½«ÕâЩ×Ö·û¹æ·¶³ÉijÖֹ淶ÐÎʽ¡£²»½øÐÐ×Ö·ûµÄ´óСдת»»¡£(¶ÔÓÚÎÄ·¨ÖеÄ×Ö·û´®ºÍ¹æÔò£º)Èç¹ûÒ»¸ö×Ö·û´®ÊôÓÚÒ»¸öÎÄ·¨²úÉúʽ²úÉúµÄÓïÑÔ£¬ÔòËüÆ¥ÅäÕâ¸ö²úÉúʽ¡£(¶ÔÓÚÄÚÈݺÍÄÚÈÝÄ£ÐÍ£º)µ±Ò»¸öÔªËØ·ûºÏ"ÔªËØÓÐЧÐÔ"Ô¼ÊøÖеÄÃèÊöʱ£¬ËüÆ¥ÅäÆäÉùÃ÷.
³öÓÚ¼æÈÝÐÔ¿¼ÂÇ(for compatibility)
½öÓÃÓÚ±£Ö¤ÓëSGML¼æÈݵÄXMLÌØÐÔ¡£
³öÓÚ»¥²Ù×÷ÐÔ¿¼ÂÇ(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]Öж¨ÒåµÄÎı¾×îСµ¥Ôª¡£ºÏ·¨µÄ×Ö·û°üÀ¨ÖƱí·û£¬»Ø³µ£¬»»ÐÐÒÔ¼°UnicodeºÍISO/IEC 10646Öж¨ÒåµÄºÏ·¨µÄͼÐÎ×Ö·û¡£²»ÌᳫʹÓÃ[Unicode]6.8½ÚÖж¨ÒåµÄ"¼æÈÝ×Ö·û(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Ãû×ÖÖеÄðºÅ±»±£ÁôÓÃÓÚÃû×Ö¿Õ¼ä(name space)ʵÑé¡£ËüµÄº¬ÒåÓдýÓÚÈÕºó±ê×¼»¯£¬ÄÇʱÄÇЩ½«Ã°ºÅÓÃÓÚʵÑéÄ¿µÄµÄÎļþÓпÉÄÜÐèÒª¸üС£(²»±£Ö¤XML²ÉÓõÄÈκÎÃû×Ö¿Õ¼ä»úÖÆ»áʵ¼Ê²ÉÓÃðºÅ×÷Ϊ¶¨½ç·û¡£)ʵ¼ÊÉÏ£¬ÕâÒâζ×ųý·ÇÓÃÓÚÃû×Ö¿Õ¼äʵÑ飬XMLÎļþ×÷Õß²»Ó¦¸ÃÔÚXMLÃû×ÖÖÐʹÓÃðºÅ£¬µ«XML´¦ÀíÆ÷Ó¦¸Ã½ÓÊÜðºÅ×÷Ϊһ¸öÃüÃû×Ö·û¡£

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

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

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

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

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

Îı¾ÓÉ×Ö·ûÊý¾ÝºÍ±ê¼Ç»ìºÏ¹¹³É¡£±ê¼Ç°üÀ¨Æðʼ±êÇ©£¬½áÊø±êÇ©£¬¿ÕÔªËØ±êÇ©£¬ÊµÌåÒýÓã¬×Ö·ûÒýÓã¬×¢ÊÍ£¬CDATA¶Î¶¨½ç·û£¬ÎļþÀàÐÍÉùÃ÷ºÍ´¦ÀíÖ¸Áî¡£

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

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

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

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

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

2.5 ×¢ÊÍ

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

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

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

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

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 ::= CommentPIS

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

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

ÎļþÀàÐͶ¨Òå
[28]  doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdeclPEReferenceS)* ']' S?)? '>' [ VC: ¸ùÔªËØÀàÐÍ ]
[29]  markupdecl ::= elementdeclAttlistDeclEntityDeclNotationDeclPIComment [ VC: ÑϸñµÄÉùÃ÷/PEǶÌ× ]
¡¡ ¡¡ ¡¡ ¡¡ [ WFC: ÄÚ²¿×Ó¼¯ÖеÄPE ]

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

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

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

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

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

Íⲿ×Ó¼¯
[30]  extSubset ::= TextDecl? extSubsetDecl
[31]  extSubsetDecl ::= ( markupdeclconditionalSectPEReferenceS )*

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

ÓÐÎļþÀàÐÍÉùÃ÷µÄ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ÉùÃ÷³É·ÖµÄ¶ÀÁ¢ÎļþÉùÃ÷£¬Ö¸Ã÷Á˶ÔÓÚÎļþʵÌå¶øÑÔ£¬ÊÇ·ñ´æÔÚÍⲿµÄÉùÃ÷¡£

£¬±ê¼ÇÉùÃ÷ÌṩijһÀàÎļþµÄÎÄ·5DCB3">
¶ÀÁ¢ÎļþÉùÃ÷
[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Îļþʱ£¬Ê¹ÓÃ"¿Õ°×"(¿Õ¸ñ£¬ÖƱí·û£¬¿ÕÐУ¬ÔÚ±¾¹æ·¶ÖÐÓ÷ÇÖÕ½á·ûS±íʾ)À´·Ö¿ª±ê¼ÇÒÔ»ñµÃ¸üºÃµÄ¿É¶ÁÐÔÊǺܷ½±ãµÄ¡£Í¨³£ÔÚÎļþµÄ½»¸¶°æ±¾Öв»Ïë°üº¬ÕâЩ¿Õ°×¡£ÁíÒ»·½Ã棬±ØÐë±£ÁôÔÚ½»¸¶°æ±¾ÖеÄÓÐÒâÒåµÄ¿Õ°×ÊǺܳ£¼ûµÄ£¬ÈçÔÚÊ«¸èºÍÔ´ÂëÖеĿհס£

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

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

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

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

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

2.11 ÐÐβ´¦Àí

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

ΪÁËʹӦÓõŤ×÷¼òµ¥»¯£¬¶ÔÓÚÒ»¸öÍⲿÒÑÎöʵÌå»òÄÚ²¿ÒÑÎöʵÌåµÄ³£Á¿ÊµÌåÖµÖаüº¬µÄÈκÎÁ½×Ö·û³£Á¿ÐòÁÐ"#xD#xA"»òµ¥¶ÀµÄ³£Á¿#xD£¬XML´¦ÀíÆ÷¶¼Ó¦»»³É#xA´«µÝ¸øÓ¦Óá£(Õâ¿ÉÒÔͨ¹ýÔÚ½øÐÐÓï·¨·ÖÎöǰ½«ËùÓÐÐзָô·û¹æ·¶³É#xA¶ø·½±ãµØÊµÏÖ¡£)

2.12 ÓïÑÔ±êʶ

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

ÓïÑÔ±êʶ
[33]  LanguageID ::= Langcode ('-' Subcode)*
[34]  Langcode ::= ISO639CodeIanaCodeUserCode
[35]  ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z])
[36]  IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+
[37]  UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+
[38]  Subcode ::= ([a-z] | [A-Z])+

Langcode¿ÉÒÔÊÇÏÂÁÐÖµ£º

¿ÉÒÔÓÐÈÎÒâ¶à¸öSubcode¶Î£¬Èç¹ûµÚÒ»¸ö×Ó´úÂë¶Î´æÔÚ£¬²¢ÇÒ×Ó´úÂëÓÉÁ½¸ö×Öĸ×é³É£¬ÄÇô´Ë×Ó´úÂë±ØÐëÊÇ[ISO 3166]£¬"¹ú¼ÒÃû³ÆµÄ±íʾÂë"Öж¨ÒåµÄ¹ú¼Ò´úÂë¡£Èç¹ûµÚÒ»¸ö×Ó´úÂë¶àÓÚÁ½¸ö×Öĸ£¬ÄÇôËü±ØÐëÊÇÔÚIANA×¢²áµÄÓïÑÔ´úÂëËù±íʾµÄÓïÑÔµÄ×Ó´úÂ룬³ý·ÇËüLangcodeÒÔǰ׺"x-"»ò"X-"¿ªÍ·¡£

ϰ¹ßÉÏÓÃСд×Öĸ¸ø³öÓïÑÔ´úÂ룬Óôóд×Öĸ¸ø³ö¹ú¼Ò´úÂë(Èç¹ûÓеϰ)¡£×¢ÒâÕâЩֵÓëXMLÎļþÖÐµÄÆäËûÃû×Ö²»Í¬£¬ÊÇ´óСдÎ޹صġ£

¾ÙÀýÈçÏ£º

<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µÄ×Ö·û)¡£
  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 ÊôÐÔ±íÉùÃ÷"¡£)

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

¹æ·¶ÐÔÔ¼Êø: ÔÚÊôÐÔÖµÖÐûÓÐ<
ÔÚÒ»¸öÊôÐÔÖµÖÐÖ±½Ó»ò¼ä½ÓÒýÓõÄʵÌåµÄÖû»Îı¾(³ýÁË"&lt;")²»Äܰüº¬<¡£

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

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

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

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

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

</termdef>

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

ÔªËØµÄÄÚÈÝ
[43]  content ::= (elementCharDataReferenceCDSectPIComment)*

Èç¹ûÔªËØµÄÄÚÈÝΪ¿Õ£¬Ëü±ØÐë±íʾΪһ¸öÆðʼ±êÇ©½ô¸úÒ»¸ö½áÊø±êÇ©»ò¿ÕÔªËØ±êÇ©¡£¿ÕÔªËØ±êÇ©Ôò²ÉÓÃÒ»ÖÖÌØÊâµÄÐÎʽ£º

¿ÕÔªËØ±êÇ©
[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' | Mixedchildren

ÆäÖÐ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 ::= (choiceseq) ('?' | '*' | '+')?
[48]  cp ::= (Namechoiceseq) ('?' | '*' | '+')?
[49]  choice ::= '(' S? cp ( S? '|' S? cp )* S? ')' [ VC: ÑϸñµÄ×é/PEǶÌ× ]
[50]  seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' [ VC: ÑϸñµÄ×é/PEǶÌ× ]

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

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

ÓÐЧÐÔÔ¼Êø: ÑϸñµÄ×é/PEǶÌ×
²ÎÊýʵÌåµÄÖû»Îı¾ÓÃÀ¨ºÅÀ¨ÆðµÄ×éÑϸñǶÌס£¼´£¬Èç¹û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: ÑϸñµÄ×é/PEǶÌ× ]
¡¡ ¡¡ ¡¡ ¡¡ [ VC: ÎÞÖØ¸´ÀàÐÍ ]

ÆäÖÐName¸ø³öÁË×ÓÔªËØµÄÔªËØµÄÀàÐÍ¡£

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

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

<!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ÊôÐÔÓÐÈýÖÖÀàÐÍ£º×Ö·û´®ÀàÐÍ£¬Ò»×é¼ÇºÅ»¯ÀàÐͺÍö¾ÙÀàÐÍ¡£×Ö·û´®ÀàÐÍ¿ÉÒÔÒÔÈÎÒâ³£Á¿×Ö·û´®ÎªÖµ; ¸÷¸ö¼ÇºÅ»¯ÀàÐÍÓв»Í¬µÄ´Ê·¨ºÍÓïÒåÔ¼Êø£¬ÈçÏ£º

ÊôÐÔÀàÐÍ
[54]  AttType ::= StringTypeTokenizedTypeEnumeratedType
[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 ::= NotationTypeEnumeration
[58]  NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' [ VC: ¼Ç·¨ÊôÐÔ ]
[59]  Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' [ VC: ö¾Ù ]

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

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

ÓÐЧÐÔÔ¼Êø: ö¾Ù
´ËÀàÐ͵ÄÖµ±ØÐëÓëÉùÃ÷ÖÐËù°üº¬µÄ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´¦ÀíÆ÷±ØÐ뽫Æä¹æ·¶»¯£º

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

²»½øÐÐÑéÖ¤µÄÓï·¨·ÖÎöÆ÷Ó¦¸Ã½«ËùÓÐÉÐδ¶Áµ½ÉùÃ÷²¿·ÖµÄÊôÐÔµ±³É±»ÉùÃ÷ΪCDATA¡£

3.4 Ìõ¼þ¶Î(Conditional Sections)

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

Ìõ¼þ¶Î
[61]  conditionalSect ::= includeSectignoreSect
[62]  includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
[63]  ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'
[64]  ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>' Ignore)*
[65]  Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)

ͬÄÚ²¿»òÍⲿ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 ::= EntityRefCharRef
[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 ::= GEDeclPEDecl
[71]  GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
[72]  PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
[73]  EntityDef ::= EntityValue | (ExternalID NDataDecl?)
[74]  PEDef ::= EntityValueExternalID

ʵÌåÒýÓÃÖеÄ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£¬¿ÉÒÔÓÃÓÚ´æÈ¡´ËʵÌå¡£×¢Òâ¾®ºÅ(#)ºÍURIÖг£ÓÃµÄÆ¬¶Ï±êʶ·ûÐÎʽÉ϶øÑÔ²»ÊÇURIµÄÒ»²¿·Ö£»Èç¹ûÒ»¸öƬ¶Ï±êʶ·û×÷Ϊϵͳ±êʶ·ûµÄ²¿·Ö¸ø³ö£¬XML´¦ÀíÆ÷¿ÉÒÔ¸ø³öÒ»¸ö´íÎó¡£³ý·ÇÔÚ±¾¹æ·¶·¶Î§Ö®ÍâÁíÍâ¸ø³ö(È磬һ¸öÌØÊâDTDÖж¨ÒåµÄרÓÃXMLÔªËØÀàÐÍ£¬»òÒ»¸öÌØÊâÓ¦Óù淶Öж¨ÒåµÄ´¦ÀíÖ¸Áî)£¬Ïà¶ÔURIÖ¸Ïà¶ÔÓÚʵÌåÉùÃ÷ËùÔÚ×ÊÔ´µÄλÖá£Òò´Ë£¬Ò»¸öURI¿ÉÄÜÊÇÏà¶ÔÓÚÎļþʵÌ壬»òÏà¶ÔÓÚ°üº¬ÍⲿDTD×Ó¼¯µÄʵÌ壬»òÏà¶ÔÓÚÆäËûһЩÍⲿ²ÎÊýʵÌå¡£

XML´¦ÀíÆ÷´¦ÀíURIÖеķÇASCII×Ö·ûʱ£¬Ó¦¸Ã½«UTF-8ÖеÄ×Ö·ûÓÃÒ»¸ö»ò¶à¸ö×Ö½Ú±íʾ£¬È»ºó½«ÕâЩ×Ö·ûÓÃURIתÒå»úÖÆ×ªÒå(¼´£¬½«Ã¿¸ö×Ö½Úת»»³É%HH£¬ÆäÖÐHHÊÇ×Ö½ÚÖµµÄÊ®Áù½øÖƼǷ¨)¡£

³ýÁËϵͳ±êʶ·ûÖ®Í⣬Íⲿ±êʶ·û»¹¿ÉÒÔ°üº¬¹«¹²±êʶ·û¡£ÊÔͼ´æÈ¡ÊµÌåÄÚÈݵÄ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
[79]  extPE ::= TextDecl? extSubsetDecl

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

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

4.3.3 ʵÌåÖеÄ×Ö·û±àÂë(Character Encoding in Entities)

XMLÎļþÖеÄÿ¸öÍⲿÒÑÎöʵÌå¶¼¿ÉÒÔ¶ÔÆä×Ö·û²ÉÓÃÒ»ÖÖ²»Í¬µÄ±àÂë·½°¸¡£ËùÓÐXML´¦ÀíÆ÷±ØÐëÄܶÁ±àÂëΪUTF-8»òUTF-16µÄʵÌå¡£

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

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

±àÂëÉùÃ÷
[80]  EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' |  "'" EncName "'" )
[81]  EncName