答案 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,并且可以带来一些非常实用的好处:
xsd.exe
可以解析XML Schema
生成Java或.NET中支持编组和的类
自动解组。这些好处更容易实现,因为XML Schema使用XML语法来表达其约束。