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メソッドの概要

関数 概要

XmlSchemaClean()

スキーマ・コンテキストにロードされたスキーマをクリーン・アップし、スキーマ・コンテキストを再利用します。

XmlSchemaCreate()

スキーマ・コンテキストを作成し、戻します。

XmlSchemaDestroy()

スキーマ・コンテキストを破棄します。

XmlSchemaErrorWhere()

エラーが発生した場所を戻します。

XmlSchemaLoad()

スキーマ・ドキュメントをロードします。

XmlSchemaLoadedList()

ロードされたスキーマ・ドキュメントのサイズとリスト、またはいずれかを戻します。

XmlSchemaSetErrorHandler()

スキーマ・コンテキストに、エラー・メッセージ・ハンドラとその関連コンテキストを設定します。

XmlSchemaSetValidateOptions()

次の検証セッションで使用されるオプションを設定します。

XmlSchemaTargetNamespace()

指定されたスキーマ・ドキュメントのターゲットの名前空間を戻します。

XmlSchemaUnload()

スキーマ・ドキュメントをアンロードします。

XmlSchemaValidate()

要素ノードをスキーマについて検証します。

XmlSchemaVersion()

このスキーマ実装のバージョンを戻します。

8.1 XmlSchemaCreate()

その他のバリデータAPIで使用されるスキーマ・コンテキストを戻します。これはXmlSchemaDestroyと合せて使用する必要があります。

構文

xsdctx *XmlSchemaCreate(
   xmlctx *xctx, 
   xmlerr *err, 
   list);
パラメータ In/Out 説明
xctx
IN

XMLコンテキスト

err
OUT

戻されたエラー・コード

list
IN

変数引数のNULLで終了するリスト

戻り値

(xsdctx *) スキーマ・コンテキスト

8.2 XmlSchemaDestroy()

スキーマ・コンテキストを破棄し、そのすべてのリソースを解放します。

構文

void XmlSchemaDestroy(
   xsdctx *sctx);
パラメータ In/Out 説明
sctx
IN

解放されるスキーマ・コンテキスト

関連項目:

XmlSchemaCreate()

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

変数引数のNULLで終了するリスト

戻り値

(xmlerr) 数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]を戻します。

8.5 XmlSchemaLoadedList()

listNULLの場合、ロードされたスキーマ・ドキュメントのサイズのみを戻します。listNULL以外の場合、ユーザー側のポインタ・バッファに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

エラー・ハンドラのコンテキスト

戻り値

8.7 XmlSchemaSetValidateOptions()

次の検証セッションで使用されるオプションを設定します。以前に設定されたオプションは、上書きまたはリセットされるまで有効です。

構文

xmlerr XmlSchemaSetValidateOptions(
   xsdctx *sctx, 
   list);
パラメータ In/Out 説明
sctx
IN

スキーマ・コンテキスト

list
IN

可変引数のNULLで終了するリスト

戻り値

(xmlerr) 数値のエラー・コード。正常に終了した場合は、XMLERR_OK [0]を戻します。

関連項目:

XmlSchemaValidate()

8.8 XmlSchemaTargetNamespace()

URIで識別される、指定されたスキーマ・ドキュメントのターゲットの名前空間を戻します。現在ロードされているすべてのスキーマ・ドキュメントは問い合せできます。現在ロードされているスキーマ・ドキュメントには、XmlSchemaLoadでロードされたドキュメント、およびschemaLocationヒントまたはnoNamespaceSchemaLocationヒントでロードされたドキュメントが含まれます。

構文

oratext *XmlSchemaTargetNamespace(
   xsdctx *sctx, 
   oratext *uri);
パラメータ In/Out 説明
sctx
IN

XMLコンテキスト

uri
IN

問い合せるスキーマ・ドキュメントのURL

戻り値

(oratext *) ターゲットの名前空間文字列。ドキュメントが指定されていない場合はNULL

関連項目:

XmlSchemaLoadedList()

8.9 XmlSchemaUnload()

バリデータからスキーマ・ドキュメントをアンロードします。以前にロードされたすべてのスキーマ・ドキュメントは、アンロードされるまでロードされた状態です。ロードされたすべてのスキーマ・ドキュメントをアンロードするには、URIがNULLになるように設定します(XmlSchemaCleanと等価です)。指定のスキーマに関連する子スキーマも、すべてアンロードされることに注意してください。この実装では、次の使用例のみがサポートされます。

  • ロード、ロード、...

  • ロード、ロード、ロード、アンロード、アンロード、アンロード、クリーン、これを反復。

ロード、ロード、アンロード、ロード、...はサポートされません。

構文

xmlerr XmlSchemaUnload(
   xsdctx *sctx, 
   oratext *uri, 
   list);
パラメータ In/Out 説明
sctx
IN

スキーマ・コンテキスト

uri
IN

スキーマ・ドキュメントのURL。コンパイラのエンコーディング

list
IN

可変引数のNULLで終了するリスト

戻り値

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

8.12 XmlSchemaClean()

スキーマ・コンテキストにロードされたスキーマをクリーン・アップし、スキーマ・コンテキストを再利用します。

構文

void XmlSchemaClean(
   xsdctx *sctx);
パラメータ In/Out 説明
sctx
IN

クリーン・アップされるスキーマ・コンテキスト