2013-11-05 88 views
0

我有這個xml文件,我需要創建一個xsd文件來驗證所有數據在那裏,然後編寫將驗證xml對xsd文件的代碼。如果沒有錯誤,輸出將顯示「有效」。如果出現錯誤並且輸出也會顯示錯誤,輸出將顯示「無效」。在使XSD文件正常工作時遇到困難

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

+0

所以你的問題是,如何在XSD中設置必需的字段? – Raptor

+0

您可以在屬性字段中使用「use =」required「」,但對於簡單類型您不能這麼做。 – Xentriovun

回答

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>