XSD文件的用途是什么?


90

由于我们可以从C#(.NET)查询XML文件,因此为什么需要XSD文件?我知道这是特定XML文件的元数据文件。我们可以在XSD中指定这些关系,但是它的作用是什么?

XML格式

<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <Customers>
    <Customer CustomerID="GREAL">
      <CompanyName>Great Lakes Food Market</CompanyName>
      <ContactName>Howard Snyder</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(503) 555-7555</Phone>
      <FullAddress>
        <Address>2732 Baker Blvd.</Address>
        <City>Eugene</City>
        <Region>OR</Region>
        <PostalCode>97403</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
  </Customers>
  <Orders>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>6</EmployeeID>
      <OrderDate>1997-05-06T00:00:00</OrderDate>
      <RequiredDate>1997-05-20T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-05-09T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>3.35</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>8</EmployeeID>
      <OrderDate>1997-07-04T00:00:00</OrderDate>
      <RequiredDate>1997-08-01T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-07-14T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>4.42</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
  </Orders>
</Root>

我想Order根据提供的内容从元素中获取数据CustomerID

另外:在XSD中提供关系的目的是什么?


Answers:


106

XSD文件用于验证XML文件符合某种格式。

在这方面,它们类似于之前存在的DTD

XSD和DTD之间的主要区别在于XSD是用XML编写的,并且被认为更易于阅读和理解。


谢谢,所以我可以使用Linq从c3.net查询xsd文件以从xml文件中获取数据吗?怎么样?
红天鹅2010年

@Lalit-Linq与它无关。
奥德

另一个重要的区别是,您不能在DTD的XSD中轻松完成很多工作。
莫特

因此,为了获取数据,我只能使用xml文件吗?我不需要生成其架构文件。(我现在不想验证它)我只想获取xml的数据,该数据具有依赖于每个元素中的ID映射的各种记录。
Red Swan 2010年

4
@Lalit-如果您不关心这样的关系,也不需要检查它们是否符合某种规则(在XSD中进行了编码),则不要使用XSD并直接查询XML。
Oded

48

如果没有XML Schema(XSD文件),则XML文件是相对自由的元素和属性集。XSD文件定义了允许哪些元素和属性以及允许使用的顺序。

通常,XML是一种元语言。XSD文件在该元语言中定义了特定的语言。例如,如果您的XSD文件包含XHTML 1.0的定义,那么您的XML文件必须适合XHTML 1.0,而不是其他格式。


19

您在问题中提到了C#,因此将XSD视为与C#接口相似的角色可能会有所帮助。

它以类似于接口定义类应实现的方式的方式定义XML的外观。


4
如果采用一个类和应该实现的接口,则可以判断该类是否正确。以同样的方式,如果您使用一个xml文件并将其为xsd,则可以判断该xml文件是否正确。
加里

16

XSD限制了XML文档的词汇和结构。

XML完全是关于协议的,而XSD提供了超越XML本身基本定义的结构化和传达协议的方法。


12

还有一个问题是:在xsd中提供关系的目的是什么。

假设您想为外部人员的工具或类似工具生成一些XML,您将如何知道允许它遵循什么结构才能正确用于其工具?您写入架构。同样,如果您希望其他人使用您的工具,则可以编写一个架构以供他们遵循。这对于验证您自己的XML也可能很有用。


8

在理解XSD(XML模式定义)之前,让我先解释一下;

什么是架构?

例如; emailID:peter#gmail

您可以确定上述emailID无效,因为没有@ 、. com或.net或.org。

我们知道电子邮件模式看起来像peter@gmail.com。

结论:模式不验证数据,它对结构进行验证。

XSD实际上是XML Schema的实现之一。我们有其他人

我们使用XSD来验证XML数据。


7

XSD是一个正式合同,指定如何形成XML文档。它通常用于验证XML文档或从中生成代码。


5

XSD文件是XML架构定义,用于提供检查给定XML文档是否符合您期望的标准方法。


5

.xsd文件称为XML模式。通过XML模式,我们可能需要给定XML中的特定结构-哪些元素以什么顺序,多少次,使用哪些属性,如何嵌套等,如果我们有一个XML输入模式,则可以验证它包含我们需要包含的数据,仅此几行,调用了模式验证器。


4

xsd文件是xml文件的架构-它定义了可能发生的元素及其限制(例如数量,顺序,边界,关系等)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.