理解XML解析器的定义

时间:2016-03-25 04:37:12

标签: xml xsd

w3schools.com上,有一些advantages/strengths listed about XML Schemas

以下几点是什么意思:

  

您可以使用XML解析器来解析架构文件

2 个答案:

答案 0 :(得分:2)

通常,在计算机科学中,解析器是一个软件,它将一串字符作为输入,并通过引用语法来确定其结构。对于XML解析器,该语法是关于开始标记,结束标记,属性等的规则集,因此XML解析器的工作是将原始XML文档作为输入并将其转换为元素和属性已被确定。

不幸的是,你会发现很多人误用了这个词,因为它正确地使用了它。 StackOverflow上有很多问题(我今天见过几个人),人们在谈论"写一个XML解析器"当他们实际做的是编写一个处理输出的XML应用程序时XML解析器。

W3C XML规范实际上并没有使用术语" XML解析器&#34 ;;它谈到了一个" XML处理器"。我认为其原因在于XML处理器所做的不仅仅是解析。它还进行一些一致性检查(检查开始和结束标记匹配),这在纯计算机科学意义上不是解析器的工作,它也可以进行验证(检查解析器识别的元素是否符合规则)一些DTD或架构。)

使用XML表示任何类型的数据的一个好处是,您不必编写自己的解析器;您可以使用大量XML解析器来完成工作。您引用的W3Schools网站只是指出这适用于模式以及任何其他类型的结构化数据。

对@Zafar的评论做出回应,Saxon不是一个XML解析器(尽管找到人们称之为的情况并不罕见)。 Saxon包含许多使用XPath,XSLT和XQuery等语言处理XML的工具,但Saxon并没有解析XML本身;它调用外部XML解析器的服务来做到这一点。但是,使用像Saxon这样的通用XML工具的能力是用XML表示数据的另一个好处,并且可能比重用XML解析器本身更有价值。

答案 1 :(得分:1)

XML Schema使用XML语法,因此可以使用标准XML解析器进行解析。这是一个优于DTD的优势,例如,它无法解析为XML,并且可以带来一些非常实用的好处:

  • XSLT可以解析XML Schema以生成文档或 将一个XML Schema转换为另一个相关的XML Schema。
  • Schematron可以解析XML Schema以检查是否符合 部门或其他组织的指导方针/政策。
  • JAXB和xsd.exe可以解析XML Schema 生成Java或.NET中支持编组和的类 自动解组。

这些好处更容易实现,因为XML Schema使用XML语法来表达其约束。