无法使XSD文件正常工作

时间:2013-11-05 02:27:14

标签: c# xml validation xsd

我有这个xml文件,我需要创建一个xsd文件来验证所有数据是否存在并编写将对xsd文件验证xml的代码。如果没有错误,输出将显示“有效”。如果有错误,输出将显示“无效”,输出也会显示错误。

<Student gradYear="2014"> <!--GraduationYear is required-->
 <FirstName>
     John
 </FirstName><!--FirstName is required-->
<LastName>
    Smith
</LastName><!--LastName is required-->
 <SocialSecurity>
123-45-6789
 </SocialSecurity><!--SocialSecurity is required and must be in the format shown-->
 <Phone type="Home"> <!--HomePhone  is required and must match the format shown-->
        <Number>
    724-555-5454
    </Number>
 </Phone>
 <PhoneNumber type="Cell"> <!--Cell Phone is optional, but must be in the correct format if used-->
        <Number>
    724-555-5858
    </Number>
 </PhoneNumber>
</Student>

我有一个xsd文件,显示它是否有效,但不包括需要所需的字段或检查格式。它只能检查以确保xml文件包含所有元素。

1 个答案:

答案 0 :(得分:0)

此XSD将验证强制格式和格式,但是显示的错误将取决于正在进行验证的内容。

<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Student">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="FirstName">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:minLength value="1" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="LastName">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:minLength value="1" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="SocialSecurity">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="Phone">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Number">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:pattern value="[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="type" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="Home" />
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" name="PhoneNumber">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Number">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:pattern value="[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="type" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="Cell" />
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="gradYear" type="xs:unsignedShort" use="required" />
    </xs:complexType>
  </xs:element>
</xs:schema>