2010-05-02 84 views
3

我正在閱讀w3cschools上的教程(http://www.w3schools.com/schema/schema_complex.asp),但他們似乎沒有提及如何在複雜類型上添加限制。如何對XML Schema複雜類型進行限制?

就像我有這個模式。

<xs:element name="employee"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="firstname" type="xs:string"/> 
     <xs:element name="lastname" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

現在我想確保firstname不超過10個字符長。我該怎麼做呢?

我試圖把名字的簡單類型,但它說我不能這樣做,因爲我使用的是複雜類型。

那麼我該如何在文件上放置這樣的限制,以便我給架構的人不要試圖使第一個名字成爲100個字符。

回答

5

一些限制,你可以有XSD:

比方說,你想要的firstName沒有長度超過10個字符。你會用類似的東西:

<xs:element name="employee"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="firstname"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:minLength value="1"/> 
      <xs:maxLength value="10"/> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:element> 
     <xs:element name="lastname" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

對於更復雜的約束,你將不得不做一些基於代碼的檢查,我猜。

+0

因爲我總是在元素中放入「type =」xs:string「」,就像它在之前的教程中顯示的那樣,但是不知道你沒有這樣做。所以我認爲這解決了我的問題。 – chobo2 2010-05-03 05:07:35

3
<xs:element name="employee"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="firstname"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:maxLength value="10"/> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:element> 
     <xs:element name="lastname" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

這是否解決了您的問題?