8 XML C用のスキーマAPIパッケージ
このXMLスキーマ・バリデータのC実装は、W3CのXML Schema仕様、Rev REC-xmlschema-1-20010502に準拠します。これにより、スキーマ・バリデータが複数のスキーマ・ドキュメントを1つのスキーマに編集するのに必要な動作が実装されます。この結果のスキーマを使用して、特定のインスタンス・ドキュメントを検証することができます。
イベントベースのスキーマ検証については、「C用のイベントAPIパッケージ」で説明しているメソッドを参照してください。
次の表にXML C APIのSchemaインタフェースで使用できるメソッドの概要を示します。
               
表8-1 XML C実装のSchemaメソッドの概要
| 関数 | 概要 | 
|---|---|
| スキーマ・コンテキストにロードされたスキーマをクリーン・アップし、スキーマ・コンテキストを再利用します。 | |
| スキーマ・コンテキストを作成し、戻します。 | |
| スキーマ・コンテキストを破棄します。 | |
| エラーが発生した場所を戻します。 | |
| スキーマ・ドキュメントをロードします。 | |
| ロードされたスキーマ・ドキュメントのサイズとリスト、またはいずれかを戻します。 | |
| スキーマ・コンテキストに、エラー・メッセージ・ハンドラとその関連コンテキストを設定します。 | |
| 次の検証セッションで使用されるオプションを設定します。 | |
| 指定されたスキーマ・ドキュメントのターゲットの名前空間を戻します。 | |
| スキーマ・ドキュメントをアンロードします。 | |
| 要素ノードをスキーマについて検証します。 | |
| このスキーマ実装のバージョンを戻します。 | 
8.1 XmlSchemaCreate()
その他のバリデータAPIで使用されるスキーマ・コンテキストを戻します。これはXmlSchemaDestroyと合せて使用する必要があります。
                     
構文
xsdctx *XmlSchemaCreate(
   xmlctx *xctx, 
   xmlerr *err, 
   list);| パラメータ | In/Out | 説明 | 
|---|---|---|
| xctx | IN | XMLコンテキスト | 
| err | OUT | 戻されたエラー・コード | 
| list | IN | 変数引数の | 
戻り値
(xsdctx *) スキーマ・コンテキスト
                     
8.2 XmlSchemaDestroy()
スキーマ・コンテキストを破棄し、そのすべてのリソースを解放します。
構文
void XmlSchemaDestroy( xsdctx *sctx);
| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | 解放されるスキーマ・コンテキスト | 
関連項目:
8.3 XmlSchemaErrorWhere()
エラーが発生した場所(行番号、パス)を戻します。
構文
xmlerr XmlSchemaErrorWhere( xsdctx *sctx, ub4 *line, oratext **path);
| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | スキーマ・コンテキスト | 
| line | IN/OUT | エラーが発生した行番号 | 
| path | IN/OUT | エラーが発生したURLまたはファイル領域 | 
戻り値
(xmlerr) エラー・コード
                     
8.4 XmlSchemaLoad()
次の検証セッションで使用されるスキーマ・ドキュメントをロードします。ロードされるスキーマ・ドキュメントが有効である間は、スキーマ・ドキュメントをスキーマに追加的にロードできます。最後にロードされたスキーマが無効と判断された場合は、XmlSchemaClean()XmlSchemaClean()をコールしてスキーマ・コンテキストをクリーン・アップし、適切に修正した最新のスキーマを含むすべてのコンテキストを再ロードする必要があります。
スキーマ・ドキュメントが指定されると、この関数は、DOM表現を内部スキーマ表現に変換します。スキーマ・ドキュメントは、URIまたは直接DOM表現で指定できます。URIの場合、この関数は、入力ストリームを読み込み、スキーマのDOM表現を構築してから内部表現に変換します。DOMの場合、アプリケーションはスキーマのDOM表現を指定でき、これを使用して内部スキーマ表現が作成されます。
構文
xmlerr XmlSchemaLoad(
   xsdctx *sctx, 
   oratext *uri, 
   list);| パラメータ | In/Out | 説明 | 
|---|---|---|
| sxctx | IN | スキーマ・コンテキスト | 
| uri | IN | スキーマ・ドキュメントのURL、コンパイラのエンコーディング | 
| list | IN | 変数引数の | 
戻り値
(xmlerr) 数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]を戻します。
                     
8.5 XmlSchemaLoadedList()
listがNULLの場合、ロードされたスキーマ・ドキュメントのサイズのみを戻します。listがNULL以外の場合、ユーザー側のポインタ・バッファにURLポインタのリストが戻されます。ユーザー側で、十分な大きさのバッファを用意する必要があります。 
                     
構文
ub4 XmlSchemaLoadedList( xsdctx *sctx, oratext **list);
| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | スキーマ・コンテキスト | 
| list | IN | ポインタ・バッファのアドレス | 
戻り値
(ub4) リスト・サイズ 
                     
8.6 XmlSchemaSetErrorHandler()
スキーマ・コンテキストに、エラー・メッセージ・ハンドラとその関連コンテキストを設定します。エラーに関する有益な位置情報を取り出すために、エラー・ハンドラ・コンテキストにスキーマ・コンテキストのアドレスを指定する必要があります。
構文
xmlerr XmlSchemaSetErrorHandler( xsdctx *sctx, XML_ERRMSG_F( (*errhdl), ectx, msg, err), void *errctx);
| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | スキーマ・コンテキスト | 
| errhdl | IN | エラー・メッセージ・ハンドラ | 
| errctx | IN | エラー・ハンドラのコンテキスト | 
戻り値
(xmlerr) エラー・コード
                     
8.7 XmlSchemaSetValidateOptions()
次の検証セッションで使用されるオプションを設定します。以前に設定されたオプションは、上書きまたはリセットされるまで有効です。
構文
xmlerr XmlSchemaSetValidateOptions(
   xsdctx *sctx, 
   list);| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | スキーマ・コンテキスト | 
| list | IN | 可変引数の | 
戻り値
(xmlerr) 数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]を戻します。
                     
関連項目:
8.8 XmlSchemaTargetNamespace()
URIで識別される、指定されたスキーマ・ドキュメントのターゲットの名前空間を戻します。現在ロードされているすべてのスキーマ・ドキュメントは問い合せできます。現在ロードされているスキーマ・ドキュメントには、XmlSchemaLoadでロードされたドキュメント、およびschemaLocationヒントまたはnoNamespaceSchemaLocationヒントでロードされたドキュメントが含まれます。
                     
構文
oratext *XmlSchemaTargetNamespace( xsdctx *sctx, oratext *uri);
| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | XMLコンテキスト | 
| uri | IN | 問い合せるスキーマ・ドキュメントのURL | 
戻り値
(oratext *) ターゲットの名前空間文字列。ドキュメントが指定されていない場合はNULL。
                     
関連項目:
8.9 XmlSchemaUnload()
バリデータからスキーマ・ドキュメントをアンロードします。以前にロードされたすべてのスキーマ・ドキュメントは、アンロードされるまでロードされた状態です。ロードされたすべてのスキーマ・ドキュメントをアンロードするには、URIがNULLになるように設定します(XmlSchemaCleanと等価です)。指定のスキーマに関連する子スキーマも、すべてアンロードされることに注意してください。この実装では、次の使用例のみがサポートされます。 
                     
- 
                           ロード、ロード、... 
- 
                           ロード、ロード、ロード、アンロード、アンロード、アンロード、クリーン、これを反復。 
ロード、ロード、アンロード、ロード、...はサポートされません。
構文
xmlerr XmlSchemaUnload(
   xsdctx *sctx, 
   oratext *uri, 
   list);| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | スキーマ・コンテキスト | 
| uri | IN | スキーマ・ドキュメントのURL。コンパイラのエンコーディング | 
| list | IN | 可変引数の | 
戻り値
(xmlerr) 数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]を戻します。
                     
8.10 XmlSchemaValidate()
要素ノードをスキーマについて検証します。現在のセッションで使用されるスキーマには、XmlSchemaLoadで指定されたスキーマ・ドキュメント、およびインスタンス・ドキュメントでschemaLocationまたはnoNamespaceSchemaLocationでヒントとして指定されたスキーマ・ドキュメントがすべて含まれます。このルーチンが呼び出された後、ロードされたすべてのスキーマ・ドキュメントはロードされた状態が続き、XmlSchemaLoadedListを使用して問い合せできます。ただし、これらは引き続き非アクティブな状態です。次の検証セッションでは、非アクティブなスキーマ・ドキュメントをアクティブにできます。それにはXmlSchemaLoadでスキーマ・ドキュメントを指定するか、または新しいインスタンス・ドキュメントのschemaLocationまたはnoNamespaceSchemaLocationで、それらをヒントとして指定します。スキーマ・ドキュメントとそのすべての子孫(ネスト化方式で追加またはインポートされたドキュメント)をアンロードする場合は、XmlSchemaUnloadを使用します。
                     
構文
xmlerr XmlSchemaValidate( xsdctx *sctx, xmlctx *xctx, xmlelemnode *elem);
| パラメータ | In/Out | 説明 | 
|---|---|---|
| sctx | IN | スキーマ・コンテキスト | 
| xctx | IN | 最上位のXMLコンテキスト | 
| elem | IN | ドキュメント内の検証される要素ノード | 
戻り値
(xmlerr) 数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]を戻します。
                     
8.11 XmlSchemaVersion()
このスキーマ実装のバージョンを戻します。
構文
oratext *XmlSchemaVersion();
戻り値
(oratext *) バージョン文字列(コンパイラのエンコーディング)。