0

ディスク ファイル システムをモデル化する XSD/CAM プロトタイプを作成しています。無料の CAMed ソフトウェアを Windows のメモ帳と一緒に使用しています (CAMed ソフトウェアでバグに遭遇した場合に使用します)。私のプロトタイプには、「Hold」という要素があります。Hold は、アプリケーションが必要とするため、ディレクトリやファイルなどを保持する (削除しない) ようにファイルシステムに指示します。(Hold はハード リンクのようなものと考えてください。) プロトタイプでは、Hold 要素は 1 つだけでなく複数の要素の子になることができますが、すべての場合で同一です。通常、Hold 要素をそれが属する各親 (ディレクトリ、ファイルなど) 内に単純にコピー アンド ペーストしますが、CAMed ソフトウェアにはその機能がなく、手動でコピー アンド ペーストする気にはなりません。 XML をメモ帳に保存します (更新および管理するためのコピーが多数あります)。

元の要素定義を複製せずに、要素が複数の親に属することができるように指定することは可能ですか? ありがとう!

4

1 に答える 1

0

もちろん。Holdという名前の最上位要素を定義します。(「トップレベル」とは、宣言がxs:schemaの子として表示され、特定の複合型に対してローカルではないことを意味します。)次に、Holdが表示される複合型からその要素宣言を参照します。

したがって、保留の宣言は次のようになります。

<xs:element name="Hold" type="HoldType"/>
<!--* HoldType left as exercise for the reader ... *-->

また、ディレクトリ、ファイルなどのタイプの宣言は、name属性を使用してローカルのHold要素を宣言するのではなく、xs:element要素のref属性を使用してHoldを参照します。

<xs:type name="DirectoryType">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="blort" type="xs:gYear"/>
    <xs:element name="farble" type="Farble"/>
    <xs:element ref="cadwallader"/>
    <xs:element ref="Hold"/>
  </xs:choice>
<xs:complexType>

ここで、要素「blort」と「farble」はローカル宣言であり、「Hold」と「cadwallader」は他の場所で提供されるトップレベルの宣言への参照です。

于 2013-02-01T21:46:54.080 に答える