public class StartTagBuffer extends ProxyReceiver implements NamespaceResolver
StartTagBuffer also implements namespace fixup (the process of creating namespace nodes|bindings on behalf of constructed element and attribute nodes). Although this would be done anyway, further down the pipeline, it has to be done early in the case of a validating pipeline, because the namespace bindings must be created before any namespace-sensitive attribute content is validated.
The StartTagBuffer also allows error conditions to be buffered. This is because the XSIAttributeHandler validates attributes such as xsi:type and xsi:nil before attempting to match its parent element against a particle of its containing type. It is possible that the parent element will match a wildcard particle with processContents="skip", in which case an invalid xsi:type or xsi:nil attribute is not an error.
| Modifier and Type | Field and Description |
|---|---|
protected AttributeCollectionImpl |
bufferedAttributes |
protected int |
elementLocationId |
protected NodeName |
elementNameCode |
protected int |
elementProperties |
protected SchemaType |
elementTypeCode |
protected NamespaceBinding[] |
namespaces |
protected int |
namespacesSize |
nextReceiverpipelineConfiguration, previousAtomic, systemIdPI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING| Constructor and Description |
|---|
StartTagBuffer(Receiver next) |
| Modifier and Type | Method and Description |
|---|---|
void |
attribute(NodeName attName,
SimpleType typeCode,
CharSequence value,
int locationId,
int properties)
Notify an attribute.
|
protected void |
declareAllNamespaces()
Signal namespace events for all in-scope namespaces to the current receiver in the pipeline
|
protected void |
declareNamespacesForStartElement() |
void |
endDocument()
Notify the end of a document node
|
void |
endElement()
endElement: Discard the namespaces declared locally on this element.
|
AttributeCollection |
getAllAttributes()
Get all the attributes on the current element start tag
|
String |
getAttribute(int nameCode)
Get the value of the current attribute with a given nameCode
|
String |
getAttribute(String uri,
String local)
Get the value of the current attribute with a given name
|
NamespaceBinding[] |
getLocalNamespaces()
Get the namespaces declared (or undeclared) at the current level
|
String |
getURIForPrefix(String prefix,
boolean useDefault)
Get the namespace URI corresponding to a given prefix.
|
boolean |
hasAttributeInNamespace(String uri)
Ask whether the attribute collection contains any attributes
in a specified namespace
|
boolean |
hasAttributes()
Determine if the current element has any attributes
|
Iterator<String> |
iteratePrefixes()
Get an iterator over all the prefixes declared in this namespace context.
|
void |
namespace(NamespaceBinding namespaceBinding,
int properties)
Notify a namespace.
|
void |
setPipelineConfiguration(PipelineConfiguration pipe)
Set the pipeline configuration
|
void |
startContent()
startContent: Add any namespace undeclarations needed to stop
namespaces being inherited from parent elements
|
void |
startDocument(int properties)
Start of a document node.
|
void |
startElement(NodeName nameCode,
SchemaType typeCode,
int locationId,
int properties)
startElement
|
protected void |
undeclareNamespacesForElement() |
append, characters, close, comment, getNamePool, getUnderlyingReceiver, open, processingInstruction, setSystemId, setUnderlyingReceiver, setUnparsedEntity, usesTypeAnnotationsappend, getConfiguration, getPipelineConfiguration, getSystemIdprotected NodeName elementNameCode
protected SchemaType elementTypeCode
protected int elementLocationId
protected int elementProperties
protected AttributeCollectionImpl bufferedAttributes
protected NamespaceBinding[] namespaces
protected int namespacesSize
public StartTagBuffer(Receiver next)
public void setPipelineConfiguration(PipelineConfiguration pipe)
setPipelineConfiguration in interface ReceiversetPipelineConfiguration in class ProxyReceiverpipe - the pipeline configurationpublic void startDocument(int properties)
throws XPathException
startDocument in interface ReceiverstartDocument in class ProxyReceiverproperties - bit-significant integer indicating properties of the document node.
The definitions of the bits are in class ReceiverOptionsXPathException - if an error occurspublic void endDocument()
throws XPathException
endDocument in interface ReceiverendDocument in class ProxyReceiverXPathException - if an error occurspublic void startElement(NodeName nameCode, SchemaType typeCode, int locationId, int properties) throws XPathException
startElement in interface ReceiverstartElement in class ProxyReceivernameCode - integer code identifying the name of the element within the name pool.typeCode - integer code identifying the element's type within the name pool.locationId - an integer which can be interpreted using a LocationProvider to return
information such as line number and system ID. If no location information is available,
the value zero is supplied.properties - properties of the element nodeXPathException - if an error occurspublic void namespace(NamespaceBinding namespaceBinding, int properties) throws XPathException
ProxyReceivernamespace in interface Receivernamespace in class ProxyReceivernamespaceBinding - the prefix/uri pair representing the namespace bindingproperties - any special properties to be passed on this callXPathException - if an error occurspublic void attribute(NodeName attName, SimpleType typeCode, CharSequence value, int locationId, int properties) throws XPathException
attribute in interface Receiverattribute in class ProxyReceiverattName - The name of the attribute, as held in the name pooltypeCode - The type of the attribute, as held in the name poolproperties - Bit significant value. The following bits are defined:
value - the string value of the attributelocationId - an integer which can be interpreted using a LocationProvider to return
information such as line number and system ID. If no location information is available,
the value zero is supplied.IllegalStateException: - attempt to output an attribute when there is no open element
start tagXPathException - if an error occurspublic void startContent()
throws XPathException
startContent in interface ReceiverstartContent in class ProxyReceiverXPathException - if an error occursprotected void declareNamespacesForStartElement()
throws XPathException
XPathExceptionpublic NamespaceBinding[] getLocalNamespaces()
protected void declareAllNamespaces()
throws XPathException
XPathException - if any downstream error occurspublic void endElement()
throws XPathException
endElement in interface ReceiverendElement in class ProxyReceiverXPathException - if an error occursprotected void undeclareNamespacesForElement()
public boolean hasAttributes()
public String getAttribute(int nameCode)
nameCode - the name of the required attributepublic String getAttribute(String uri, String local)
uri - the uri of the name of the required attributelocal - the local part of the name of the required attributepublic AttributeCollection getAllAttributes()
public boolean hasAttributeInNamespace(String uri)
uri - the specified namespacepublic String getURIForPrefix(String prefix, boolean useDefault)
getURIForPrefix in interface NamespaceResolverprefix - the namespace prefixuseDefault - true if the default namespace is to be used when the
prefix is ""public Iterator<String> iteratePrefixes()
iteratePrefixes in interface NamespaceResolverCopyright (c) 2004-2013 Saxonica Limited. All rights reserved.