wiki
很好的xml讲解
完整理解XML
XML is incredibly diverse and includes a host of othertechnologies including XPointer, XLink, and Resource Description Framework (RDF).
we are defining Web Services to be built onXML, SOAP, WSDL, and UDDI over a transport protocol such as HTTP. Thisdefinition will become clearer as our discussions progress
XML Parsers
Processing an XML document requires the use of an XML parser, a program that can decompose the XML document into its individual elements. There are two major categories of XML parsers:Document Object Model (DOM) and Simple API for XML (SAX).
DOM解析主要有两个缺点:
1:xml需要全部一次性加载到内存中,如果xml足够大,将导致很大的性能开销,性能会很低。
2:因为xml是跨语言独立的,应用非常普遍,因此许多常用的编程语言需要更多的步骤去处理xml,因为不是语言特定的。例如java采用 JDOM解析。
SAX解析:
sax解析是基于事件的解析,sax解析依赖于事件注册,每一个事件句柄是一个处理特定任务的代码块,SAX解析的主要优点就是不需要一次性的把xml的dom文档加载到内存中。 调用事件句柄xml作为一种数据流处理,sax解析比dom更容易工作。
也有两个缺点
1:一旦xml被读后,内存中就不在有xml的内容了,如果需要额外的处理需要再进行解析。
2:SAX解析不能修改xml文档的内容。
XML需要特定的格式:所以 一个格式良好的xml才能进行解析,否则DOM和SAX拒绝解析格式不完整的xml:
怎样才能保证xml格式正确呢!
DTDs and Schemas是两个约束xml的定义。
xml参考DTD声明,通过DTD验证xml的格式是否正确,DTD能够定义元素的顺序,以及元素出现的次数等等。
wiki
DTD也有以下缺点:
1:DTD 在出现时间上优先于xml,不符合xml的语法,增加了学习的负担(相对于schema),造成很多的疑惑。
2:DTD不支持数据类型,不能定义元素的数据类型,没有办法定义一个标示integer的类型。
3:xml只能引用一个DTD,限制了多个验证的出现。
4:DTD无法定义一个日期格式。
5:DTD不支持命名空间,将导致很多的元素命名冲突。
以上已经有很多限制了,因此SOAP,web services的基石,不允许使用DTD在文档声明中。
因此:XML schema specifications 就出现了。
schema有以下优势:
1:支持命名空间。
2:包括了很多预定义的类型设置:string,integer,positive integer,nagative integer,date, time,和以其他一些数据类型。
3:xml也能创建新的的类型,根据特定的规则。
XML Namespaces
An enterprise system consists of dozens if not hundreds of XML documents. As these XML documents are merged from other sources, inevitably there will be duplicate element names. This can cause problems because each element must have a unique name. XML resolves
this name collision issue through the use of namespaces (Java provides a similar feature through packages). Each element is prefixed with a namespace and therefore has to be unique only for that given namespace rather than globally. In practice,
the prefix is usually the name of the company, although any Uniform Resource Locator (URL) will do.2 Thus, an element name is composed of two parts: the
namespace and the name of the element. By qualifying the name of each element with a qualifier, the likelihood of a name collision is greatly reduced. Consider the file system, for example. For a given directory, a filename must be unique. However, there can
be multiple identical filenames as long as each exists in a different directory. In a sense, the directory provides the namespace and qualifies the filename to resolve filename conflicts.
以上是对xml命名空间的解释,简单的来说就是防止元素命名冲突,就想java的 包名,防止类名冲突一样。
Service-Oriented Access Protocol (SOAP)
在讨论soap的特点之前,解释一下soap为什么这么流行。
1:soap是一种非常轻量级的协议,一些早期的计算协议(CORBA, RMI, DCOM, etc.)包含非常先进的特性,such
as registering and locating objects
在核心上,soap定义了如何连接系统,通过其他的技术: provide
registration features (UDDI) and location features (WSDL).
2:soap是一种操作系统独立的语言,soap不像别的中间件技术, (such
as RMI, which works only with Java, and DCOM, which works only on Microsoft Windows and NT).
3:soap是基于xml的,代替了相应的二进制的协议,(as
is the case with CORBA and DCOM),soap是基于xml的,是一个普遍的标准,xml是非常易读的。
4:soap能够用在多个传输协议上,包括:HTTP,
Simple Mail Transfer Protocol (SMTP), file transfer protocol (FTP), and Java Message Service (JMS),很多例子讲解了http的soap协议。
5:soap能够穿越防火墙,soap不需要额外的修改,相比较CORBA-
or DCOM-based systems, 需要在防火墙上打开一个端口,这是一个重要的因素,构建的配置系统和外部的系统交互穿越防火墙。在以后,这也是一个缺点。
6:soap被很多供应商支持, IBM,
Microsoft, BEA, and Apache provide support for SOAP in the form of SOAP toolkits (the IBM and Apache SOAP toolkits are two of the most popular).
7:soap是可扩展的,header的值,在xml文档中,能够提供额外的特征, authentication,
versioning, and optimization. 等。
soap的缺点:
1:soap工具包中的互通性,供应商需要解决这个问题。
2:soap缺少一些先进的特性,比如: guaranteed
messaging and security policies
Many
of these issues can be addressed through third-party technologies such as Web Services networks, which are discussed in further detail in later chapters
soap
建立了一种信息概念,传递xml文档从一个发送人到一个接受者,因为soapxml变得更加著名,soap有三部分组成 Envelope, Header, and Body.
上图为The
structure of a SOAP document. soap的文档结构。
soap标准定义了三个主要参数:
Envelope
body structure.
envelope 包含了一下信息:方法调用,可选参数,返回值,以及有时候执行不成功的可选的异常。
Data
encoding rules.由于soap必须支持多种语言和操作系统,它必须为不同的数据类型(float,integer ,arrays,etc)定义可以接受的表示方法,更复杂的类型,需要一些常用的编码工具包的。
Usage
conventions.soap能够用于多种方式,它们所有的方式都基本做相同的相应,发件人发送一个xml文档,接受者接受,可选择的返回一个xml形式的响应,这是一种双向的信息交换方式,xml可能包含错误,如果在处理过程中出现错误。
作者:topwqp 发表于2013-3-2 0:11:09
原文链接