0

現在、XHTML 用の XSD を使用して 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 値のみを持っているかどうかを確認します

本当にありがとうございました。

よろしく、

4

1 に答える 1

1

3つの要件のうち1つしか達成できないことを知ったら、あなたはがっかりするでしょう! その理由を詳しく解説していきます!

<div id="AAA"> // (Required, maxnumber = 1)
必須要素の宣言方法: minOccurs = "1" および maxOccurs = "1" で要素を宣言divします (minOccurs と maxOccurs を明示的に定義していなくても、デフォルト値は 1,1 です。したがって、これはオプションです)。

<div id="CCC">...</div>// (Optional)
省略可能な要素を宣言する方法:要素 'div' を minOccurs="0" で宣言し、その外観を省略可能にします。

しかし、属性値に基づいて要素の外観を検証することはできません! かつては必須で、かつてはオプションだったように、同じ親の下に同じ要素を持つこともできません!
1 つの回避策は、たとえば、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. クラス属性に IIII または 22222 の値があるかどうかを確認します

これだけで、列挙リストで定義された simpleType を持つことができます。

例:

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

これは element/complexType の外側にある必要があります:

  <xs:simpleType name="ClassType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IIII"/>
      <xs:enumeration value="2222"/>
    </xs:restriction>
  </xs:simpleType>
于 2012-12-26T11:51:26.347 に答える