xml和xsd未验证错误

时间:2017-08-09 11:20:09

标签: xml xsd

我是xml中的新手,我已经分配了一个任务来制作一个xml文件来加载c ++程序中的配置。 因为在我使用xml复制编辑器创建以下xml之前我从未这样做过,然后选择了create schema选项为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:无效的属性值对于&#39; type&#39;在Element&#39;元素&#39;。记录原因:Cvc-datatype-valid.1.2.1:&#39; xs:&#39;对于&#39; QName&#39;。

不是有效值

1 个答案:

答案 0 :(得分:0)

XSD中的错误

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

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

然后你需要一个单位和tolrence元素的值(因为它们是小数)

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

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