在xml架构中为列表强制执行元素值

时间:2012-04-11 16:19:51

标签: xml xsd xml-validation

我有以下元素(借口语法): -

<xs:complexType name="shop_T">
  <xs:element name="city" type="xs:string" />
  <xs:element name="other_info" type="other_info_T" />
</xs:complexType>

现在我希望以两种方式引用这个complexType

<xs:element name="list_shops_in_city">
  <xs:element name="city" type="xs:string" />
  <xs:element name="shop" type="shop_T" maxOccurs="unbounded"/>
</xs:element>

<xs:element name="order">
  <xs:element name="shop" type="shop_T" />
</xs:element>

我是否可以强制执行约束,即如果shop_T用于全市范围的商店列表,那么它的子元素&#34; city&#34;应该与列表本身的相同。如果它本身使用,那么城市可以是任何东西。 ?

如果不能用XML Schema完成,那么是否有另一种方法可以使用标准验证技术(比如使用DTD)。我只熟悉XML Schema,所以我可以通过阅读来完成另一种技术)?或者我是否需要在我的应用程序逻辑中对其进行编码?

1 个答案:

答案 0 :(得分:0)

可以使用XML Schema完成,但只能使用XSD 1.1中的新断言工具,该工具在几周前成为推荐标准:Xerces和Saxon中提供XSD 1.1支持。