【发布时间】: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 中,作为元素的名称应该有容忍度。