0

次のようなXMLファイルを作成しました

  <monitor>
    <widget name="Widgets/TestWidget1">
        <state code="VIC" />
        <state code="TAS" />
    </widget>
    <widget name="Widgets/TestWidget2">
        <client code="someclient" />
    </widget>
  </monitor>

タグの name 属性は、<widget>どのウィジェットをロードするかをパーサーに伝えます (それらは asp.net ユーザー コントロールです)。

上記のスキーマ ファイルを作成しようとしていますが、問題は<widget>、サポートされているサブタグ内が name 属性に依存していることです。したがって、TestWidget1 は<state>タグをサポートし、TestWidget2 はタグをサポートし<clientます。

現在、私の XML スキーマ ファイル<widget>は、サポートされているかどうかに関係なく、可能なすべてのサブタグを表示するだけです。

name 属性に基づいて特定のサブタグのみを許可する XML スキーマ ファイルを作成するにはどうすればよいですか? これが不可能な場合、どのようなオプションがありますか?

4

1 に答える 1

0

いくつかのオプションがあります。最も単純で直接的な方法は、問題を少し考え直すことです。要素 E1 の正当な内容と要素 E2 の正当な内容が異なる場合、最も単純な設計はそれらを別のものと呼ぶことです。これは、XSD と DTD では、要素の正当な内容が要素の型名に依存するためです。悪魔の擁護者はあなたに尋ねます。それらを呼び出すなど、それらを呼び出すと."

XSD 1.1 では、条件付きの型の割り当てまたはアサーションを使用して、属性と子の正当な組み合わせに対する制約を定義することもできますが、すべてのスキーマ対応エディターが、条件付きの型の割り当て規則と属性を分析し、何が何であるかを理解するために必要な知識を持っているわけではありません。で促します。

于 2012-09-18T15:28:37.837 に答える