一、小序
HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的。但是随着WEB越来越广泛的应用,HTML的弱点也越来越明显了。XML的出现,弥补了这些不足,它提供了一个能够处理互联网上全部数据的通用方法。
二、HTML的局限性分析
1、 HTML的可扩展性差。虽然作为一般的应用,HTML应经够用了,但是在处理数学和化学等符号时,HTML有明显的缺点,而且它无法进行扩展,这样使它的发展收到了极大的限制。
2、 链路丢失后不能自动纠正。由于Web页面的URL地址经常改变,而在改变URL地址时必须手工修改这些信息,否则就会遇到“404URL地址未找到”的信息,这大大加重了Web页面的维护工作量。
3、 数据搜索的时间长。由于HTML主要用来对网页的显示进行控制,导致了同一个数据在不同的网页中有不同的存储格式,这样在进行数据搜索时就无法快速找到所需的资料。
4、 HTML对双字节或者多国文字的支持不够。例如中文信息页面在不同的平台下会出现无法显示等问题。
正是由于这些缺点,人们研究了能够代替HTML的Web页面制作语言。其中已经投入使用的有:可扩展标记语言XML、层叠样式表(CSS)以及动态HTML(DHTML)等。
三、XML的组成
这里简要列举几种主要的XML技术:
1、 DTD(文档类型声明)
DTD的主要功能是定义XML的内容模式;限制XML标记的数据范围;定义属性的数据类型。但由于它不是用XML编写的,因此扩展性比较差;而且只提供了有限的几种数据类型,因此它的作用是有限的。
2、 XML Schema
XML Schema的作用和DTD类似。但不同的是,Schema文件所描述的是引用它的XML文件中的元素和属性的具体类型。另外,由于它是由XML编写的,Schema和DTD相比较还有以下优点:
·XML Schema内容模型是开放的,可以随意扩充,而DTD无法解析扩充的内容。
·DTD只能把内容类型定义为一个字符串,而XML Schema允许把内容类型定义为整型、浮点型、布尔型或者许多其它的简单数据类型。
·XML Schema利用Namespaces将文档*****殊的节点与Schema相联系,一个XML文件可以有多个对应的Schema,而一个XML文件只能有一个DTD。
3、 XLink
作为一种Web语言,XML的链接能力是非常重要的。XML的链接和定址机制包括XLink、XPath和XPointer。XLink提供功能强大的链接方法,可以在文档之间建立单向或多向的复杂联结关系,还有注释链接、概要链接、扩展链接集等多种链接功能。XPath在XSLT和XPointer 中使用,支持在XML文档中相对于节点和节点集的定位。XPointer在XPath的基础上提供对XML文档的内容的内部结构(如一个字符串或者选择的一个段落)的定位。XML的链接能力比HTML有了很大的增强。
4、 CSS与XSL
XML的一大特点就是内容与格式分离,也就是说,XML文档中并不包含如何显示/表示文档的信息。CSS与XSL(XML Style Language)解决了XML文档的显示问题。
CSS(层叠样式表)也可以用在HTML和XML中。XSL完全使用XML的语法,功能比CSS要强大得多。
5、 DOM
文档对象模型(DOM)是一个与平台、语言无关的程序接口,它提供了动态访问和更新文档的内容、结构与风格的手段。可以对文当作进一步的处理,并将处理的结果更新到表示页面。
DOM的目标就是为XML和HTML定义一个标准的编程接口,它包括核心、HTML和XML三部分。DOM的核心部分建立了一套底层的对象集,它们可以表示任何结构化的文档。HTML和XML提供了高层的接口,可以作为更方便的文档视图。DOM规范由对象和方法组成。程序员使用它们可以更容易地对特定类型的文档进行访问和操作。
6、 Namespaces
Namespaces是用URL加以区别的、在XML文件的元素和属性中出现的所有名称的集合。在XML中,用户可以自己定义标记和元素。因此,如果把多个XML文件合并为一个,就很可能出现冲突。Namespaces则解决了这个问题。
四、PHP对XML的支持
PHP对XML提供了的强大的支持。它使用了一个XML的“解析器”,并且为了支持这个解析器,它提供了20(PHP4)个XML的解析函数。下面是几个最常用的PHP解析函数。
1. xml_parse
boolean xml_parse(int parser, string data, int [isFinal]);
本函数用来解析 XML 格式的文件资料。参数 parser 为解析代码。参数 data 为解析的资料区块 (chunk)。参数 isFinal 可省略,若设为 true 则系统会自动送出最后的资料部分 (piece) 给 data 参数。若无错误则返回 true 值。
2. xml_parser_create
int xml_parser_create(string [encoding]);
本函数用来初始化一个新的 XML 解析器。参数 encoding 可省略,为 XML 使用的字符集,默认值为 ISO-8859-1,其它尚有 US-ASCII、UTF-8 二种。成功则返回 parser 代码供其它函数使用,失败则返回 false 值。
3. xml_set_element_handler
boolean xml_set_element_handler(int parser, string startElementHandler, string endElementHandler);
本函数配置元素的标头供 xml_parse() 函数使用。参数 parser 为解析代码。参数 startElementHandler 及 endElementHandler 分别为元素开始与结束的标头,其中的 startElementHandler 必须包括解析代码、名称、与属性,而 endElementHandler 参数包括了解析代码及名称二个参数。若无错误则返回 true 值。
4. xml_set_character_data_handler
boolean xml_set_character_data_handler(int parser, string handler);
本函数配置字符资料的标头。参数 parser 为解析代码。参数 handler 包括解析代码及资料字符串等二个元素。若无错误则返回 true 值。
5. xml_get_error_code
int xml_get_error_code(int parser);
本函数可取得 XML 在处理时的错误代码。参数 parser 为解析代码。若 parser 有错则返回 false 值,否则就返回错误代码 (如 XML_ERROR_BINARY_ENTITY_REF .... 等等)。
6. xml_error_string
string xml_error_string(int code);
本函数可取得 XML 在处理时的错误代码。参数 code 为解析错误代码。若无错误返回值为代码的文字描述字符串。
7. xml_get_current_line_number
int xml_get_current_line_number(int parser);
本函数用来取得目前 XML 解析所正在处理的行号。参数 parser 为解析代码。若 parser 有错则返回 false 值,若无错误则返回行号数字。
8. xml_parser_free
boolean xml_parser_free(int parser);
本函数用来释放目前 XML 解析所使用的内存。参数 parser 为解析代码。若没有错误则返回 true 值,否则返回 false 值。
五、案例解析
以下是用PHP5实现读取一个以XML 1.0格式编写的通讯录address.xml,并显示其内容的示例。详解见有关注释。
<ol class="dp-c"> <li class="alt"><span><span> </span></span></li> <li><span> </span></li> <li class="alt"> <span> </span><span class="comment">// </span><span> </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="comment">//第一部分:几个PHP Helper函数 </span><span> </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="comment">// </span><span> </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="comment">/********************************** </span> </li> <li><span> </span></li> <li class="alt"><span><span class="comment"> *从一个文件中读取XML的 * </span> </span></li> <li><span> </span></li> <li class="alt"><span><span class="comment"> *内容到字符串中 * </span> </span></li> <li><span> </span></li> <li class="alt"><span><span class="comment"> *********************************/</span><span> </span></span></li> <li><span> </span></li> <li class="alt"> <span> </span><span class="keyword">function</span><span> read_file(</span><span class="vars">$filename</span><span>) </span> </li> <li><span> </span></li> <li class="alt"><span> { </span></li> <li><span> </span></li> <li class="alt"> <span> </span><span class="comment">//读取文件 </span><span> </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="vars">$lines</span><span>=file(</span><span class="vars">$filename</span><span>); </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="comment">//变量$contents是存放文件内容的变量 </span><span> </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="vars">$contents</span><span>=</span><span class="string">""</span><span>; </span> </li> <li><span> </span></li> <li class="alt"> <span> </span><span class="keyword">while</span><span>(list( <p align="left"></p> <div style="display:none;"> <span id="url" itemprop="url">http://www.bkjia.com/PHPjc/486021.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/486021.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">一、小序 HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的。但是随着WEB越来越广泛的应用,HTML的弱点也越来越明显了。...</span> </div> <div class="art_confoot"></div> </span> </li> </ol>

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver Mac版
视觉化网页开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版
中文版,非常好用