3

私が思うに、かなり単純なものですが、決定的なものは何も見つかりません(決定的なものが不足しているという事実を除いて

ドキュメント内のある場所にある処理命令ノードの要件をスキーマに組み込み、おそらく処理命令ターゲットを検証する方法はありますか?

例えば:

<node>
    <?my-instruction data ?>
</node>

検証しますが、次のようになります。

<node></node>

しませんか?

そして、さらに良い:

<node>
    <?my-other-instruction data ?>
</node>

どちらでもない(必要なターゲットを提供できた場合my-instruction

すでに述べたように、私はこのトピックに関して決定的なもの(またはそのことについてはまったく)を見つけることができないので、これはサポートされていないものであると思います。他の人は、PIは「帯域外」データおよび処理命令を対象としているため、検証にそれらを含める必要がないことは理にかなっていると思われます。でもいいでしょう。

4

3 に答える 3

4

XSD は、インスタンス ドキュメント内の処理命令を完全に無視します。

なぜこれを見つけるのに苦労したのかわかりません。仕様書で「処理命令」を検索するとヒットするのは、3.1.4 の「上記の定義は、テキストの途中であっても、コメントと処理命令はすべての検証目的で無視されることを意味する」という文です。

実際、XSD 1.1 では、コメントと処理命令をアサーションに表示する必要があるかどうかについて、いくつかの議論がありました。最終的な決定は、デフォルトでは表示されないということですが、プロセッサはそれらを表示するためのスイッチを提供できます。Saxon 9.4 では、コマンド ラインで --assertionsCanSeeComments:on を使用してこのスイッチを設定できます。このスイッチ セットを使用すると、処理命令の有無をテストするアサーションをスキーマに記述できますが、複雑な型の文法にアサーションを組み込むことはできません。

于 2012-01-03T15:08:23.460 に答える
2

XML スキーマ 1.1仕様で見つけた処理命令への唯一の参照は、セクション 3.1.4 にありました。

上記の定義は、コメントと処理命令は、テキストの途中であっても、すべての検証目的で無視されることを意味します。

これは、処理命令を XML スキーマで表現できないことを暗示しているようです。

于 2012-01-03T15:02:54.230 に答える
1

XML スキーマは、要素と属性、および非常に限られた範囲で、それらのコンテンツ (列挙またはデータ型) を検証することのみを目的として設計されました。

コメントや処理命令など、他のノード タイプをチェックするための規定はありません。

検証のための XML スキーマの代替手段があります。たとえば、Schematronではコンテンツを確認できます。

于 2012-01-03T15:06:36.027 に答える