在XSD中有多个具有不同ID的div

时间:2012-12-24 14:03:56

标签: xml xsd

目前我正在使用XSD for XHTML处理XML模式定义。我的XHTML结构如下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<div id="AAA">// (Required, maxnumber = 1)
   <div id="BBB">//  (Required, maxnumber = 1)
      <div id="CCC">...</div>// (Optional)
      <div id="DDD">...</div>// (Optional)
      <div id="EEE">...</div>// (Required, maxnumber = 1)
      <div id="FFF" class="IIII">...</div>// (Required, maxnumber = 1)
   </div>
</div>
</body>
</html>

我需要为我的XHTML

检查以下条件的div标签
  • 检查是否显示所有必需的div标签?
  • 检查所有div标签是否符合示例代码中定义的顺序?
  • 检查类属性是否仅具有IIII或22222值

我非常感谢你的帮助。

此致

1 个答案:

答案 0 :(得分:1)

我想你知道3个中只有一个要求可以实现就会令人失望!我会尽力详细解释原因!

<div id="AAA"> // (Required, maxnumber = 1)
如何声明必需的元素:使用minOccurs =“1”和maxOccurs =“1”声明元素div(即使您没有定义minOccurs和maxOccurs,显式默认值为1, 1.所以这是可选的)

<div id="CCC">...</div>// (Optional)
如何声明一个可选元素:使用minOccurs =“0”声明元素'div',使其外观为可选元素。

但是根据属性值,无法验证元素的外观!也不可能在同一个父级下具有相同的元素,并且一次可选! 例如,一个解决方法是使用minOccurs =“3”和maxOccurs =“10”

进行单一定义
<xs:element minOccurs="3" maxOccurs="10" name="div" type="div"/>

这将迫使Document至少发生3次div个元素,并限制最多10个!您可以通过设置maxOccurs="unbounded"使其无限。这样,您可以验证是否存在最少数量的div元素!

回到你的问题:

  

1.检查是否所有必需的div标签都出现了?

我已经回答了。

  

2.检查所有div标签是否按照中定义的顺序   样品代码与否?

再次使用XSD无法实现这一点!拥有相同元素的多个定义会使其含糊不清!

  

3.检查class属性是否具有IIII或22222值

只有这可以实现使用枚举列表定义simpleType ..

示例:

  <xs:attribute name="class" type="ClassType" use="optional" />

这应该在元素/ complexType之外:

  <xs:simpleType name="ClassType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IIII"/>
      <xs:enumeration value="2222"/>
    </xs:restriction>
  </xs:simpleType>