2010-10-06 172 views
3

我必須像往常一樣爲XML結構驗證目的構建一個XSD文件。XSD枚舉的值範圍

生成XSD(帶有XMLSpy)後,我發現文件的一部分給我帶來麻煩。我有這樣一個枚舉:

<xs:enumeration value="1"/> 
    <xs:enumeration value="1011"/> 
    <xs:enumeration value="1032"/> 

等等。問題是,在這個枚舉中的任何給定的整數必須被認爲是有效的,並且我不能從1寫入枚舉標記,比方說,65635.

而且我也不知道這個枚舉元素需要多少,因爲XML文件上這些枚舉標記的數量不是固定的!

如何告訴XSD任何整數值是否正確,並且此枚舉的XML文件上沒有最小或最大匹配?

在此先感謝(和抱歉,我的英語!)

回答

6

你的問題沒有顯示足夠的信息來告訴一個正確的答案,但這可能會解決你的問題。  

你可能有一些像這樣的代碼:

<xs:element name="foobar" type="enumType"/> 

<xs:simpleType name="enumType"> 
    <xs:restriction base="xs:integer"> 
    <xs:enumeration value="1"/> 
    <xs:enumeration value="1011"/> 
    <xs:enumeration value="1032"/> 
    </xs:restriction> 
</xs:simpleType> 

這片架構定義了一個元素<foobar>和簡單類型enumType那就是<foobar>元素的內容類型。所以,你問:

我怎麼能告訴XSD任何 整數值是確定的,並且有 沒有最小或最大的比賽在此枚舉的 XML文件?

您不需要單獨列舉<foobar>的所有有效值,就像您必須使用DTD一樣。相反,您可以在type屬性中使用XML Schema的predefined types

以下是定義元素<foobar>並允許其包含任何整數的示例代碼。

<xs:element name="foobar" type="xs:integer"/> 

如果我誤解了你的問題,請留下評論,並更密切地定義你的問題。同時揭示更多的模式將會很有幫助。

+0

問題解決了......這只是我對xsl的無知而已!非常感謝您的幫助... – nrocha 2010-10-07 12:31:18

+0

可以爲整數枚舉設置固定長度嗎?如 adimoldovan 2016-03-21 16:10:40

4

爲什麼你必須使用一個枚舉,而不是一個簡單的整數類型?

+0

因爲我可能有幾個標籤匹配這些值(我的意思是沒有,一個或幾個) – nrocha 2010-10-06 13:15:58

+0

和類似於不會解決這個問題?也許http://www.w3schools.com/Schema/schema_facets.asp可以幫助你。 – kasten 2010-10-06 13:29:25