XSD和WSDL有什么区别


182

XML Schema和之间有什么区别WSDL

我注意到的区别是WSDL包含XSDWSDL可以在其中声明操作,但不能在中声明操作XSD。那是对的吗?

Answers:


179

XSD定义了一个架构,该架构定义了XML文档的结构方式。您可以使用它来检查给定的XML文档是否有效,并遵循您在架构中列出的规则。

WSDL是描述Web服务的XML文档。它显示了可用的操作以及应如何构造数据以发送给那些操作。

WSDL文档具有关联的XSD,该XSD显示了可放入WSDL文档中的有效内容。


15
保罗的答案是正确的。只是增强它。由于WSDL实际上是XML,因此可能具有或不具有XSD来验证其结构。关联的XSD可以是一个单独的文件,可以导入W​​SDL中,也可以使用<WSDL:types>标签将完整的XSD内联地嵌入WSDL文件中。有关更多详细信息,请访问 ibm.com/developerworks/webservices/library/ws-tip-imports
supernova

如果它们几乎是两个独立的东西,那么为什么在例如Netbeans中创建Web服务时会?xsd=1自动在URL中得到一个?
CodyBugstein '16

216

WSDL(Web服务描述语言)描述了您的服务及其操作-所谓的服务,提供的方法,这些方法具有哪些输入参数和返回值?

这是对服务行为的描述-它的功能。

XSD(Xml架构定义)描述了那些服务方法正在交换的复杂数据类型的静态结构。它描述了类型,它们的字段,对这些字段的任何限制(例如最大长度或正则表达式模式)等等。

它是对数据类型的描述,因此也是服务的静态属性的描述-与数据有关。


26
这是在WSDL上下文中解释XSD的更好答案,而不仅仅是两者之间的区别。作为补充,XSD定义是<wsdl:types>标记中WSDL的一部分。
airboss

因此,如果不需要复杂的数据定义,我可以拥有一个没有XSD的WSDL吗?
esseara

63

XSD:XML模式定义。

XML:可扩展标记语言。

WSDL:Web服务定义语言。

我不会用技术来回答。我的解释是针对初学者的。

在使用两种不同技术开发的两个不同应用程序之间进行通信并不容易。例如,芝加哥的一家公司可能使用Java开发一个Web应用程序,纽约的另一家公司可能使用C#开发一个应用程序,当这两家公司决定共享信息时,XML便成为了现实。它有助于在使用不同技术开发的两个不同应用程序之间存储和传输数据。注意:不限于编程语言,请研究两个不同应用之间的信息传输。

XSD是模式定义。我的意思是,它告诉用户以这种模式开发XML。请参见下面的图片,并请密切注意“ load-on-startup”元素及其类型(整数)。在XSD图像中,您可以看到它是“启动时加载”的整数值,因此,当用户创建XML时,他们将int值传递给该特定元素。提醒一下,XSD是模式和样式,而XML是与另一个应用程序或系统进行通信的形式。一个人必须以这种方式查看XSD并创建XML,否则它将无法与使用其他技术开发的另一应用程序或系统进行通信。芝加哥的一家公司为德克萨斯州的一家公司提供XSD模板,以便以给定的XSD格式编写或生成其XML。如果德克萨斯州的公司未能遵守XSD中提到的那些规则或架构,则不可能期望芝加哥的公司提供正确的信息。在上述故事之后,还有很多事情要做,业余爱好者或新手在编写类似我上面所说的内容时必须知道。如果您真的想知道以后会发生什么,那么最好与实际开发Web服务的高级软件工程师坐在一起。接下来是WSDL,请按照图片操作并尝试确定WSDL的位置。如果您真的想知道以后会发生什么,那么最好与实际开发Web服务的高级软件工程师坐在一起。接下来是WSDL,请按照图片操作并尝试确定WSDL的位置。如果您真的想知道以后会发生什么,那么最好与实际开发Web服务的高级软件工程师坐在一起。接下来是WSDL,请按照图片操作并尝试确定WSDL的位置。

*************** =========下面是部分XML图像=========== ************ *** XML图像局部

*************** ========下面是部分XSD映像=========== ************ ***

XSD图像局部

*************** ========下面是部分WSDL映像======== *************

WSDL图像局部

我必须为称为Book的Web服务创建一个示例WSDL。请注意,它是XSD,但是您必须将其称为WSDL(Web服务定义语言),因为它非常特定于Web服务。上面的WSDL(或XSD)是为名为Book.java的类创建的,并且它已经创建了SOAP服务。SOAP Web服务如何创建它是一个不同的主题。必须编写一个Java类,然后在执行将其创建为Web服务之前,用户必须确保已安装Axis2 API,并且已安装用于托管Web服务的Tomcat。

作为服务者(允许其他人(客户端)从其系统访问信息或数据的人)实际上使客户端(需要使用服务者信息或数据的人)通过Web服务完全访问数据,因为没有公司在地球愿意向外界公开自己的数据库。像我的公司一样,决定通过Web服务提供有关产品的一些信息,因此我们不得不创建XSD模板并将其传递给希望与我们合作的少数客户。他们必须编写一些代码以充分利用给定的XSD,并进行Web服务调用以从服务商获取数据,并将返回的数据转换为适合的需求,然后在其网站上显示或发布有关产品的数据或信息。一个简单的例子就是机票预订。航空公司将允许第三方使用其站点上的航班数据进行机票销售。但是,还有更多的事情要做,只是不让第三方机票代理出售机票,同步和安全就位。如果没有同步,则有100%的机会有1个以上的客户可以从各种来源购买同一张机票。

我希望专家会为我的回答做出贡献。对于新手或新手来说,要理解XML,XSD并随后在Web服务上工作真的很难。


至少它给了我有关这些技术如何工作的提示
-MbaiMburu


4

XSD(XML模式定义)定义XML文档中的元素。它可用于验证xml文档中的元素是否符合要放置内容的描述。wsdl是描述Web服务的XML文档的特定类型。WSDL本身遵循XSD。


2

WSDL-它包含Web服务提供的操作(例如“方法”),并且这些方法可以接受诸如int,float等简单数据类型以及诸如对象,向量,数组等复杂数据类型,因此将其映射为xml数据类型xsd用过的。并希望基于xsd从不同平台访问Web服务的用户可以适当地提供数据。

请参阅:ayazroomy-java.blogspot.com以了解有关Web服务的基础知识。


1

如果有人在寻找类比,这个答案可能会有所帮助。

WSDL就像mysql中的“ SHOW TABLE STATUS”命令。它定义了所有元素(请求类型,响应类型,命中请求的URL格式等),这些元素应该是XML的一部分。按照定义,我的意思是:1)请求或响应的名称2)应将什么视为输入,应将什么视为输出。

XSD就像mysql中的DESCRIBE命令。它告诉所有变量及其类型,请求和响应包含的内容。


mysql中的DESC不用于排序吗?DESCRIBE更像它。

0

XSD是WSDL文件的架构。XSD包含WSDL的数据类型。XSD中声明的元素可以在WSDL文件中使用。我们可以针对XSD检查WSDL,以检出Web服务WSDL是否有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.