XML设计-如何实现?

XML设计-如何实现?,xml,xsd,Xml,Xsd,我们目前正在设计一个RESTful应用程序。我们决定使用XML作为基本表示形式。 关于用XML设计/建模应用程序数据,我有以下问题 XML中的数据建模有哪些方法?从头开始,然后评估标准XML模式的使用是一个好主意吗?反之亦然 在哪里可以找到有关所有标准XML模式的信息 我应该从一开始就考虑名称空间,还是以后再考虑 最后,先从设计XML模式开始,还是从XML文档开始,然后定义一个模式 注意:我已经在stackoverflow()上查看了一个相关问题,但这似乎没有解决上述问题 使用XML模式可以做很

我们目前正在设计一个RESTful应用程序。我们决定使用XML作为基本表示形式。 关于用XML设计/建模应用程序数据,我有以下问题

  • XML中的数据建模有哪些方法?从头开始,然后评估标准XML模式的使用是一个好主意吗?反之亦然
  • 在哪里可以找到有关所有标准XML模式的信息
  • 我应该从一开始就考虑名称空间,还是以后再考虑
  • 最后,先从设计XML模式开始,还是从XML文档开始,然后定义一个模式
  • 注意:我已经在stackoverflow()上查看了一个相关问题,但这似乎没有解决上述问题

  • 使用XML模式可以做很多事情,比如抽象类、枚举等。。看见如果您关心互操作性
  • 列出了一些已知的模式。关于休息服务,我想你会自己做的
  • 只要保证它是唯一的,实际名称本身并不重要。在其中包含日期,以便将来进行版本控制
  • 我认为您首先应该了解生成的XML文档应该是什么样子

  • 关于服务设计,需要注意的一点是,它不同于设计类/对象,您必须在交换文档方面考虑更多。这有时被称为。在OO世界中,您将在对等方之间交换一系列方法调用,但在SOA中,您将避免闲聊,并尝试将所需的大部分信息塞进文档中,有点像提交纳税表单。

    如果您还没有XML,并且不知道需求,那么首先设计模式将很困难。如果您已经有了处理XML的代码,那么最好将对象树作为第一个XML树的示例。它们没有什么不同,只是XML总是一棵树,而对象不是

    从那时起,您就可以稳定您的XML并收集需求—应该用它来建模哪些用例。如果你有这两个你有一个完美的开始做一个模式。这将巩固您的格式

    寻找标准模式总是一个好主意,但几乎总是令人沮丧。在您知道xml将是什么样子之前,请推迟此操作。也许你会意识到已经有了一些标准化的东西,就像你的格式一样


    您应该注意名称空间。在XML中,这是一个更重要的主题,因为您可能会犯很多错误。如果您不确定是否需要,请跳过。这就是世界其他国家正在做的事情。如果你认为你需要它们,从一开始就开始使用它们。混合使用无名称空间感知代码和名称空间感知代码是一种痛苦。

    我同意您应该首先设计应用程序,并决定需要交换哪些信息

    当您这样做时,您可能会发现您正在交换的一些信息来自标准模式。您还可能会发现客户使用的标准模式已经描述了您想要交换的信息


    如果这两种情况都没有发生,那么就忘记“标准模式”。除此之外,我认为您不会找到一个完整的名称空间设计方法列表,因为列表太多了。

    最好从一开始就考虑名称空间设计方法。如果要设计的XML文件在概念上是相关的,那么可以采用同构名称空间设计方法

    异构命名空间设计方法允许共享和重用。当您希望直观地识别特定于域的文件时,可以使用此选项


    异构设计方法是推荐的方法。请参阅了解如何为您的项目实施此设计方法

    我强烈反对省略名称空间--这会阻止您可能不关心但库的某些用户(或客户、未来的维护人员或集成工程师)可能想做的事情,例如,将文档以不同的格式嵌入到较大的文档中,或者在文档中嵌入不同类型的信息,并期望对文档格式一无所知的第三方工具做出正确的选择。因此,使用名称空间是未来证明的更安全的选择。这只是另一个“个人决定”。你说的是框架,第三方软件。我认为他谈论这件事的可能性不大。世界其他地区的问题很简单。是的,虽然名称空间是正确的方式,但它也会让您的工作变得非常繁琐。因此,如果用例不关心这个问题,跳过名称空间就是节省,那么,对于那些无关紧要的应用程序来说,省去名称空间效果很好。因果关系,或者反之亦然?当您需要处理模式版本控制时,名称空间可能会引起混淆。(我已经修改了模式;是否需要更改名称空间?)我认为这是一个值得付出的代价,因为名称空间为模式本身和实例文档提供了极大的清晰度。如果您已经想从XML开始,为什么还要开发ReST API?为什么不从一开始就使用SOAP/WS(DL)?不要误解我。我是ReST的忠实支持者,但是如果您想从将XML与您自己的模式一起使用中获益,那么您还应该探索整个API的XML工具链。