Lines Matching refs:idc
30 * IDC XPath expression and chameleon includes: the targetNamespace is changed, so
723 xmlSchemaIDCPtr idc;
724 int index; /* an index position if significant for IDC key-sequences */
752 * The augmented IDC information used for validation.
758 xmlSchemaIDCPtr def; /* the IDC definition */
759 int keyrefDepth; /* the lowest tree level to which IDC
799 xmlSchemaIDCPtr definition; /* the IDC definition */
841 * Used to evaluate IDC selectors (and fields).
848 xmlSchemaIDCAugPtr aidc; /* the augmented IDC item */
896 xmlSchemaPSVIIDCBindingPtr idcTable; /* the table of PSVI IDC bindings
898 xmlSchemaIDCMatcherPtr idcMatchers; /* the IDC matchers for the scope
1000 xmlSchemaIDCAugPtr aidcs; /* a list of augmented IDC informations */
1004 xmlSchemaIDCMatcherPtr idcMatcherCache; /* Cache for IDC matcher objects. */
1006 xmlSchemaPSVIIDCNodePtr *idcNodes; /* list of all IDC node-table entries*/
1010 xmlSchemaPSVIIDCKeyPtr *idcKeys; /* list of all IDC node-table entries */
1143 /* return(BAD_CAST "IDC (unique)"); */
1146 /* return(BAD_CAST "IDC (key)"); */
1149 /* return(BAD_CAST "IDC (keyref)"); */
1436 xmlSchemaGetIDCDesignation(xmlChar **buf, xmlSchemaIDCPtr idc)
1438 return(xmlSchemaGetComponentDesignation(buf, idc));
3862 * @idc: a identity-constraint definition
4514 * Displays the current IDC table for debug purposes.
4528 fprintf(output, "IDC: TABLES on '%s'\n",
4535 fprintf(output, "IDC: BINDING '%s' (%d)\n",
4560 fprintf(output, "IDC: dupls (%d):\n", bind->dupls->nbItems);
7972 xmlSchemaIDCPtr idc,
7987 xmlSchemaPErr(ctxt, idc->node,
7994 node = idc->node;
8189 xmlSchemaIDCPtr idc,
8240 if (xmlSchemaCheckCSelectorXPath(ctxt, idc, item, attr,
8246 "validating the XPath expression of a IDC selector.\n",
8258 * Add the annotation to the parent IDC.
8260 xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) idc,
20325 * @idc: the identity-constraint definition
20334 xmlSchemaResolveIDCKeyReferences(xmlSchemaIDCPtr idc,
20337 if (idc->type != XML_SCHEMA_TYPE_IDC_KEYREF)
20339 if (idc->ref->name != NULL) {
20340 idc->ref->item = (xmlSchemaBasicItemPtr)
20341 xmlSchemaGetIDC(pctxt->schema, idc->ref->name,
20342 idc->ref->targetNamespace);
20343 if (idc->ref->item == NULL) {
20350 WXS_BASIC_CAST idc, idc->node,
20351 "refer", idc->ref->name,
20352 idc->ref->targetNamespace,
20355 } else if (idc->ref->item->type == XML_SCHEMA_TYPE_IDC_KEYREF) {
20361 NULL, WXS_BASIC_CAST idc,
20364 idc->ref->item = NULL;
20367 if (idc->nbFields !=
20368 idc->ref->item)->nbFields) {
20372 refer = (xmlSchemaIDCPtr) idc->ref->item;
20381 NULL, WXS_BASIC_CAST idc,
20860 * 6. IDC key-references:
20861 * - the referenced IDC 'key' or 'unique' definition
21940 * Validation of identity-constraints (IDC) *
21946 * @idcDef: the IDC definition
21948 * Creates an augmented IDC definition item.
21961 "xmlSchemaAugmentIDC: allocating an augmented IDC definition",
21986 * Creates an augmented IDC definition for the imported schema.
21998 * @idcDef: the IDC definition of this binding
22000 * Creates a new IDC binding.
22002 * Returns the new IDC binding, NULL on internal errors.
22013 "allocating a PSVI IDC binding item", NULL);
22024 * @item: the IDC node table item
22026 * The validation context is used to store IDC node table items.
22027 * They are stored to avoid copying them if IDC node-tables are merged
22028 * with corresponding parent IDC node-tables (bubbling).
22044 "allocating the IDC node table item list", NULL);
22055 "re-allocating the IDC node table item list", NULL);
22067 * @item: the IDC key
22069 * The validation context is used to store an IDC key.
22085 "allocating the IDC key storage list", NULL);
22096 "re-allocating the IDC key storage list", NULL);
22107 * @bind: the IDC binding
22110 * Appends the IDC node-table item to the binding.
22124 "allocating an array of IDC node-table items", NULL);
22134 "re-allocating an array of IDC node-table items", NULL);
22145 * @matcher: the IDC matcher
22147 * Looks up an PSVI IDC binding, for the IDC definition and
22149 * and added to the IDC table.
22151 * Returns an IDC binding or NULL on internal errors.
22196 * @key: the IDC key
22198 * Frees an IDC key together with its compiled value.
22211 * Frees an IDC binding. Note that the node table-items
22226 * @bind: the first IDC binding in the list
22228 * Frees an IDC table, i.e. all the IDC bindings in the list.
22244 * @matcher: the first IDC matcher in the list
22246 * Frees a list of IDC matchers.
22288 * @matcher: the first IDC matcher in the list
22290 * Caches a list of IDC matchers for reuse.
22345 * @matcher: the IDC matcher
22378 "allocating an IDC state object", NULL);
22413 xmlGenericError(xmlGenericErrorContext, "IDC: STO push '%s'\n",
22445 "IDC: EVAL on %s, depth %d, type %d\n",
22459 xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] selector '%s'\n",
22462 xmlGenericError(xmlGenericErrorContext, "IDC: ['%s'] field '%s'\n",
22483 xmlGenericError(xmlGenericErrorContext, "IDC: "
22510 xmlGenericError(xmlGenericErrorContext, "IDC: push match '%d'\n",
22517 * Activate state objects for the IDC fields of
22518 * the IDC selector.
22521 xmlGenericError(xmlGenericErrorContext, "IDC: "
22533 * An IDC key node was found by the IDC field.
22537 "IDC: key found\n");
22631 * Processes and pops the history items of the IDC state objects.
22632 * IDC key-sequences are validated/created on IDC bindings.
22653 "IDC: BACK on %s, depth %d\n",
22670 xmlGenericError(xmlGenericErrorContext, "IDC: stream pop '%s'\n",
22846 "allocating an IDC key-sequence", NULL);
22861 "allocating a IDC key", NULL);
22888 xmlSchemaIDCPtr idc;
22893 * An IDC 'selector' state object resolved to a target node,
22899 * itself, into the node-table of the corresponding IDC
22903 idc = matcher->aidc->def;
22904 nbKeys = idc->nbFields;
22912 if (idc->type == XML_SCHEMA_TYPE_IDC_KEY)
22920 if (idc->type == XML_SCHEMA_TYPE_IDC_KEY)
22931 if (idc->type == XML_SCHEMA_TYPE_IDC_KEY) {
22933 * All fields of a "key" IDC must resolve.
22950 * Get the IDC binding from the matcher and check for
22957 if ((idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) &&
22998 WXS_BASIC_CAST idc,
23002 xmlSchemaGetIDCDesignation(&strB, idc));
23009 * Add a node-table item to the IDC binding.
23015 "allocating an IDC node-table item", NULL);
23025 if (idc->type != XML_SCHEMA_TYPE_IDC_KEYREF) {
23035 * Save a cached QName for this node on the IDC node, to be
23059 if (idc->type == XML_SCHEMA_TYPE_IDC_KEYREF) {
23082 WXS_BASIC_CAST idc,
23084 xmlSchemaGetIDCDesignation(&str, idc), NULL);
23089 * Free the key-sequence if not added to the IDC table.
23105 xmlGenericError(xmlGenericErrorContext, "IDC: STO pop '%s'\n",
23135 * Creates helper objects to evaluate IDC selectors/fields
23145 xmlSchemaIDCPtr idc, refIdc;
23148 idc = (xmlSchemaIDCPtr) elemDecl->idcs;
23149 if (idc == NULL)
23156 "IDC: REGISTER on %s, depth %d\n",
23164 "The chain of IDC matchers is expected to be empty");
23168 if (idc->type == XML_SCHEMA_TYPE_IDC_KEYREF) {
23172 * the depth of the top-most keyref IDC. If no keyref
23173 * references a key/unique IDC, the keyrefDepth will
23176 refIdc = (xmlSchemaIDCPtr) idc->ref->item;
23183 * Lookup the referenced augmented IDC info.
23193 "Could not find an augmented IDC item for an IDC "
23203 * Lookup the augmented IDC item for the IDC definition.
23207 if (aidc->def == idc)
23213 "Could not find an augmented IDC item for an IDC definition");
23217 * Create an IDC matcher for every IDC definition.
23231 "allocating an IDC matcher", NULL);
23247 xmlGenericError(xmlGenericErrorContext, "IDC: register matcher\n");
23253 idc->selector, XPATH_STATE_OBJ_TYPE_IDC_SELECTOR) == -1)
23256 idc = idc->next;
23257 } while (idc != NULL);
23274 * Skip keyref IDCs and empty IDC target-lists.
23283 * If we _want_ the IDC node-table to be created in any case
23294 * Get/create the IDC binding on this element for the IDC definition.
23313 * Transfer all IDC target-nodes to the IDC node-table.
23325 * Compare the key-sequences and add to the IDC node-table.
23416 * Remove the duplicate entry from the IDC node-table.
23428 * If everything is fine, then add the IDC target-node to
23429 * the IDC node-table.
23450 * Merges IDC bindings of an element at @depth into the corresponding IDC
23460 xmlSchemaPSVIIDCBindingPtr bind; /* IDC bindings of the current node. */
23461 xmlSchemaPSVIIDCBindingPtr *parTable, parBind = NULL; /* parent IDC bindings. */
23482 * Check if the key/unique IDC table needs to be bubbled.
23502 * IDC definition.
23641 "allocating IDC list of node-table items", NULL);
23652 "re-allocating IDC list of node-table items", NULL);
23669 * No binding for the IDC was found: create a new one and
23682 * Add all IDC node-table entries.
23706 "allocating an array of IDC node-table "
23750 * Check the cvc-idc-keyref constraints.
23774 * Find the IDC node-table for the referenced IDC key/unique.
24016 * REVISIT OPTIMIZE TODO: Use a pool of IDC matchers.
24027 * OPTIMIZE TODO: Use a pool of IDC tables??.
25074 * IDC: Register identity-constraint XPath matchers.
25566 * Go directly to IDC evaluation.
26343 * PSVI TODO: If we expose IDC node-tables via PSVI then the tables
26345 * We will currently build IDC node-tables and bubble them only if
26350 * Add the current IDC target-nodes to the IDC node-tables.
26359 IDC keyrefs.
26365 * Merge/free the IDC table.
26378 * Merge the IDC node table with the table of the parent node.
26386 * VAL TODO: Don't free the PSVI IDC tables if they are
26406 * A 'keyrefDepth' of a key/unique IDC matches the current
26408 * top-most keyref IDC which refers to this IDC.
26816 * Augment the IDC definitions for the main schema and all imported ones
26925 * Evaluate IDCs. Do it here, since new IDC matchers are registered
27483 * Augmented IDC information.
27600 * Augmented IDC information.
28001 * Augment the IDC definitions for the main schema and all imported ones