[xml] Query regarding IDCs handling during schema parsing.

Title: Query regarding IDCs handling during schema parsing.


        I have a query about schema validation, when the schema document is having IDC. My schema document is such that, the main schema will import the child schema which has an IDC definition (key) for an element. So when the schema parsing is completed successfully, the IDC definition for that element will be stored in the child schema data structure created for this child schema.

        However when the validation of the input document starts, In the function xmlSchemaPreRun( ), it checks for the presence of IDC definition only in the main schema,

27899 if (vctxt->schema->idcDef != NULL) {

27900   xmlHashScan(vctxt->schema->idcDef,

27901       (xmlHashScanner) xmlSchemaAugmentIDC, vctxt);

27902    }

        Because of this check, in the validation context, “vctxt->aidcs” will be set only if the main schema has IDC definition. So when the validation of the element declaration starts against its definition present in the schema file, the check for the IDC fails, since it is not able to find the IDC definition for the same.

Function: xmlSchemaIDCRegisterMatchers

23109   aidc = vctxt->aidcs;

23110   while (aidc != NULL) {

23111       if (aidc->def == idc)

23112           break;

23113       aidc = aidc->next;

23114   }

23115   if (aidc == NULL) {

23116       VERROR_INT("xmlSchemaIDCRegisterMatchers",

23117           "Could not find an augmented IDC item for an IDC definition");

23118       return (-1);

23119   }


        So in the function, xmlSchemaPreRun( ), should it check for all the schema pointers for the presence of Augmented IDC definitions in all the main and child schema pointers?

Thanks in advance for the reply.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]