详解XML代码编写的编码与验证问题

这篇文章主要介绍了XML代码编写的编码与验证问题,与HTML类似,XML文件的编码也能在序言部分被指定,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

详解XML代码编写的编码与验证问题

编码

编码就是转换 Unicode 字符为等价二进制表示的过程。XML 处理程序读取一个 XML 文档时,它依赖于编码类型来编码文档。因此,我们需要在 XML 声明中指定编码类型。

编码类型

主要有两种类型的编码:
UTF-8
UTF-16
UTF 表示 UCS 转换格式,而 UCS 本身的意义是通用字符集。编号 8 或者 16 表示呈现字符的比特数。它们是 8(一个字节)或者 16(两个字节)。对于没有编码信息的文档,默认使用 UTF-8。
语法
编码信息包含在 XML 文档的序言部分。UTF-8 编码的语法如下:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>  

UTF-16 编码语法如下:

<?xml version="1.0" encoding="UTF-16" standalone="no" ?>  

示例

下面的例子展示了编码声明:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>  
<contact-info>  
    <name>Tanmay Patil</name>  
    <company>TutorialsPoint</company>  
    <phone>(011) 123-4567</phone>  
</contact-info>  

在上面的 encoding=“UTF-8” 示例中,指定使用 8 位表示字符。要使用 16 为表示字符,可以使用 UTF-16 编码。
使用 UTF-8 编码的 XML 文件尺寸比 UTF-16 格式的文件更小。
验证

验证 就是对 XML 文档进行验证的过程。如果文档内容与元素,属性和关联的文档类型定义(DTD)匹配,以及文档符合b表达的约束则该文档被认为是有效的。通过 XML 解析器处理验证的方式有两种。分别是:
格式良好的 XML 文档
有效的 XML 文档
格式良好的 XML 文档
如果 XML 文档遵守以下规则则被认为是格式良好的。
没有 DTD 的 XML 文档必须使用预定义的字符实体处理 amp(&),apos(单引号),g(>),quot(双引号)。
必须遵循标签的顺序,比如内部标签必须在外部标签闭合之前闭合。
每个开始标签必须都有一个结束标签或者必须是一个自闭合标签(

或者 )。<br/> 在开始标签中必须只能有一个属性,并且需要使用引号包裹<br/> 在此我向大家推荐一个前端全栈开发交流圈:619586920 突破技术瓶颈,提升思维能力<br/> 除了amp(&),apos(单引号),g(>),quot(双引号)实体之外其他的必须先声明再使用。</p> <p><strong>示例</strong></p> <p>下面是一个格式良好的 XML 文档示例:</p> <pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE address [ <!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone (#PCDATA)> ]> <address> <name>Tanmay Patil</name> <company>TutorialsPoint</company> <phone>(011) 123-4567</phone> </address> </code></pre> <p>上面的示例被认为是格式良好的,因为:<br/> 它定义了文档类型。并且这里文档类型是元素类型。<br/> 包含一个名为 address 的根元素。<br/> 每个子元素 name,company 和 phone 都是一个自解释正确闭合的标签。<br/> 标签的顺序正确。</p> <p><strong>结语</strong></p> <p>感谢您的观看,如有不足之处,欢迎批评指正。<br/> #<a href="http://qm.qq.com/cgi-bin/qm/qr?k=7aFQitBKLfNUDg3JDbAll697s4MzVV4n/">获取资料</a><br/> 本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。<br/> 对web开发技术感兴趣的同学,欢迎加入Q群:<strong><a href="http://qm.qq.com/cgi-bin/qm/qr?k=7aFQitBKLfNUDg3JDbAll697s4MzVV4n/">619586920</a></strong>,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。<br/> 最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。</p>