net.sf.saxon.type

Interface ComplexType

public interface ComplexType extends SchemaType

A complex type as defined in XML Schema: either a user-defined complex type, or xs:anyType. In the non-schema-aware version of the Saxon product, the only complex type encountered is xs:anyType.
Method Summary
SchemaTypegetAttributeUseType(int fingerprint)
Find an attribute use within this complex type definition having a given attribute name (identified by fingerprint), and return the schema type associated with that attribute.
intgetElementParticleCardinality(int fingerprint)
Find an element particle within this complex type definition having a given element name (identified by fingerprint), and return the cardinality associated with that element particle, that is, the number of times the element can occur within this complex type.
SchemaTypegetElementParticleType(int fingerprint)
Find an element particle within this complex type definition having a given element name (identified by fingerprint), and return the schema type associated with that element particle.
SimpleTypegetSimpleContentType()
Get the simple content type
booleanisAbstract()
Test whether this complex type has been marked as abstract.
booleanisAllContent()
Test whether this complex type has "all" content, that is, a content model using an xs:all compositor
booleanisComplexContent()
Test whether this complex type has complex content
booleanisEmptiable()
Test whether the content model of this complex type allows empty content
booleanisEmptyContent()
Test whether the content model of this complex type is empty
booleanisMixedContent()
Test whether this complex type allows mixed content
booleanisRestricted()
Test whether this complex type is derived by restriction
booleanisSimpleContent()
Test whether this complexType has simple content
Stringsubsumes(ComplexType sub)
Test whether this complex type subsumes another complex type.

Method Detail

getAttributeUseType

public SchemaType getAttributeUseType(int fingerprint)
Find an attribute use within this complex type definition having a given attribute name (identified by fingerprint), and return the schema type associated with that attribute. If there is no such attribute use, return null. If the fingerprint matches an attribute wildcard, return the type of the global attribute declaration with the given name if one exists, or AnySimpleType if none exists and lax validation is permitted by the wildcard.

If there are types derived from this type by extension, search those too.

Parameters: fingerprint Identifies the name of the child element within this content model

getElementParticleCardinality

public int getElementParticleCardinality(int fingerprint)
Find an element particle within this complex type definition having a given element name (identified by fingerprint), and return the cardinality associated with that element particle, that is, the number of times the element can occur within this complex type. The value is one of EXACTLY_ONE, ALLOWS_ZERO_OR_ONE, ALLOWS_ZERO_OR_MORE, ALLOWS_ONE_OR_MORE, If there is no such particle, return zero.

Parameters: fingerprint Identifies the name of the child element within this content model

getElementParticleType

public SchemaType getElementParticleType(int fingerprint)
Find an element particle within this complex type definition having a given element name (identified by fingerprint), and return the schema type associated with that element particle. If there is no such particle, return null. If the fingerprint matches an element wildcard, return the type of the global element declaration with the given name if one exists, or AnyType if none exists and lax validation is permitted by the wildcard.

Parameters: fingerprint Identifies the name of the child element within this content model

getSimpleContentType

public SimpleType getSimpleContentType()
Get the simple content type

Returns: For a complex type with simple content, returns the simple type of the content. Otherwise, returns null.

isAbstract

public boolean isAbstract()
Test whether this complex type has been marked as abstract.

Returns: true if this complex type is abstract.

isAllContent

public boolean isAllContent()
Test whether this complex type has "all" content, that is, a content model using an xs:all compositor

isComplexContent

public boolean isComplexContent()
Test whether this complex type has complex content

Returns: true if this complex type has a complex content model, false if it has a simple content model

isEmptiable

public boolean isEmptiable()
Test whether the content model of this complex type allows empty content

Returns: true if empty content is valid

isEmptyContent

public boolean isEmptyContent()
Test whether the content model of this complex type is empty

Returns: true if the content model is defined as empty

isMixedContent

public boolean isMixedContent()
Test whether this complex type allows mixed content

Returns: true if mixed content is allowed

isRestricted

public boolean isRestricted()
Test whether this complex type is derived by restriction

Returns: true if this complex type is derived by restriction

isSimpleContent

public boolean isSimpleContent()
Test whether this complexType has simple content

Returns: true if this complex type has a simple content model, false if it has a complex content model

subsumes

public String subsumes(ComplexType sub)
Test whether this complex type subsumes another complex type. The algorithm used is as published by Thompson and Tobin, XML Europe 2003.

Parameters: sub the other type (the type that is derived by restriction, validly or otherwise)

Returns: null indicating that this type does indeed subsume the other; or a string indicating why it doesn't.