放置XSD的最佳场所

时间:2013-09-03 17:27:24

标签: xml xsd

我们有一个Web服务,它接收XML字符串作为输入。服务执行(或应该执行)的第一件事是根据预定义和约定的XML模式验证收到的XML字符串。

存储和访问此架构的最佳方法是什么?

  1. 与Web服务位于同一位置的物理.xsd文件?
  2. Web服务的代码文件中的常量字符串?
  3. 项目资源文件中的字符串值?
  4. 网络配置中的某个地方?
  5. 在数据库中?
  6. 我不认为选项(2)和(3)是最好的,因为架构可能会改变,然后我们需要更改代码。然后,如果XML结构发生变化,我们还是需要更改代码才能正确解析XML。

    谢谢!

2 个答案:

答案 0 :(得分:2)

我会详细介绍你的选项并提供一些输入。

  

1。)与Web服务位于同一位置的物理.xsd文件?

这是一个好主意,可能是您最好的选择。给它一个URI / URL意味着外面的人可以轻松访问它,而且你可以轻松地对每个XSD进行版本化并为每个XSD提供一个新的URL。

  

2.。)Web服务的代码文件中的常量字符串?

维护起来听起来并不好玩。一般来说,我喜欢将我的界面与我的实现分开,并且我的配置与其他任何东西都是分开的。使用此选项,您可以将这些内容组合在一起。我不推荐这个。

  

3.。)项目资源文件中的字符串值?

     

4.。)在网络配置的某个地方?

我不会推荐其中任何一项,因为你更难将它与项目的其他部分分开。这看起来很尴尬。不过,这并不是一个糟糕的主意。

  

5.。)在数据库中?

我曾经不推荐这个,因为我认为它会弄乱你的<xsd:include />元素无法指向其他文件,从而限制你只使用最简单的模式,但我是set straight in this StackOverflow question我学到的URI与URL不同。数据库是存储XML模式的合法位置,尽管我个人喜欢将它们存储在文件系统中。

最后,我会说选择1。

答案 1 :(得分:0)

如果您的代码经过仔细编写并忽略了它不知道的属性和元素,那么XML架构的正确设计扩展将不需要重新编写代码。 这意味着选项2和3不是最佳方式。

将模式包含在Web配置中可能有点困难 - 因为它可能涉及XML中的XML,这可能但维护起来可能有点麻烦。

在大多数项目中,数据库包含数据,但没有配置设置。

因此,大多数项目最自然的位置是选项1.

但是YMMV,最好的建议是把它放在项目中其他相似类型的配置信息的位置,因为这是位置管理员和维护人员会在需要出错的情况下搜索它,或者需要某些东西改变。