DTD实体分析
发布时间:2023-09-22 12:41:07 所属栏目:教程 来源:
导读:实体是用于定义XML文档中特殊字符的快捷方式。 实体主要有四种类型 -
内置实体
字符实体
常规实体
参数实体
1. 实体声明语法
通常,实体可以在内部或外部声明。 让我们了解以下各项及其语法如下 -
1.1. 内
内置实体
字符实体
常规实体
参数实体
1. 实体声明语法
通常,实体可以在内部或外部声明。 让我们了解以下各项及其语法如下 -
1.1. 内
实体是用于定义XML文档中特殊字符的快捷方式。 实体主要有四种类型 - 内置实体 字符实体 常规实体 参数实体 1. 实体声明语法 通常,实体可以在内部或外部声明。 让我们了解以下各项及其语法如下 - 1.1. 内部实体 如果在DTD中声明实体,则称为内部实体。 以下是内部实体声明的语法 - <!ENTITY entity_name entity_value> 在上面的语法中 - entity_name是实体的名称,后跟双引号或单引号中的值。 entity_value保存实体名称的值。 通过向实体名称(即&entity_name)添加前缀&来取消引用内部实体的实体值。 以下是内部实体声明的示例 - <?xml version = 1.0 encoding = UTF-8 standalone = yes?> <!DOCTYPE address [ <!ELEMENT address (#PCDATA)> <!ENTITY name Max su> <!ENTITY company Yiibai> <!ENTITY phone_no (086) 123-4567890> ]> <address> &name; &company; &phone_no; </address> 在上面的示例中,各个实体名称 - name,company和phone_no由它们在XML文档中的值替换。 通过向实体名称添加前缀&来取消引用实体值。 将此文件另存为sample.xml,并在浏览器中打开它,注意可以看到:name,company,phone_no的实体值都被替换。 1.2. 外部实体 如果在DTD之外声明实体,则称为外部实体。 可以使用系统标识符或公共标识符来引用外部实体。 以下是外部实体声明的语法 - <!ENTITY name SYstem URI/URL> 在上面的语法中 - name - 是实体的名称。 SYstem - 是关键字。 URI/URL - 是双引号或单引号中包含的外部源的地址。 类型 可以通过以下方式引用外部DTD: 系统标识符 - 系统标识符可以指定包含DTD声明的外部文件的位置。如上所见,它包含关键字SYstem和指向文档位置的URI引用。 语法如下 - <!DOCTYPE name SYstem address.dtd [...]> 公共标识符 - 公共标识符提供了一种定位DTD资源的机制,如下所示 - 如您所见,它以关键字PUBLIC开头,后跟专用标识符。 公共标识符用于标识目录中的条目。 公共标识符可以遵循任何格式; 但是,常用的格式称为正式公共标识符或FPI。 <!DOCTYPE name PUBLIC -//Beginning XML//DTD Address Example//EN> 通过以下示例了解外部实体 - <?xml version = 1.0 encoding = UTF-8 standalone = yes?> <!DOCTYPE address SYstem address.dtd> <address> <name> Max Su </name> <company> Yiibai Yiibai </company> <phone> (086) 123-4567890 </phone> </address> 以下是DTD文件address.dtd 的内容 - <!ELEMENT address (name, company, phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone (#PCDATA)> 2. 内置实体 所有XML解析器都必须支持内置实体。 通常,可以在任何地方使用这些实体引用。 还可以在XML文档中使用普通文本,例如 - 元素内容和属性值。 有五个内置实体在格式良好的XML中发挥作用,它们分别是 - &符号:& 单引号:' 大于号:> 小于号:< 双引号:" 以下示例演示了内置实体声明 - <?xml version = 1.0?> <note> <description>I'm a technical writer & programmer</description> <note> 在这里看到& 只要处理器遇到此问题,就会用&替换字符。 3. 字符实体 字符实体用于命名一些作为信息的符号表示的实体,即难以或不可能键入的字符可以由字符实体代替。 以下示例演示了字符实体声明 - <?xml version = 1.0 encoding = UTF-8 standalone = yes?> <!DOCTYPE author[ <!ELEMENT author (#PCDATA)> <!ENTITY writer Max Su> <!ENTITY copyright ©> ]> <author>&writer;©right;</author> 注意到使用©作为版权特征的值。 将此文件另存为sample.xml并在浏览器中打开它,将看到版权被字符©替换。 4. 常规实体 需要先在DTD中声明常规实体,然后才能在XML文档中使用它们。 常规实体可以表示字符,段落甚至整个文档,而不是仅表示单个字符。 要声明常规实体,请在DTD中使用此一般形式的声明 - <!ENTITY ename text> 示例 以下示例演示了常规实体声明 - <?xml version = 1.0?> <!DOCTYPE note [ <!ENTITY source-text jb51-tutorials> ]> <note> &source-text; </note> 每当XML解析器遇到对源文本实体的引用时,它在引用时将替换文本提供给应用程序。 5. 参数实体 参数实体的目的是能够创建替换文本的可重用部分。 以下是参数实体声明的语法 - <!ENTITY % ename entity_value> entity_value是任何不是&,%或这几个字符。 以下示例演示了参数实体声明。 假设有以下元素声明 - <!ELEMENT residence (name, street, pincode, city, phone)> <!ELEMENT apartment (name, street, pincode, city, phone)> <!ELEMENT office (name, street, pincode, city, phone)> <!ELEMENT shop (name, street, pincode, city, phone)> 现在假设想要添加额外的元素 - country,那么需要将它添加到所有四个声明中。 因此,我们可以参考参数实体引用。 现在使用参数实体引用上面的例子是 - <!ENTITY % area name, street, pincode, city> <!ENTITY % contact phone> 参数实体的解除引用方式与通用实体引用相同,只是使用百分号 - <!ELEMENT residence (%area;, %contact;)> <!ELEMENT apartment (%area;, %contact;)> <!ELEMENT office (%area;, %contact;)> <!ELEMENT shop (%area;, %contact;)> 当解析器读取这些声明时,它会将实体的替换文本替换为实体引用。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |