我是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;。
不是有效值答案 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 Editor或online XSD validator进行检查。