私が正しい場合、Schema for Schemasに対してXMLスキーマを検証しようとしています。
対象の名前空間は、XMLスキーマの名前空間である必要があります。接頭辞xs:
にバインドされている名前空間と同じである必要があります。スキーマのスキーマを含むファイルの場所は、属性xsi:schemaLocation
で指定できます。
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
targetNamespace="https://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="https://www.w3.org/2001/XMLSchema
https://www.w3.org/2009/XMLSchema/XMLSchema.xsd">
さらに一般的には、xsi:schemaLocation
属性には、スペースで区切られた偶数のURIが含まれています。奇数位置の各URIは名前空間であり、次の偶数位置のURIはその位置ヒントです。 XMLスキーマ仕様では、xsi:schemaLocation
という情報をスキーマ検証エンジンがそのスキーマを解決するかどうかを示すヒントとして定義しているため、この動作が100%保証される可能性は非常に高いことに注意してください。検証エンジンは、スキーマファイルの場所を解決する別の方法を自由に提供することができます。これを文書化する必要があります。しかし、エンジンにキャッシュにスキーマがない場合、広く確立されているので、xsi:schemaLocation
のヒントを使用する可能性が非常に高いです。
一般的に、検証エンジンは、世界中のユーザーベースによって中央サーバーを指し示すスキーマの場所がサーバーに重大な負荷をかける可能性があるため、スキーマ(組み込みまたは一度限りのダウンロード)をキャッシュすることをお勧めします。 W3C。スキーマをローカルに置くことでレイテンシも減少します。エンジンがキャッシュされず、検証が頻繁に実行される場合、スキーマのスキーマをダウンロードしてローカルで使用することが考えられます。
最後に、XML Schemaのエンジンは、通常自動的に検証し、スキーマのスキーマに対しても仕様内のすべての更なる制約を考慮するだけでなく、使用時にスキーマをチェックします。そのような場合は、スキーマ内のスキーマの場所を指定する必要はなく、上記のすべてが自動的に行われます。しかし、それを明示的に行うことは素晴らしい知的運動です。
正確な問題は何ですか?あなたはxsdに対してxmlを検証したいと言っていますか?しかし要約は創造xsdを言う。質問を更新して明確にしてください。 – Rao
@Rao少し質問を更新しました。うまくいけば、もっと明確にすべきです。 – kavatika