相关疑难解决方法(0)

XSD文件的用途是什么?

由于我们可以从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>
Run Code Online (Sandbox Code Playgroud)

我想Order …

xml xsd

87
推荐指数
10
解决办法
17万
查看次数

'有效的xml'和'格式良好的xml'之间有什么区别吗?

我并不知道有什么区别,但是一位同事说有,尽管他无法支持.有什么区别?

xml validation xsd dtd

75
推荐指数
6
解决办法
6万
查看次数

通过XSD限制基于另一个元素的XML元素

我相信这与keyref我有关,但我不确定,我真的不确定它是否可以完成.

例如,假设我有myElement1和myElement2.如果XML文件中没有myElement2,则myElement1必须存在,否则它是可选的.

有没有办法在我的XSD文件中强制进行这种类型的验证?

xml xsd xsd-validation

10
推荐指数
1
解决办法
1万
查看次数

如何忽略未知标签的验证?

对XSD功能的另一个挑战是,

我一直在发送我的客户端的XML文件,这些文件将包含0个或更多未定义或[调用]意外标记(可能出现在层次结构中).好吧,它们对我来说是多余的标签..所以我必须忽略它们的存在,但是除此之外还有一些需要验证的标签.

这是一个示例XML:

<root>
  <undefined_1>one</undefined_1>
  <undefined_2>two</undefined_2>
  <node>to_be_validated</node>
  <undefined_3>two</undefined_3>
  <undefined_4>two</undefined_4>
</root>
Run Code Online (Sandbox Code Playgroud)

和我试过的XSD:

  <xs:element name="root" type="root"></xs:element>
  <xs:complexType name="root">
    <xs:sequence>
      <xs:any maxOccurs="2" minOccurs="0"/>
      <xs:element name="node" type="xs:string"/>
      <xs:any maxOccurs="2" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType
Run Code Online (Sandbox Code Playgroud)

由于某些原因,XSD不允许这样做.
上面提到的例子只是一个例子.实用的XML带有XML标签的复杂层次结构.

如果你能得到它,请告诉我.

顺便说一句,替代解决方案是在验证过程之前插入XSL转换.好吧,我正在避免它,因为我需要更改触发验证过程的.Net代码,至少我的公司支持验证过程.

xml xsd xsd-validation

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

xml ×4

xsd ×4

xsd-validation ×2

dtd ×1

validation ×1