活动介绍

XML基础与应用全解析

立即解锁
发布时间: 2025-08-17 01:32:34 阅读量: 1 订阅数: 5
### XML基础与应用全解析 #### 1. XML的基本性质 XML文档的最简形式由元素(elements)和属性(attributes)这两个基本单元构成。元素可看作是标签及其包含的内容。以下是一个简单的XML片段示例: ```xml <trial attempt="1"> <date>12/31/2001 3:15:00pm</date> <stimulus>Request</stimulus> <duration>5 minutes</duration> <response>none</response> </trial> ``` 在这个例子中,存在五个元素:`trial`、`date`、`stimulus`、`duration`和`response`。它们由开始标签、结束标签以及中间的内容来表示。其中,`date`、`stimulus`、`duration`和`response`这四个元素为简单元素,仅包含文本内容;而`trial`元素包含了其他元素,因此`trial`是其他四个元素的父元素,其他四个元素则是它的子元素。这种父子结构是XML层次结构的关键。 属性是名值对,例如上述示例中的`attempt="1"`,它出现在元素的开始标签内,用于提供关于该元素的信息。一个元素可以携带任意数量的属性,有些应用甚至仅使用属性来传达信息,HTML的`img`标签就是一个典型例子: ```html <img src="images/logo.gif" height="30" width="75"> ``` 在HTML中,图像标签没有结束标签是正常的,但在XML中,必须要有结束标签。不过,为了避免书写`</img>`这样的形式,XML规定了一种缩写形式: ```xml <img src="images/logo.gif" height="30" width="75" /> ``` 当在开始标签内添加斜杠时,该元素就成为了空元素,无需结束标签。需要注意的是,虽然XML不要求在空元素的结束斜杠前加空格,但许多浏览器在缺少空格时可能无法正常显示。 #### 2. XML的一些应用示例 XML具有很强的灵活性,可应用于多种环境,包括浏览器、服务器以及不同操作系统、不同语言、运行不同应用程序的机器之间的通信。以下是XML在不同场景下的应用: ##### 2.1 浏览器中的XML - **XHTML**:对于大多数人来说,最熟悉的XML应用可能就是XHTML了。XHTML是使用XML新规则重新定义的HTML,例如元素名称区分大小写(在标签中),并且属性值必须用引号括起来。一个XHTML文档与编写良好的HTML文档几乎没有区别。只需在文件顶部添加XML声明,就可以将普通的HTML文档转换为XHTML文档,示例如下: ```xml <?xml version="1.0"?> <html> <head><title>Preliminary Results</title></head> <body> <h1>Preliminary Results</h1> <p>Upon initial investigation, it seems that the subject could, under proper stimuli, be induced to emit sounds similar to those of the <i>canis familiaris</i>. Results to follow.</p> </body> </html> ``` - **使用CSS样式化XML**:一些浏览器允许直接在浏览器中使用XML,并通过级联样式表(CSS)来设置其样式。CSS最初是为HTML开发的,它能让开发者控制内容的呈现方式。例如,通过向原始XML消息添加CSS信息,可以获得与上述XHTML示例几乎相同的效果。以下是一个XML文件及其对应的CSS文件示例: ```xml <!-- message.xml --> <?xml version="1.0"?> <?xml-stylesheet href="messages.css" type="text/css"?> <message> <heading>Preliminary Results</heading> <paragraph> Upon initial investigation, it seems that the subject could, under proper stimuli, be induced to emit sounds similar to those of the <species>canis familiaris</species>. Results to follow. </paragraph> </message> ``` ```css /* messages.css */ heading { display: block; font-weight: bold; font-size: 24pt; padding-bottom: 19px } paragraph { display: block;} species { font-style: italic } ``` - **XSLT转换**:在某些情况下,浏览器可能无法处理某些XML信息,此时就需要使用可扩展样式表语言转换(XSLT)。XSLT可以对XML文档进行数据的删除、重新排列和修改,然后再呈现给客户端。例如,对于只能显示文本的浏览器(如手机浏览器),可以使用XSLT将XML消息进行转换。以下是一个XSL样式表示例: ```xml <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="message/heading"/> </title> </head> <body> <xsl:value-of select="message/paragraph"/> </body> </html> </xsl:template></xsl:stylesheet> ``` ##### 2.2 服务器中的XML - **应用配置文件**:XML常用于应用程序的配置文件,这些文件易于操作且具有良好的可读性。由于它们可以包含特定的、便于人类理解的元素名称,因此比普通的文本文件更易于处理。以下是一个ASP.NET配置文件的片段示例: ```xml <configuration> <configSections> <sectionGroup name="system.web"> <section name="trace" type="System.Web.Configuration.TraceConfigHandler"> </sectionGroup> </configSections> <system.web> <trace enabled="true" requestLimit="20" pageOutput="true" traceMode="SortByTime" localOnly="true" /> </system.web> </configuration> ``` - **直接处理XML**:除了用于配置文件,应用程序还可以直接处理XML,进行只读分析或操作。这可能涉及到基于Web的应用程序(如Servlet或Java Server Pages)的分析,或者像关系数据库和XML数据库这样的基本操作。 - **数据绑定**:XML还适用于数据绑定,通过将数据绑定到对象(如Java对象),非XML程序员可以执行业务逻辑,而无需担心数据的底层结构。以下是一个Java代码片段示例: ```java ... Car birthdayPresent = new Car(); float theirPrice = birthdayPresent.getPrice(); birthdayPresent.setOffer(new java.math.BigDecimal(theirPrice/2)); ... ``` - **数据交换**:XML的一个重要应用是简化不同平台上应用程序之间的数据交换。由于XML是文本格式,具有良好的可移植性,因此是在应用程序之间传输数据的理想选择。像简单对象访问协议(SOAP)和.NET等技术都使用XML来实现数据的传输。 #### 3. XML相关技术的整体架构 编程使用XML涉及多种相关技术和标准,以下是对这些技术的简要介绍: ##### 3.1 XML基础部分 - **基本XML文档结构**:解释XML作为数据结构的基本概念,包括元素、属性、格式正确性、验证和命名空间等。 - **设计XML文档和应用程序**:在构建应用程序之前,讨论如何确定要构建的内容以及如何进行结构设计。 - **文档对象模型(DOM)**:通过Java、VB、C++、PHP和Perl等语言的示例,介绍如何使用DOM来操作XML文档。 - **高级DOM技术**:探讨DOM的新发展方向,如使用TreeWalkers、NodeIterators和NodeFilters等编程技术,以及DOM事件和DOM Level 3。 - **XML流:简单API for XML(SAX)**:介绍SAX的使用,它是一种按顺序分析XML数据的方法,速度快且资源占用少,但为只读模式。 - **验证**:讨论数据完整性的重要性以及确保数据完整性的技术。 - **文档类型定义(DTDs)**:介绍创建和读取DTD的基本方法,DTD用于指定XML文档的结构要求。 - **XML模式**:比DTD更高级,介绍W3C XML模式的功能、高级特性以及其他XML模式提案。 - **可扩展样式表语言转换(XSLT)**:介绍如何构建XSL样式表,对XML数据进行转换。 - **转换和应用**:展示如何在应用程序中使用XSLT进行数据转换。 - **选择数据:XML路径语言(XPath)**:介绍XPath的使用,它允许程序员在文档中选择特定的数据。 ##### 3.2 XML的应用部分 - **基于浏览器的XML:级联样式表(CSS)**:展示如何使用CSS直接在浏览器中操作XML内容,实现内容与呈现的分离。 - **基于浏览器的XML:XHTML**:讨论XML在浏览器中的应用,包括XHTML和客户端脚本(如JavaScript)的使用。 - **XML链接语言(XLink)**:介绍XLink的功能,它提供了比当前网页更强大的信息链接方式。 - **XForms**:介绍XForms的使用,它是现有Web技术的扩展,可大大提高数据收集的能力和灵活性。 - **XML与出版:使用XSL格式化对象**:介绍如何使用XSL格式化对象创建复杂的文档,并将其转换为PDF文档。 - **XML与Web服务**:展示如何使用Web服务实现不同地理位置和操作系统的机器之间的通信。 - **XML数据绑定**:讨论数据绑定的概念,如数据的编组和解组以及对结果对象的操作。 - **XML与数据库:关系数据库**:介绍现有关系数据库的XML功能。 - **XML与数据库:原生XML数据库**:描述不同类型的XML数据库及其使用方法。 #### 4. 学习XML的前提条件 要使用XML进行编程,需要熟悉至少一种编程语言,因为XML本身不是编程语言,而是一种用于存储信息的结构,可通过应用程序轻松操作。在开始的几章中,会提供Java、C++、VB、PHP、Perl等多种语言的示例,后续会重点使用一两种语言展示新示例,读者可以将这些概念应用到自己的应用程序中。同时,即使没有XML或HTML的使用经验也可以学习,但有相关经验会使学习过程更加轻松。 在学习过程中,书中提供的示例代码仅用于演示不同环境下各种概念的工作原理,实际构建应用程序时可能会遇到网络设置、安全设置等问题,需要读者自行解决。 以下是一个简单的mermaid流程图,展示XML在浏览器和服务器中的应用流程: ```mermaid graph LR A[XML文档] --> B{应用场景} B --> C[浏览器] B --> D[服务器] C --> E[XHTML] C --> F[CSS样式化] C --> G[XSLT转换] D --> H[应用配置文件] D --> I[直接处理XML] D --> J[数据绑定] D --> K[数据交换] ``` 通过以上内容,我们对XML的基本性质、应用场景以及相关技术有了全面的了解。在实际应用中,可以根据具体需求选择合适的技术来处理XML数据。 #### 5. XML应用操作步骤详解 ##### 5.1 浏览器中XML应用操作步骤 - **将HTML转换为XHTML** 1. 打开需要转换的HTML文件。 2. 在文件的顶部添加XML声明:`<?xml version="1.0"?>`。 3. 检查元素名称的大小写,确保遵循XML的大小写敏感规则。 4. 确保所有属性值都用引号括起来。 5. 保存文件,此时该文件就成为了XHTML文件。 - **使用CSS样式化XML** 1. 创建一个XML文件,例如`message.xml`,并在文件中添加XML声明和XML内容,示例如下: ```xml <?xml version="1.0"?> <?xml-stylesheet href="messages.css" type="text/css"?> <message> <heading>Preliminary Results</heading> <paragraph> Upon initial investigation, it seems that the subject could, under proper stimuli, be induced to emit sounds similar to those of the <species>canis familiaris</species>. Results to follow. </paragraph> </message> ``` 2. 创建一个CSS文件,例如`messages.css`,并在其中定义样式规则,示例如下: ```css heading { display: block; font-weight: bold; font-size: 24pt; padding-bottom: 19px } paragraph { display: block;} species { font-style: italic } ``` 3. 将CSS文件与XML文件放在同一目录下,或者根据实际情况调整`<?xml-stylesheet href="messages.css" type="text/css"?>`中的`href`属性值,确保XML文件能够正确引用CSS文件。 4. 在支持XML和CSS的浏览器中打开XML文件,即可看到应用了CSS样式的XML内容。 - **使用XSLT转换XML** 1. 创建一个XML文件,作为待转换的源文件。 2. 创建一个XSL样式表文件,例如`messages.xsl`,示例如下: ```xml <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="message/heading"/> </title> </head> <body> <xsl:value-of select="message/paragraph"/> </body> </html> </xsl:template></xsl:stylesheet> ``` 3. 使用支持XSLT的工具或编程语言(如Java、Python等),将XML文件和XSL样式表文件进行关联和转换。例如,在Java中可以使用`javax.xml.transform`包中的类来实现转换。 4. 将转换后的结果输出到目标文件或显示在浏览器中。 ##### 5.2 服务器中XML应用操作步骤 - **使用XML作为应用配置文件** 1. 确定应用程序需要配置的参数和信息。 2. 创建一个XML文件,例如`Web.config`,并根据应用程序的需求定义元素和属性,示例如下: ```xml <configuration> <configSections> <sectionGroup name="system.web"> <section name="trace" type="System.Web.Configuration.TraceConfigHandler"> </sectionGroup> </configSections> <system.web> <trace enabled="true" requestLimit="20" pageOutput="true" traceMode="SortByTime" localOnly="true" /> </system.web> </configuration> ``` 3. 在应用程序中读取和解析该XML配置文件,获取所需的配置信息。不同的编程语言有不同的XML解析库,例如Java可以使用`DOM`、`SAX`或`JAXB`等,Python可以使用`xml.etree.ElementTree`或`lxml`等。 4. 根据读取到的配置信息,对应用程序进行相应的配置和初始化。 - **直接处理XML数据** 1. 确定需要处理的XML数据来源,可以是文件、网络请求或数据库等。 2. 选择合适的XML解析方法,如`DOM`或`SAX`。如果XML数据较小且需要频繁访问和修改数据,可以选择`DOM`;如果XML数据较大且只需要按顺序读取数据,可以选择`SAX`。 3. 使用相应的编程语言和XML解析库,对XML数据进行解析和处理。例如,在Java中使用`DOM`解析XML的示例代码如下: ```java import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import java.io.File; public class XMLParser { public static void main(String[] args) { try { File xmlFile = new File("example.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(xmlFile); doc.getDocumentElement().normalize(); NodeList nodeList = doc.getElementsByTagName("elementName"); for (int i = 0; i < nodeList.getLength(); i++) { Element element = (Element) nodeList.item(i); // 处理元素的内容和属性 } } catch (Exception e) { e.printStackTrace(); } } } ``` 4. 根据处理结果,进行相应的业务逻辑操作,如数据存储、数据分析等。 - **实现XML数据绑定** 1. 定义与XML结构对应的Java类,例如: ```java public class Car { private float price; private java.math.BigDecimal offer; public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public java.math.BigDecimal getOffer() { return offer; } public void setOffer(java.math.BigDecimal offer) { this.offer = offer; } } ``` 2. 使用数据绑定框架(如JAXB)将XML数据与Java对象进行绑定。示例代码如下: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.File; public class DataBindingExample { public static void main(String[] args) { try { // 创建JAXB上下文 JAXBContext jaxbContext = JAXBContext.newInstance(Car.class); // 从XML文件中读取数据并转换为Java对象 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); File xmlFile = new File("car.xml"); Car car = (Car) unmarshaller.unmarshal(xmlFile); // 对Java对象进行操作 float theirPrice = car.getPrice(); car.setOffer(new java.math.BigDecimal(theirPrice / 2)); // 将Java对象转换为XML数据并保存到文件 Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(car, new File("newCar.xml")); } catch (JAXBException e) { e.printStackTrace(); } } } ``` #### 6. XML相关技术对比 | 技术名称 | 特点 | 适用场景 | | ---- | ---- | ---- | | DOM | 以树形结构表示XML文档,可随机访问和修改节点,占用内存较大 | XML数据较小,需要频繁访问和修改数据的场景 | | SAX | 按顺序解析XML数据,速度快,资源占用少,只读模式 | XML数据较大,只需要按顺序读取数据的场景 | | DTD | 简单易用,历史悠久,但功能有限,缺乏数据类型支持 | 对数据类型要求不高,需要快速定义XML结构的场景 | | XML Schema | 功能强大,支持数据类型定义和约束,可扩展性好 | 对数据类型和约束要求较高,需要更严格的XML结构定义的场景 | | XSLT | 可对XML数据进行转换和处理,生成不同格式的输出 | 需要对XML数据进行转换和呈现的场景 | | CSS | 用于控制XML内容的呈现样式,简单直观 | 只需要对XML内容进行样式设置的场景 | #### 7. 总结 通过对XML的学习,我们了解到它具有灵活的结构和广泛的应用场景。从基本的元素和属性构成,到在浏览器和服务器中的各种应用,XML都展现出了强大的功能。在实际应用中,我们可以根据具体需求选择合适的XML相关技术,如使用DOM或SAX进行XML解析,使用DTD或XML Schema进行结构定义,使用XSLT进行数据转换等。同时,掌握XML数据绑定和数据交换等技术,可以更好地实现不同系统之间的数据交互和共享。 以下是一个mermaid流程图,展示XML处理的整体流程: ```mermaid graph LR A[XML数据] --> B{选择解析方法} B --> C[DOM解析] B --> D[SAX解析] C --> E[随机访问和修改数据] D --> F[按顺序读取数据] E --> G[数据处理和业务逻辑] F --> G G --> H{输出结果} H --> I[XML文件] H --> J[其他格式文件] H --> K[显示在界面] ``` 希望通过本文的介绍,能够帮助读者更好地理解和应用XML技术,在实际开发中发挥XML的优势。
corwn 最低0.47元/天 解锁专栏
赠100次下载
点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

SW_孙维

开发技术专家
知名科技公司工程师,开发技术领域拥有丰富的工作经验和专业知识。曾负责设计和开发多个复杂的软件系统,涉及到大规模数据处理、分布式系统和高性能计算等方面。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

电子通信术语详解

# 电子通信术语详解 ## 一、通信基础概念 ### 1.1 信号传输相关 - **基带传输(Baseband)**:信号以其基本频率进行传输,不调制到其他频率范围。例如,一些简单的数字信号在短距离内可以直接以基带形式传输。 - **调制(Modulation)**:将低频信息加载到高频载波上的过程,常见的调制方式有幅度调制(AM)和角度调制(Angle Modulation)。 - **幅度调制(AM)**:使低频信息的幅度瞬时变化对应地引起高频载波幅度的变化。比如广播电台使用 AM 调制来传输音频信号。 - **角度调制**:将信息信号叠加在高频载波上,使载波的相位角或频

深入理解组件服务的配置与管理

### 深入理解组件服务的配置与管理 #### 1. 组件状态与生命周期 组件在其生命周期内,会随着配置的满足与不满足而多次激活和停用。激活时,组件实现类和 `ComponentContext` 会被实例化,引用的服务也会被绑定。可能导致组件停用的原因有多种: | 编号 | 原因 | | ---- | ---- | | 0 | Unspecified | | 1 | The component was disabled | | 2 | A reference became unsatisfied | | 3 | A configuration was changed | | 4 | A co

MySQL函数和运算符全解析

# MySQL 函数和运算符全解析 ## 1. 概述 MySQL 提供了丰富的函数和运算符,用于处理各种数据操作,包括算术运算、比较、逻辑判断、字符串处理以及分组统计等。这些功能可以帮助开发者更灵活地查询和处理数据库中的数据。 ## 2. 算术函数和运算符 ### 2.1 基本算术运算符 | 运算符 | 描述 | | ---- | ---- | | + | 执行数学加法 | | - | 执行数学减法 | | * | 执行数学乘法 | | / | 执行数学除法 | | 一元 - | 返回参数的补码 | ### 2.2 常用算术函数 | 函数 | 描述 | 示例 | | ---- | ---

分布式系统与P2P文件搜索的技术解析

# 分布式系统与P2P文件搜索的技术解析 ## 1 分布式系统中的ITRA场景分析 在分布式系统中,ITRA(Inter - Tier Relationship Architecture)在不同场景下有着不同的表现和处理方式。 ### 1.1 故障转移(Failover) 故障转移场景的开始与正常操作场景类似,首先向 `tk` 发送 `oki`,并将操作从 `tk` 发送到 `tk + 1`。在某个时间点,`tk - 1` 遭遇网络故障,导致活动节点 `nxk - 1` 停止工作。不过,这一故障对 `tk` 和 `tk + 1` 没有影响,它们会继续工作。一段时间后,`tk - 1` 克服

可扩展性、架构模式与消息集成

### 可扩展性、架构模式与消息集成 在构建和扩展应用程序时,我们常常面临如何处理高流量、提高可用性以及降低系统复杂度等挑战。为了解决这些问题,我们需要采用一些有效的架构模式和消息集成技术。下面将详细介绍几种常见的架构模式和消息集成模式。 #### 1. API 代理 API 代理(也常被称为 API 网关)是一种服务器,用于代理客户端与一组远程 API 之间的通信。在微服务架构中,它的主要目的是为多个 API 端点提供单一访问点,同时还能提供负载均衡、缓存、认证和流量限制等功能,这些功能对于实现可靠的 API 解决方案非常有用。 API 代理本质上是一种反向代理,通常也是一个负载均衡器

使用Java进行Octave风格脚本编程

# 使用 Java 进行 Octave 风格脚本编程 ## 1. 方程求解 ### 1.1 线性方程组 线性方程组在数学上可表示为 \(A \cdot z = b\),其中 \(z\) 是待求解的解。在 Java 中,可以使用 `linsolve(A,b)` 函数来求解线性方程组,其中 \(A\) 是方程组的方阵,\(b\) 是表示方程右侧的(行或列)向量。 例如,求解以下方程组: ```plaintext x - 2y + 1 = 7 2x - 2y + z = 4 -3x + 2y - 2z = -12 ``` 对应的代码如下: ```plaintext A = [1 -2 1; 2

NetBeans模块功能与实用工具类详解

### NetBeans 模块功能与实用工具类详解 #### 1. 模块功能示例 NetBeans 提供了众多模块,这些模块在不同方面展示了强大的功能和特性,以下是一些典型模块的介绍: - **调试器类型添加 - Applet 模块**:Applet 模块为 NetBeans 增加了对小程序调试的支持,是集成新调试器类型的有效简单示例。 - **数据对象复用与复杂剪贴操作 - Properties 模块**:该模块处理 Java 资源包,对数据对象进行复杂操作。一组与区域设置相关的 `.properties` 文件构成一个数据对象,每个区域设置有一个子节点。这些区域设置文件有时需作为一个整体

开源软件的技术滞后与评估体系解析

### 开源软件技术滞后性与评估体系解析 在当今的软件开发领域,开源软件(FOSS)的应用日益广泛。然而,如何衡量开源软件的技术滞后性以及评估其质量,成为了企业和开发者面临的重要问题。本文将深入探讨技术滞后性的定义、计算方法,以及开源软件评估体系的相关内容。 #### 技术滞后性的定义与计算 技术滞后性是衡量部署的软件与标准软件之间差距的重要指标。为了使滞后性(Lag)具有实际意义,它应满足“滞后条件”,即对于落后的分发包计算出更大的值。具体来说,对于部署 D 相对于标准分发 S 的技术滞后性(TechLag),定义为部署包与标准分发包之间滞后值的聚合: \[TechLag(D, S) =

整数数据结构与外部内存搜索

# 整数数据结构与外部内存搜索 ## 整数数据结构 ### 二叉字典树(BinaryTrie) 二叉字典树(BinaryTrie)是一种用于实现 w 位整数有序集合(SSet)接口的数据结构。它支持添加(add(x))、删除(remove(x))和查找(find(x))操作,每个操作的时间复杂度为 O(w),存储 n 个值所使用的空间为 O(n · w)。 ### XFastTrie:双对数时间搜索 XFastTrie 是在 BinaryTrie 的基础上进行改进的数据结构,它通过在每一层的 trie 中添加一个哈希表(共 w + 1 个哈希表)来加速查找操作,将查找操作的时间复杂度降低到

Java与SOAP:SOAP互操作性及WSDL解析

### Java 与 SOAP:SOAP 互操作性及 WSDL 解析 #### 1. SOAP 互操作性概述 在分布式系统中,此前的示例大多在客户端和服务器端使用相同的 SOAP 实现。例如,Apache SOAP 服务器示例由 Apache SOAP 客户端应用程序访问,GLUE 服务器示例由 GLUE 客户端应用程序访问。当能控制分布式系统各节点的技术时,全程使用相同技术最为简便。但这种情况并不常见,且与计算世界的 Web 服务愿景相悖,因此有必要研究不同 SOAP 实现之间的互操作性。 目前有众多 SOAP 实现,且新的实现不断涌现。随着时间推移,许多现有企业系统会通过 SOAP 机