2008-11-06 44 views
0

查看如Xml or Sqlite, When to drop Xml for a Database?What are good alternative data formats to XML?这样的问题很明显,XML最适合用于在系统,组织和软件程序之间交换数据。对于内部使用,其他格式趋向于更紧凑和可扩展,如自制纯文本格式,常规源代码或使用数据库。从哪里可以获得XML文件格式

一旦需要将数据移出到XML中的某个其他程序/工具/系统/组织:何处以及如何定义封装在XML文件中的数据格式?很显然,你需要严格的规则来确定哪里去了什么,然后需要树中所有节点的含义。 XML不是自我记录,这似乎很清楚。

你用别人的设计,还是自己推出?有没有关于如何进行文档设计的一些很好的指导?

/雅

回答

1

任何将与外部世界共享的XML文档都应该有一个模式。使用模式为您提供了一种拒绝流程无法理解的XML文档的简单确定性方式。

由于它是确定性的,因此它也会让人们试图与您的系统进行互操作,这种方法类似于简单的知道他们生成的XML符合您的基本要求的方式。

您还可以使用模式中的注释元素来记录模式无法表示的业务规则。这些规则当然不会自动执行,但架构通常是一个明智的地方。 (编写XSLT也很简单,它可以从注释模式中生成可读HTML文档。)

如果您有一个好的工具,创作模式会轻松得多。如果你写了很多模式,XML Spy会为自己付出代价 - 而XML Spy的成本非常高昂。

我一直在做系统集成工作20年,而XML Schema是天赐之物。我的经验法则是,即使是最简单的界面,我写的每个模式都至少可以消除两次​​会议和五次电话。它还消除了成品系统中的全部缺陷。

1

我如何处理它:

  • 一个元素包装整个事情(XML标准)为每个 “对象” 内的
  • 一个元素。
  • 每个Property的元素的属性,当它们的长度合理时。
  • 该元素的InnerXml文本中包含大量文本的属性(只提供了一个文本)
  • 元素嵌套在元素中,如果有几个属性包含大量文本。

(不好意思,编辑是不会让我发布XML。预览和提交的版本,甚至不匹配)

如果你写在VisualStudio中的XML文件的样本版本,有一个工具栏按钮点击它会自动为该文件创建一个xsd模式。将“targetNamespace”属性添加到XSD,并将其复制到C:\Program Files\Microsoft Visual Studio 8\Common7\Packages\schemas\xml(由VS版本轻微改变)。

然后为你的根元素添加一个xmlns =“{你的名字空间}”属性,并且VS会为你的标签赋予它Intellisense。

0

您可以使用XML Schema(http://www.w3.org/TR/xmlschema-0/

这是一个好主意写您使用的所有XML文档的正确模式,虽然它有时是痛苦定义结构和数据类型和限制XML文档!否则,您无法保证您写出的XML与另一个(或同一个!)程序所期望的XML相同。

就我个人而言,我发现XML Schema让我头疼,但原则是好的,如果我能避免它,我不会使用没有正确定义scema的XML格式。

0

这可能取决于您试图表示的内容。如果已经存在标准格式(即模式),那么使用该标准是有利的。所以有音乐表现,化学,国际象棋和名单很长。如果你正在做一些没有被任何现有标准覆盖的东西,那么你的角色就是你自己的。

我同意约翰,你应该总是创建一个架构。你永远不知道你的应用程序将走多远。

1

实际上,与DTDXSD一起使用时,XML是自行记录的,与纯文本文件相比,这是其优势之一。

正如你所猜测的,尽管如此,使用XML来正确传输数据确实需要一些工作。我发现w3schools.com上的XML tutorialXSD tutorial会有所帮助。如果你顺着这条路走,你可能也会对tutorial感兴趣,XSLT

起初,作为Vincent suggests,如果可用的话,您可能想要使用现有的模式。另一方面,如果您构建自己的(可能使用现有的作为起点),则可能会发现学习XSD更容易。

0

考虑使用称为RDF或资源描述框架的更专门形式的XML。 RDF将一切都模拟为一系列的三元组;主语,谓语,宾语。你最终得到的是一个相当平坦的XML,它引用了处理任意深度的层次结构。

RDF大量使用名称间距。命名空间的缺点是它使XML看起来更加繁忙,所以人类阅读起来有点困难。命名空间的好处在于它使您的模式更容易与其他模式混合,从而变得更具可扩展性。

您可以在RDF上使用标准的XML解析器,或者使用许多开源的库中的一个来执行RDF特定的解析并使用该主题,谓词和对象调用您的代码SAX样式。

如果这听起来像是一个好主意,那么这个网站是directory of published RDF schemas,可能会证明是有用的。即使您找不到完美匹配,您也可能会发现一些模式非常接近,并指出了您如何建模自己的数据的一些问题。即使你不使用RDF,也很值得花一点时间研究这个网站。如果您没有找到自己想要的内容并最终创建自己的RDF Schema,那么可以考虑在此网站上发布它。

相关问题