0

我有这个 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 文件包含所有元素。

4

1 回答 1

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>
于 2013-11-05T03:10:23.610 回答