処理する必要がある文書のタイプに応じて、5つのXML構文ルールページの1つをマップする外部ルーチンがあるとします。 XMLルールは、"XML_Document_Syntax"セット内の読み取り専用システム マップに保持されます。 システム マップを使用する理由は、GLOPが読み取り専用であるため、1コピーだけが存在すればよく、XML文書構文ルールはシステム全体で使用され、すべての文書が同じ構文を使用する必要があるからです。
セット内では複数のシステム型GLOPを定義できることに留意してください。 そのため、固有の汎用システムGLOPデータが必要とされる場合は、それもマップできます。
#define XML_INDEX 0
XML_Rules Current_XML_Rules;
GLOP_Map_t *MyGLOP;
int Page_map;
int glop_status
. . .
glop_status = FNC_Get_GLOP_Map(&MyGLOP);
if (!glop_status)
... process error: Not a member of any GLOP table
if ( MyGLOP->GLOP[XML_INDEX].GLOP_Ptr == NULL)
{
... process error: XML Syntax map does not exist
};
/* Determine page to map, based on "document_type" input parameter */
switch (*document_type)
{
case WEB_page:
Page_map = 1;
break;
case PDF_page:
Page_map = 2;
break;
case Text_page:
Page_map = 3;
break;
case Graphic_page:
Page_map = 4;
break;
case Formula_page:
Page_map = 5;
break;
Default:
/* error: invalid documents option - generate an error */
}
if (MyGLOP->GLOP[XML_INDEX].page != Page_map)
{if (!FNC_GLOP_Map_Page(XML_INDEX, Page_map))
... error: could not map page
}
Current_XML_Rules = MyGLOP->GLOP[XML_INDEX].GLOP_ptr;
/* process the document */