下面通过几个示范网页来探讨该技术。由于只有Microsoft Internet Explorer 5和更高的版本才支持XMLHTTP,所以本章的例子要想正常工作,你的客户端必须满足这一最低要求。
考虑到扩展性,我不希望用一个查询字符串来传递SOAP请求,因为这个字符串的长度限制在2048字节以内。相反,我希望在HTTP标头中传递请求,它不存在这方面的限制。清单A演示了如何使用客户端JavaScript,通过HTTP标头向服务器发送基本信息。
为了提供清单A的功能,要向服务器发出一个SOAP请求。这种请求由以下4部分组成:
由于SOAP文档也是一个XML文档,所以它具有和任何XML文档一样的限制。其中最重要的就是文档必须“良构”(Well-formed),这意味着两件事情。
首先,良构XML文档中的标记必须封闭。为演示这一点,最简单的办法就是观察HTML和XHTML的区别。在XML文档中,所有标记都是容器标记。虽然对于<span>等容器标记来说,这不会造成问题,但对于<hr>等非容器标记,却必须予以留意。
有两个办法将非容器标记变成容器标记。第一个和最明显的办法就是为每个标记(例如<hr>)添加一个结束标记(例如</hr>)。另一个办法是使用自封闭的XML标记;换言之,<hr></hr>可简写成<hr
/>。还要记住,XML文档要区分大小写。所以,<hr></hr>是良构的,但<HR></hr>不是。
良构XML文档的第二个要求是必须用单引号或双引号来封闭属性。所以,虽然<input
type=text name=stuff />是完全有效的HTML,但却不是良构的XHTML,必须改成<input
type='text' name='stuff' />。
SOAP文档还具有其他大多数XML文档都没有一个限制,也就是必须用一个XML架构(XML Schema)来描述SOAP文档。架构是文档结构以及用XML编写的内容的一种抽象表示,宗旨是为XML解析器定义和描述文档的结构。
XML充电
如果对良构和XML架构的内容感到困惑,请参考“XML补习班”系列,尽快掌握XML知识。