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 *)
バージョン文字列(コンパイラのエンコーディング)。