Package com.saxonica.ee.schema

## Class IdentityConstraint

- java.lang.Object
- - com.saxonica.ee.schema.SchemaStructure
  - - com.saxonica.ee.schema.IdentityConstraint

- All Implemented Interfaces:
    `SerializableSchemaComponent`, `UserSchemaComponent`, `javax.xml.transform.SourceLocator`, `Location`, `SchemaComponent`, `org.xml.sax.Locator`
  Direct Known Subclasses:
    `Key`, `KeyRef`, `Unique`

      public abstract class IdentityConstraint
      extends SchemaStructure
      implements UserSchemaComponent, SerializableSchemaComponent

  The base class for the XML Schema Identity Constraints (key, keyref, unique).

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface net.sf.saxon.type.SchemaComponent

      `SchemaComponent.ValidationStatus`

  - ### Field Summary

    - ### Fields inherited from interface net.sf.saxon.type.SchemaComponent

      `COMPONENT_FUNCTION_TYPE`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `IdentityConstraint()` | Constructor used by sub-classes.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addField​(IdentityField field)` | Adds the given IdentityField to this IdentityConstraint
    `void` | `elaborate​(SchemaCompiler compiler)` | Elaborate the schema component: after reloading a serialized schema component model, this expands the component with derived information needed during validation episodes.
    `boolean` | `fixup​(SchemaCompiler compiler)` | Check references from this component to other components
    `Function` | `getComponentAsFunction()` | Get the schema component in the form of a function item.
    `abstract java.lang.String` | `getConstraintCategory()` | The type of constraint: one of "key", "unique", or "keyref"
    `StructuredQName` | `getConstraintName()` | Get the name of this identity constraint
    `java.util.List<IdentityField>` | `getFields()` | Returns the List of Fields contained within this IdentityConstraint.
    `java.lang.String` | `getName()` | Return the name of this IdentityConstraint.
    `IdentitySelector` | `getSelector()` | Returns the selector of this IdentityConstraint.
    `java.lang.String` | `getTargetNamespace()` | Return the target namespace of this IdentityConstraint.
    `boolean` | `isOrdered()` |
    `boolean` | `isSameDeclaration​(IdentityConstraint other)` | Test whether this is the same constraint as another.
    `void` | `serialize​(SchemaModelSerializer serializer)` | Serialize the identity constraint as part of the serialized Schema Component Model
    `void` | `setConstraintName​(StructuredQName nc)` | Set the integer cdde of the name of this identity constraint
    `void` | `setOrdered​(boolean ordered)` |
    `void` | `setSelector​(IdentitySelector selector)` | Sets the selector for this IdentityConstraint.
    `void` | `typeCheck​(SchemaCompiler compiler, SchemaType contextType)` | Typecheck the selector and the fields.
    `boolean` | `validate​(SchemaCompiler compiler)` | Checks the validity of this Schema definition.

    - ### Methods inherited from class com.saxonica.ee.schema.SchemaStructure

      `getColumnNumber, getConfiguration, getFixupStatus, getGeneratedId, getLineNumber, getPublicId, getRedefinitionLevel, getSchemaDocumentURI, getSystemId, getValidationStatus, hasSameLocation, isValidationNeeded, lookForCycles, makeXPathExpressionPropertyRecord, saveLocation, setConfiguration, setFixupStatus, setGeneratedId, setLineNumber, setLocator, setRedefinitionLevel, setSchemaDocumentURI, setSystemId, setValidationStatus`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.type.SchemaComponent

      `getRedefinitionLevel, getValidationStatus`

    - ### Methods inherited from interface com.saxonica.ee.schema.UserSchemaComponent

      `lookForCycles`

- - ### Constructor Detail

    - #### IdentityConstraint

          protected IdentityConstraint()

      Constructor used by sub-classes. Creates a new IdentityConstraint.

  - ### Method Detail

    - #### getConstraintCategory

          public abstract java.lang.String getConstraintCategory()

      The type of constraint: one of "key", "unique", or "keyref"
      Returns:
        one of "key", "unique", or "keyref" (note the spelling)

    - #### addField

          public void addField​(IdentityField field)

      Adds the given IdentityField to this IdentityConstraint
      Parameters:
        `field` - the IdentityField to add.

    - #### getFields

          public java.util.List<IdentityField> getFields()

      Returns the List of Fields contained within this IdentityConstraint.
      Returns:
        the List of fields

    - #### getName

          public java.lang.String getName()

      Return the name of this IdentityConstraint. This value will never be null.
      Returns:
        the name of this IdentityConstraint

    - #### getTargetNamespace

          public java.lang.String getTargetNamespace()

      Return the target namespace of this IdentityConstraint.
      Returns:
        the target namespace of this IdentityConstraint. Return null if the target namespace is "absent".

    - #### getSelector

          public IdentitySelector getSelector()

      Returns the selector of this IdentityConstraint.
      Returns:
        the IdentitySelector of this IdentityConstraint

    - #### setSelector

          public void setSelector​(IdentitySelector selector)

      Sets the selector for this IdentityConstraint.
      Parameters:
        `selector` - the Selector for this IdentityConstraint. Must not be null.

    - #### setConstraintName

          public void setConstraintName​(StructuredQName nc)

      Set the integer cdde of the name of this identity constraint
      Parameters:
        `nc` - the namecode

    - #### getConstraintName

          public StructuredQName getConstraintName()

      Get the name of this identity constraint
      Returns:
        the component's name

    - #### setOrdered

          public void setOrdered​(boolean ordered)

    - #### isOrdered

          public boolean isOrdered()

    - #### fixup

          public boolean fixup​(SchemaCompiler compiler)
                        throws SchemaException

      Check references from this component to other components
      Specified by:
        `fixup` in interface `UserSchemaComponent`
      Overrides:
        `fixup` in class `SchemaStructure`
      Parameters:
        `compiler` - the schema compiler
      Returns:
        true if all is well, false if errors found
      Throws:
        `SchemaException`

    - #### validate

          public boolean validate​(SchemaCompiler compiler)
                           throws SchemaException

      Checks the validity of this Schema definition.
      Specified by:
        `validate` in interface `UserSchemaComponent`
      Returns:
        true when this Schema definition is valid, otherwise false.
      Throws:
        `SchemaException` - if the definition is invalid

    - #### typeCheck

          public void typeCheck​(SchemaCompiler compiler,
                                SchemaType contextType)
                         throws XPathException

      Typecheck the selector and the fields. This reports warnings if the XPath expressions used in defining the constraint cannot select anything, or under similar conditions
      Parameters:
        `compiler` - the schema compiler
        `contextType` - the type of the element whose constraint is being defined
      Throws:
        `XPathException` - if a type error is found

    - #### isSameDeclaration

          public boolean isSameDeclaration​(IdentityConstraint other)

      Test whether this is the same constraint as another. They are considered to be the same component if they are derived from the same definition in the original XML representation (which can happen when there are multiple includes of the same file)
      Parameters:
        `other` - the notation declaration that we are comparing with
      Returns:
        true if the two notation declarations are identical

    - #### elaborate

          public void elaborate​(SchemaCompiler compiler)

      Elaborate the schema component: after reloading a serialized schema component model, this expands the component with derived information needed during validation episodes. The model is assumed to be valid.
      Specified by:
        `elaborate` in interface `UserSchemaComponent`
      Overrides:
        `elaborate` in class `SchemaStructure`
      Parameters:
        `compiler` - the schema compiler

    - #### serialize

          public void serialize​(SchemaModelSerializer serializer)
                         throws XPathException

      Serialize the identity constraint as part of the serialized Schema Component Model
      Specified by:
        `serialize` in interface `SerializableSchemaComponent`
      Parameters:
        `serializer` - the object responsible for performing the serialization
      Throws:
        `XPathException` - if serialization fails

    - #### getComponentAsFunction

          public Function getComponentAsFunction()

      Description copied from interface: `SchemaComponent`
      Get the schema component in the form of a function item. This allows schema information to be made visible to XSLT or XQuery code. The function makes available the contents of the schema component as defined in the XSD specification. The function takes a string as argument representing a property name, and returns the corresponding property of the schema component. There is also a property "class" which returns the kind of schema component, for example "Attribute Declaration".
      Specified by:
        `getComponentAsFunction` in interface `SchemaComponent`
      Returns:
        the schema component represented as a function from property names to property values.