Visual Studio Intellisense的XSD验证

时间:2009-09-11 14:22:12

标签: visual-studio xsd

大家好我有一个带有这种结构的简单XML文件

 ... ...
 <Fields>
  <Field name="MainJob.Id" value="t066_id">
    <Description nullable="false" type="System.Int32" />
  </Field>

我实际上是这个XSD文件描述:

              <xs:element minOccurs="0" maxOccurs="unbounded" name="Fields">
            <xs:complexType>
              <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" name="Field">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
                        <xs:complexType>
                          <xs:attribute name="nullable" type="xs:string" use="required" />                              <xs:attribute name="type" type="xs:string" use="required" />
                          <xs:attribute name="minLength" type="xs:string" use="optional" />
                          <xs:attribute name="maxLength" type="xs:string" use="optional" />
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string" />
                    <xs:attribute name="value" type="xs:string" />
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>

如何为属性nullable定义两个唯一可用的值,如'true'和'false'? 如果我在属性中嵌入SimpleType,则.XSD文件不再有效。 谢谢

2 个答案:

答案 0 :(得分:1)

对于您的示例,类型不应该是xs:string而是xs:boolean,或者您可以使用enumerationexample)。

答案 1 :(得分:0)

您可以像这样添加一个simpleType:

 <xs:simpleType name="TrueOrFalse">
    <xs:restriction base="xs:string">
      <xs:enumeration value="false"/>
      <xs:enumeration value="true"/>
    </xs:restriction>
  </xs:simpleType>

然后将您的nullable更改为:

<xs:attribute name="nullable" type="TrueOrFalse" use="required" />

马克