客户要求(无论我无法理解)我们向他发送的XML文件部分包含:
<ANNEAL>
<CHARACTERISTIC NAME="CHARGE">
<VALUE>23</VALUE>
</CHARACTERISTIC>
<CHARACTERISTIC NAME="POSITION">
<VALUE>3</VALUE>
</CHARACTERISTIC>
<CHARACTERISTIC NAME="REANNEAL_HOLD">
<VALUE>N</VALUE>
</CHARACTERISTIC>
<CHARACTERISTIC NAME="FINAL_COLDSPOT">
<VALUE></VALUE>
</CHARACTERISTIC>
<CHARACTERISTIC NAME="FINAL_HOTSPOT">
<VALUE/>
</CHARACTERISTIC>
</ANNEAL>
我正在尝试创建一个名为CharacteristicType的XSD类型,它需要以下内容:
CHARACTERISTIC
NAME
的属性为string VALUE
的字符串VALUE
子元素可能有也可能没有值。我还没有创建Visual Studio喜欢的类型定义。这是我最近的尝试:
<xs:complexType name="DateCharacteristicType">
<xs:sequence>
<xs:element name="cname">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:dateTime" name="VALUE"/>
</xs:sequence>
<!--<xs:restriction base="xs:string">
<xs:enumeration value="CHARACTERISTIC"/>
</xs:restriction>-->
<xs:attribute type="NonEmptyString" name="NAME"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
我确定我必须使用单元素枚举来将外部元素的名称限制为CHARACTERISTIC
。或者我会吗?想一想,它必须应用于元素的值,而不是它的名称。我想我必须在要求1上妥协,并且必须自己命名每个元素CHARACTERISTIC
。
答案 0 :(得分:1)
那可怕的XML设计,但无论如何......
minOccurs="1"
(或默认省略)。use="required"
。根据要求提供XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="ANNEAL">
<xs:complexType>
<xs:sequence>
<xs:element name="CHARACTERISTIC" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="VALUE" type="xs:string"/>
</xs:sequence>
<xs:attribute name="NAME" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>