## com.saxonica.schema
Class AttributeDecl

    java.lang.Object
      com.saxonica.schema.SchemaStructure
          com.saxonica.schema.AttributeDecl

All Implemented Interfaces:
  SerializableSchemaComponent, UserSchemaComponent, java.io.Serializable, javax.xml.transform.SourceLocator, SchemaComponent, SchemaDeclaration

    public final class AttributeDecl

extends SchemaStructure
implements UserSchemaComponent, SerializableSchemaComponent, SchemaDeclaration

An XML Schema Attribute Declaration. This includes global attribute declarations, local attribute declarations, and "attribute uses". It corresponds to either (a) an attribute declaration schema component for a global attribute, or (b) an attribute declaration schema component for a local attribute, plus an attribute use referencing that attribute declaration, or (c) an attribute use referencing a global attribute declaration.

See Also:
  Serialized Form

Field Summary

Fields inherited from interface net.sf.saxon.type.SchemaComponent
`FIXED_UP, INCOMPLETE, INVALID, UNVALIDATED, VALIDATED, VALIDATING`

Constructor Summary
`AttributeDecl(SchemaAwareConfiguration config, boolean global)` Creates a new AttrDecl in the given schema.

Method Summary
`boolean` `fixup(SchemaCompiler compiler)` Check references from this component to other components
`UserComplexType` `getContainingComplexType()` Get the containing complex type.
`java.lang.String` `getDefaultValue()` Returns the default value of this attribute declaration.
`java.lang.String` `getDisplayName()` Returns the name of the attribute defined by this AttributeDecl.
`int` `getFingerprint()` Gets the fingerprint of this attribute name
`Value` `getFixedValue()` Returns the fixed value of this attribute declaration.
`java.lang.String` `getName()` Get the local name of this Attribute Declaration.
`int` `getNameCode()` Get the nameCode of the name of this attribute declaration in the namePool
`java.lang.String` `getNamespace()` Deprecated. since 9.0: use the renamed method getTargetNamespace()
`SimpleType` `getSimpleType()` Get the type associated with this Attribute Declaration.
`java.lang.String` `getTargetNamespace()` Get the namespace URI of this element declaration.
`SchemaType` `getType()` Get the type of this attribute declaration.
`boolean` `isAbstract()` Determine, in the case of an Element Declaration, whether it is nillable.
`boolean` `isGlobal()` Determine whether this attribute declaration is global.
`boolean` `isNillable()` Determine, in the case of an Element Declaration, whether it is nillable.
`boolean` `isSameDeclaration(AttributeDecl other)` Test whether this is the same declaration as another attribute declaration.
`NodeTest` `makeSchemaNodeTest()` Create a NodeTest that implements the semantics of schema-element(name) or schema-attribute(name) applied to this element or attribute declaration.
`void` `serialize(SchemaModelSerializer serializer)` Serialize the schema component
`void` `setContainingComplexType(UserComplexType type)` Sets the containing complex type definition.
`void` `setDefaultValue(java.lang.String value)` Sets the default value.
`void` `setFixedValue(Value value)` Sets the fixed value.
`void` `setNameCode(int nameCode)` Set the name code for this attribute name.
`void` `setNamespaceResolver(NamespaceResolver resolver)` Set the namespace resolver for resolving QName-valued fixed and default values
`void` `setSimpleType(SimpleType simpleType)` Sets the SimpleType for this attribute declaration.
`void` `setTypeReference(TypeReference type)` Sets the schema type for this attribute declaration.
`boolean` `testFixedValue(java.lang.CharSequence value, NamespaceResolver resolver)` Test a value against the fixed value.
`boolean` `validate(SchemaCompiler compiler)` Checks the validity of this Attribute declaration

Methods inherited from class com.saxonica.schema.SchemaStructure
`elaborate, getColumnNumber, getConfiguration, getFixupStatus, getLineNumber, getPublicId, getSystemId, getValidationStatus, lookForCycles, setConfiguration, setFixupStatus, setLineNumber, setLocator, setSystemId, setValidationStatus`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface com.saxonica.schema.UserSchemaComponent
`elaborate, lookForCycles`

Methods inherited from interface net.sf.saxon.type.SchemaComponent
`getValidationStatus`

Constructor Detail

### AttributeDecl

    public AttributeDecl(SchemaAwareConfiguration config,
                         boolean global)

  Creates a new AttrDecl in the given schema. For system use only.

  Parameters:
    `config` - the configuration that contains the new attrDecl
    `global` - true if the attribute declaration is global

Method Detail

### isGlobal

    public boolean isGlobal()

  Determine whether this attribute declaration is global. This represents one aspect of the {scope} property defined in the schema data model.

  Returns:
    true if the attribute declaration is global, false if it is local

### setContainingComplexType

    public void setContainingComplexType(UserComplexType type)

  Sets the containing complex type definition. For internal use only.

  Parameters:
    `type` - the containing complex type

### getContainingComplexType

    public UserComplexType getContainingComplexType()

  Get the containing complex type. This represents one aspect of the {scope} property defined in the schema component model. If the attribute is a local attribute declaration and is defined as part of a complex type (and not as part of a named attribute group), returns the complex type definition. Otherwise, returns null.

  Returns:
    the containing complex type definition if there is one, otherwise null

### getName

    public java.lang.String getName()

  Get the local name of this Attribute Declaration. This corresponds to the {name} property as defined in the schema component model.

  Returns:
    the local name of the attribute

### getNamespace

    public java.lang.String getNamespace()

  Deprecated. since 9.0: use the renamed method getTargetNamespace()

  Get the namespace part of the name of this Attribute Declaration. This corresponds to the {targetNamespace} property as defined in the schema component model.

  Returns:
    the namespace URI part of the name of the attribute

### getTargetNamespace

    public java.lang.String getTargetNamespace()

  Get the namespace URI of this element declaration. This corresponds to the {targetNamespace} property defined in the schema component model.

  Returns:
    the target namespace URI

### getDisplayName

    public java.lang.String getDisplayName()

  Returns the name of the attribute defined by this AttributeDecl. This is used only for diagnostic display purposes

  Returns:
    the name of the attribute as a lexical QName.

### setNameCode

    public void setNameCode(int nameCode)

  Set the name code for this attribute name. For internal use only.

  Parameters:
    `nameCode` - the nameCode, as allocated from the name pool.

### setTypeReference

    public void setTypeReference(TypeReference type)

  Sets the schema type for this attribute declaration. For internal use only.

  Parameters:
    `type` - the schema type for this element declaration.

### getFingerprint

    public int getFingerprint()

  Gets the fingerprint of this attribute name

  Returns:
    the fingerprint of the attribute name in the NamePool

### getNameCode

    public int getNameCode()

  Get the nameCode of the name of this attribute declaration in the namePool

  Returns:
    the nameCode of the attribute name

### getSimpleType

    public SimpleType getSimpleType()
                             throws UnresolvedReferenceException

  Get the type associated with this Attribute Declaration.

  Returns:
    the type of this attribute.
  Throws:
    `UnresolvedReferenceException`

### getType

    public SchemaType getType()
                       throws UnresolvedReferenceException

  Get the type of this attribute declaration. This corresponds to the {typeDefinition} property defined in the schema component model

  Specified by:
    `getType` in interface `SchemaDeclaration`
  Returns:
    the type of this attribute. The returned SchemaType will always be an instanceof `SimpleType`
  Throws:
    `UnresolvedReferenceException`

### getDefaultValue

    public java.lang.String getDefaultValue()

  Returns the default value of this attribute declaration. This corresponds to one aspect of the {valueConstraint} property defined in the schema component model.

  Returns:
    the default value defined by this attribute declaration, or null if no default was specified. The default value is always maintained as a string, in the form supplied in the original schema document.

### getFixedValue

    public Value getFixedValue()

  Returns the fixed value of this attribute declaration. This corresponds to one aspect of the {valueConstraint} property defined in the schema component model.

  Returns:
    the fixed value defined by this attribute declaration, or null if no fixed value was specified. Once the schema has been compiled this will be the correctly-typed value; until then it will be the string value as specified in the source schema document.

### setSimpleType

    public void setSimpleType(SimpleType simpleType)

  Sets the SimpleType for this attribute declaration. For internal use only.

  Parameters:
    `simpleType` - the SimpleType for this attribute declaration

### setDefaultValue

    public void setDefaultValue(java.lang.String value)

  Sets the default value. For internal use only.

  Parameters:
    `value` - the default value

### setFixedValue

    public void setFixedValue(Value value)

  Sets the fixed value. For internal use only.

  Parameters:
    `value` - the fixed value. This will initially be saved as an UntypedAtomicValue; later, when the type is known, it will be converted to the correct type

### setNamespaceResolver

    public void setNamespaceResolver(NamespaceResolver resolver)

  Set the namespace resolver for resolving QName-valued fixed and default values

  Parameters:
    `resolver` - the namespace resolver

### makeSchemaNodeTest

    public NodeTest makeSchemaNodeTest()

  Create a NodeTest that implements the semantics of schema-element(name) or schema-attribute(name) applied to this element or attribute declaration.

  Specified by:
    `makeSchemaNodeTest` in interface `SchemaDeclaration`

### fixup

    public boolean fixup(SchemaCompiler compiler)
                  throws SchemaException,
                         UnresolvedReferenceException

  Check references from this component to other components

  Specified by:
    `fixup` in interface `UserSchemaComponent`
  Overrides:
    `fixup` in class `SchemaStructure`
  Parameters:
    `compiler` - used for error reporting
  Returns:
    true if all is well, false if errors found
  Throws:
    `SchemaException`
    `UnresolvedReferenceException`

### validate

    public boolean validate(SchemaCompiler compiler)
                     throws SchemaException

  Checks the validity of this Attribute declaration

  Specified by:
    `validate` in interface `UserSchemaComponent`
  Returns:
    true when this Schema definition is valid, otherwise false.
  Throws:
    `SchemaException` - if the error listener decides an error is fatal

### testFixedValue

    public boolean testFixedValue(java.lang.CharSequence value,
                                  NamespaceResolver resolver)
                           throws ValidationException

  Test a value against the fixed value. This tests both against the fixed value for this attribute use, and the fixed value of the corresponding attribute declaration (which must be equivalent if they are both present).

  Parameters:
    `value` - the value to be tested
    `resolver` - Namespace resolver for use if the value is namespace-sensitive (QName or NOTATION)
  Returns:
    true if it matches (or if there is no fixed value), false otherwise
  Throws:
    `ValidationException` - if the value is not valid for this type

### isSameDeclaration

    public boolean isSameDeclaration(AttributeDecl other)

  Test whether this is the same declaration as another attribute declaration. They are considered to be the same declaration if they came from the same xs:attribute element in the same schema document

  Parameters:
    `other` - the other attribute declaration
  Returns:
    true if the two attribute declarations are considered identical

### isNillable

    public boolean isNillable()

  Determine, in the case of an Element Declaration, whether it is nillable. For an Attribute declaration, always return false;

  Specified by:
    `isNillable` in interface `SchemaDeclaration`

### isAbstract

    public boolean isAbstract()

  Determine, in the case of an Element Declaration, whether it is nillable. For an Attribute declaration, always return false;

  Specified by:
    `isAbstract` in interface `SchemaDeclaration`

### serialize

    public void serialize(SchemaModelSerializer serializer)
                   throws XPathException

  Serialize the schema component

  Specified by:
    `serialize` in interface `SerializableSchemaComponent`
  Throws:
    `XPathException`

Copyright (c) Saxonica Limited. All rights reserved.