【问题标题】:xml and xsd not validating errorxml 和 xsd 未验证错误
【发布时间】:2017-08-09 11:20:09
【问题描述】:

我是 xml 的新手,我被分配了一个任务来制作一个 xml 文件以在 c++ 程序中加载配置。 因为在我使用 xml 复制编辑器创建以下 xml 之前我从未这样做过,然后选择了创建模式选项来为 xml 创建一个 xsd,但是当我尝试验证它时会出错。 谁能告诉我我做错了什么。

我还没有写c++代码,因为我的首要任务是创建一个有效的xml和xsd。

xml:

<?xml version="1.0" encoding="UTF-8"?>
<part_id>
   <class_id>
      <head>
         <defect />
         <dim>
            <dia>
               <unit />
               <tolrence />
            </dia>
            <rad>
               <unit />
               <tolrence />
            </rad>
            <height>
               <unit />
               <tolrence />
            </height>
         </dim>
      </head>
      <stamp>
         <defect />
         <dim>
            <depth>
               <unit />
               <tolrence />
            </depth>
            <width>
               <unit />
               <tolrence />
            </width>
         </dim>
      </stamp>
      <prethread>
         <defect />
         <dim>
            <dia>
               <unit />
               <tolrence />
            </dia>
            <length>
               <unit />
               <tolrence />
            </length>
         </dim>
      </prethread>
      <thread_seg>
         <defect />
         <dim>
            <dia_major>
               <unit />
               <tolrence />
            </dia_major>
            <length>
               <unit />
               <tolrence />
            </length>
         </dim>
      </thread_seg>
      <terminal>
         <defect />
         <dim>
            <height>
               <unit />
               <tolrence />
            </height>
            <length>
               <unit />
               <tolrence />
            </length>
         </dim>
      </terminal>
   </class_id>
</part_id>

XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
   <xs:element name="part_id">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="class_id" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="class_id">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="head" />
            <xs:element ref="stamp" />
            <xs:element ref="prethread" />
            <xs:element ref="thread_seg" />
            <xs:element ref="terminal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="head">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="defect" type="xs:string" />
            <xs:element ref="dim" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="dim">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="depth" minOccurs="0" />
            <xs:element ref="width" minOccurs="0" />
            <xs:element ref="dia_major" minOccurs="0" />
            <xs:element ref="dia" minOccurs="0" />
            <xs:element ref="rad" minOccurs="0" />
            <xs:element ref="height" minOccurs="0" />
            <xs:element ref="length" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="dia" type="xs:">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="unit" type="xs:decimal" />
            <xs:element name="tolrence" type="xs:decimal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="rad">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="unit" type="xs:decimal" />
            <xs:element name="tolrence" type="xs:decimal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="height">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="unit" type="xs:decimal" />
            <xs:element name="tolrence" type="xs:decimal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="stamp">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="defect" type="xs:string" />
            <xs:element ref="dim" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="depth">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="unit" type="xs:decimal" />
            <xs:element name="tolrence" type="xs:decimal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="width">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="unit" type="xs:decimal" />
            <xs:element name="tolrence" type="xs:decimal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="prethread">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="defect" type="xs:string" />
            <xs:element ref="dim" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="length">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="unit" type="xs:decimal" />
            <xs:element name="tolrence" type="xsdecimal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="thread_seg">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="defect" type="xs:string" />
            <xs:element ref="dim" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="dia_major">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="unit" type="xs:decimal" />
            <xs:element name="tolrence" type="xs:decimal" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="terminal">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="defect" type="xs:string" />
            <xs:element ref="dim" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

为了验证,我去了:https://www.freeformatter.com/xml-validator-xsd.html

错误:S4s-att-invalid-value:元素“元素”中的“类型”属性值无效。记录的原因:Cvc-datatype-valid.1.2.1: 'xs:' 不是 'QName' 的有效值。

【问题讨论】:

  • 错误是什么,请分享您编写的代码
  • 更正您在 XSD 中的拼写错误(缺少“e”和“:”)。在 XML 中,作为元素的名称应该有容忍度。

标签: xml xsd


【解决方案1】:

XSD 中的错误

<xs:element name="dia" type="xs:">

<xs:element name="tolrence" type="xsdecimal" />

那么你需要一个单位和公差元素中的值(因为它们是小数)

<dia>
    <unit>123</unit>
    <tolrence>123</tolrence>
</dia>

然后使用XML Editoronline XSD validator 进行检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多