2011-09-16 34 views
0

我们正在构建一个Web服务,该服务将返回许多不同类型的项目。与ebay上的Web服务请求类似,请求所有库存。如果您提供Web服务调用结果的验证

一些项目在结构上对我们来说是众所周知的,如卡车和挖掘机。其他人不像烤面包机和音频设备。

即使该类型信息在所有其他项目中不是通用的,我也想返回项目所有的信息。在下面的例子中,“流行速度”就是这样的例子。

这样我就可以回到这样

<inventory> 
<truck> 
    <title>Massive Truck</title> 
    <make>CAT</make> 
    <weight>1200</weight> 
</truck> 

<toaster> 
    <title>Quick Toaster</title> 
    <Popspeed>20</Popspeed> 
</toaster> 
</inventory> 

信息,但问题是,我不能(我不知道的方式)来建立这样的XSD /架构。 我们还会以JSON的形式返回这些信息,所以没有模式。

但它有关系吗?

我原以为知道返回给你的结构和属性是很好的,但也许只是一个口头/ doco协议,这就够了。

回答

0

看哈尔(http://stateless.co/hal_specification.html)它会做你正在寻找的。在hal中,使用链接关系来标识嵌入资源的结构。您将无法在其上执行XSD,但您可以使用诸如schematron或relax-ng的文件来验证文档。

您的文档的基于XML-HAL版本看起来是这样的:

<resource rel="self" href="http://example.org/inventory" > 
    <resource rel="truck" href="http://example.org/inventory/Massive_Truck"> 
     <title>Massive Truck</title> 
     <make>CAT</make> 
     <weight>1200</weight> 
    </resource> 
    <resource rel="toaster" href="http://example.org/inventory/Quick_toaster"> 
     <title>Quick Toaster</title> 
     <Popspeed>20</Popspeed> 
    </resource> 
</resource> 

,你从HAL的规格看,有一个相当的JSON表示,你可以使用。

+0

这看起来非常好,谢谢你的回答。 – Jiminy