2010-06-25 72 views
1

我目前正在試圖建立一個XSD在那裏我有一個它只能有以下值:XSD是否支持驗證XML元素的內容?

<media_type>wmv</media-type> 

<media_type>h264</media_type> 

<media_type>mov</media_type> 

我有發現了<xs:choice/>元素,但是如果我構建這樣的複合類型:

<xs:element name="media_type" type="xs:string"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element ref="h264"/> 
    <xs:element ref="wmv"/> 
    <xs:element ref="flash"/> 
    </xs:sequence> 
    <xs:attribute name="media_id" use="required" type="xs:integer"/> 
    </xs:complexType> 
</xs:element> 

它會尋找<media_type/>下的元素。有沒有辦法檢查XSD中元素的內容?

回答

4

是的!

<xs:simpleType name="mediaType"> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="wmv"/> 
    <xs:enumeration value="h264"/> 
    <xs:enumeration value="mov"/> 
    </xs:restriction> 
</xs:simpleType> 
+0

太棒了,謝謝!當我將它包裝在中並將「名稱」移動到時工作良好。 – Drew 2010-06-25 04:57:02

+0

@Drew:'simpleType'上的名稱是類型的名稱。另外,「將它包裝到一個元素中」實際上是爲元素提供了所包含的「simpleType」的類型---通過在類型屬性中放置類型的名稱(在文檔中的其他位置定義)也可以做到這一點: '' – porges 2010-06-25 06:33:04

+0

啊,所以我可以創建引用,而不是直接聲明simpleType在哪裏使用它。我剛開始使用XSD,所以我只是將我的XSD看起來像我的XML,而不是創建可重用的部分。 – Drew 2010-06-27 01:01:18