XML有什么意义?

时间:2010-08-15 00:48:10

标签: xml history file-format

XML发明要解决哪些问题?据我所知,似乎它为可能具有截然不同的语义的事物指定了统一的语法。例如,与HTML文件,Java源文件或.docx文档不同,人们无法编写程序以从XML文件中提取任何类型的高级含义而无需额外的信息。即使语义意义完全未指定,某些标准委员会严格指定语法的价值是什么? XML只有滚动您自己的ad-hoc格式才能完全满足您的需求,仅此而已?简而言之,XML可以实现什么?为什么它如此广泛使用?

5 个答案:

答案 0 :(得分:15)

XML强制您的数据结构良好,因此不理解数据的语义的程序仍然能够理解其语法。这允许像XSLT这样的东西,它将一个格式良好的XML文档转换为另一个。这意味着您可以在不必解释数据的情况下操纵数据。您可以根据其DTD看到文档格式正确且有效,而无需了解内容。

这对于数据存储,互操作性和机器可读性而言是一个非常强大的步骤。

答案 1 :(得分:7)

我个人认为XML很有用,因为我觉得编写解析器很痛苦。如果您发明自己的数据格式,那么您需要花费大量时间编写解析代码 - 检查可能是大量用户数据的正确输入。然后,在为解析器完成所有输入和有效性检查代码之后,您就可以为其他任何想要使用它的人开发文件格式的文档,还可以在输入验证代码中查找错误。你的解析器开始以你的方式发送数据。

使用XML,可以很好地定义解析机制,使用XML架构或DTD,您可以指定您愿意接受的格式。 XML解析器几乎适用于所有主要的编程语言,因此您编写,维护和记录的代码量将大大减少。

答案 2 :(得分:6)

xml让你以标准的方式成为非标准的:)。它很丑陋,它很冗长,占用了大量空间,而且对于互操作性来说绝对是无价之宝。基本上,xml很不错,因为它为您提供了一种描述数据的标准方法,以便单一类型的解析器可以处理来自不同来源的数据。

使用更具体的例子,我曾经在xml之前的几天从事半导体工具行业。每个工具都使用配方来描述如何处理特定晶圆。这些工具中的每一个都使用不同的格式来制作食谱。现在,怜悯穷人(我!),他们必须使用这些工具并将它们集成到一个处理系统中。我必须为每种食谱类型编写不同的解析器,将食谱从普通商店转换为适合特定工具的格式,这只是一场噩梦。如果xml可用,则可以通过xml定义所有这些配方,并使用简单的xlst脚本处理任何转换或转换。它只会为集成代码的那一部分节省数月的开发工作量。

答案 3 :(得分:4)

临时解决方案在您自己的系统范围内工作正常,但是当您需要能够与1 ... N个其他系统进行通信时,它是一个良好的基础,所有各方都可以依赖于在某种方式。是的,数据没有语义含义,但您确信TRANSFER和CONVERSION数据仍然会成功。还有更多的原因,但这是我一直以来最重要的原因之一。

这是一个非常原始的例子,但想想系统何时用于与flatfile数据通信。您可能有一个其他方建立了沟通的字符串,例如 AAABBBCCCDDD 。其他系统知道他们会在前3个字符等中获得AAA“数据”......现在有人改变了你身边的东西而不小心开始发送 BBB AAA CCC DDD 。一切都好了。

使用XML,你可以同时拥有:

<xml>
  <a>AAA</a>
  <b>BBB</b>
  <c>CCC</c>
  <d>DDD</d>
</xml>

<xml>
  <b>BBB</b>
  <a>AAA</a>
  <c>CCC</c>
  <d>DDD</d>
</xml>

不破坏别人的系统。

答案 4 :(得分:3)

答案在你自己的问题中。 “从我所知道的情况来看,似乎它为可能具有截然不同的语义的事物指定了统一的语法。”拥有统一的语法可以解决部分问题,因为语义有很大差异,而且丝毫不是一个小问题。

类似地,文本编码用于标记(包括XML),计算机程序,编写人类可读文档以及具有截然不同语义的更多任务。您想每次都重新发明Unicode吗?你是否对所有问题都有足够的了解(或者甚至有可能重新发明一个可通过的ASCII?)这几天ASCII看起来很简单,因为其控制代码的许多复杂功能已经不复存在了使用过,旧学校的ASCII使用通常比Unicode更复杂。)

数字在计算中被广泛使用,我们仍然使用四种不同的内部语法(两种端序样式,两种补充样式),但这些天通常隐藏细节。

除了为他们做格式创建者的一大部分工作,并为生产者或消费者展示一部分工作是他们已经熟悉的(因此可能已经有工具),它完全消除了生产者 - 消费者的一大块工作,他们正在阅读一种格式并在另一种格式中书写。