XSD是否支持验证XML元素的内容?
问题描述:
我目前正在试图建立一个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中元素的内容?
答
是的!
<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>
太棒了,谢谢!当我将它包装在 中并将“名称”移动到 时工作良好。 –
Drew
2010-06-25 04:57:02
@Drew:'simpleType'上的名称是类型的名称。另外,“将它包装到一个元素中”实际上是为元素提供了所包含的“simpleType”的类型---通过在类型属性中放置类型的名称(在文档中的其他位置定义)也可以做到这一点: ' ' –
porges
2010-06-25 06:33:04
啊,所以我可以创建引用,而不是直接声明simpleType在哪里使用它。我刚开始使用XSD,所以我只是将我的XSD看起来像我的XML,而不是创建可重用的部分。 – Drew 2010-06-27 01:01:18