0

XSD で定義されたコレクションがあり、属性を特定の MIME タイプに設定できます。たとえば、MIME タイプの 1 つは application/pdf です。

コレクション内の要素の1つに別の要素が必要なapplication/pdf属性が含まれている場合、XSDで依存関係、関係、または同様のものを作成することは可能ですか?

例えば:

<collection>
   <item mime-type="application/pdf" />
   <item mime-type="image/jpeg" />
</collection>

このコレクションには、「application/pdf」要素が 1 つあります。XSD では、別の要素を入力する必要があります (ただし、コレクションに application/pdf 要素が含まれていない場合は必要ありません)。

例えば:

<pdfdetails>
   <somedetails></somedetails>
</pdfdetails>
4

2 に答える 2

0

Michael Kay がすでに指摘しているように、これはアサーションを使用して XSD 1.1 で簡単に実行できます。

その他のテクニックには次のものがあります。

  • 条件付き型の割り当て (XSD 1.1 も)
  • Schematron でのアサーション (この場合、XSD 1.1 アサーションに勝る特別な利点はありませんが、XSD 1.1 実装をデプロイできないが Schematron バリデーターをデプロイできる場合は、検討する価値があるかもしれません)
  • XML 構造をリファクタリングして MIME タイプ情報を属性値ではなく要素名に入れ、通常のコンテンツ モデル ルールを使用して追加情報を要求する (これには、追加情報を MIME タイプ要素に埋め込むか、近くのどこかにあるので、条件付きでそれを要求するようにコンテンツモデルを構築できます)
  • この特定のケースでは、参照整合性制約を使用して巧妙なことを行うことができる可能性があります
于 2013-11-05T15:56:58.863 に答える
0

このような依存関係は、XSD 1.1 のアサーションを使用して定義できます。XSD 1.0 でそれを行う方法はありません。XSD 1.1 は現在、Saxon、Xerces、および (先週から) Altova に実装されています。

于 2013-11-05T12:29:14.367 に答える