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 Location |
elementLocationId |
protected NodeName |
elementNameCode |
protected int |
elementProperties |
protected SchemaType |
elementTypeCode |
protected NamespaceBinding[] |
namespaces |
protected int |
namespacesSize |
nextReceiverpipelineConfiguration, previousAtomic, systemId| Constructor and Description |
|---|
StartTagBuffer(Receiver next) |
| Modifier and Type | Method and Description |
|---|---|
void |
attribute(NodeName attName,
SimpleType typeCode,
java.lang.CharSequence value,
Location locationId,
int properties)
Notify an attribute.
|
void |
characters(java.lang.CharSequence chars,
Location locationId,
int properties)
Character data
|
void |
comment(java.lang.CharSequence chars,
Location locationId,
int properties)
Output a comment
|
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
|
java.lang.String |
getAttribute(int nameCode)
Get the value of the current attribute with a given nameCode
|
java.lang.String |
getAttribute(java.lang.String uri,
java.lang.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
|
java.lang.String |
getURIForPrefix(java.lang.String prefix,
boolean useDefault)
Get the namespace URI corresponding to a given prefix.
|
boolean |
hasAttributeInNamespace(java.lang.String uri)
Ask whether the attribute collection contains any attributes
in a specified namespace
|
boolean |
hasAttributes()
Determine if the current element has any attributes
|
java.util.Iterator<java.lang.String> |
iteratePrefixes()
Get an iterator over all the prefixes declared in this namespace context.
|
void |
namespace(NamespaceBindingSet namespaceBindings,
int properties)
Notify a namespace.
|
void |
processingInstruction(java.lang.String target,
java.lang.CharSequence data,
Location locationId,
int properties)
Processing Instruction
|
void |
setHasChildren(boolean hasChildren) |
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,
Location location,
int properties)
startElement
|
protected void |
undeclareNamespacesForElement() |
append, close, getNamePool, getNextReceiver, open, setSystemId, setUnderlyingReceiver, setUnparsedEntity, usesTypeAnnotationsappend, decompose, flatten, getConfiguration, getErrorCodeForDecomposingFunctionItems, getPipelineConfiguration, getSystemId, handlesAppendprotected NodeName elementNameCode
protected SchemaType elementTypeCode
protected Location 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, Location location, int properties) throws XPathException
startElement in interface ReceiverstartElement in class ProxyReceivernameCode - integer code identifying the name of the element within the name pool.typeCode - the element's type annotation.location - a location associated with the event (typically either a location in the
source document or the stylesheet)properties - properties of the element nodeXPathException - if an error occurspublic void namespace(NamespaceBindingSet namespaceBindings, int properties) throws XPathException
ProxyReceivernamespace in interface Receivernamespace in class ProxyReceivernamespaceBindings - 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, java.lang.CharSequence value, Location locationId, int properties) throws XPathException
attribute in interface Receiverattribute in class ProxyReceiverattName - The name of the attributetypeCode - The type of the attributelocationId - the location of the node in the source, or of the instruction that created itproperties - Bit significant value. The following bits are defined:
value - the string value of the attributeIllegalStateException: - attempt to output an attribute when there is no open element
start tagXPathException - if an error occurspublic void setHasChildren(boolean hasChildren)
public 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 java.lang.String getAttribute(int nameCode)
nameCode - the name of the required attributepublic java.lang.String getAttribute(java.lang.String uri,
java.lang.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(java.lang.String uri)
uri - the specified namespacepublic java.lang.String getURIForPrefix(java.lang.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 java.util.Iterator<java.lang.String> iteratePrefixes()
iteratePrefixes in interface NamespaceResolverpublic void characters(java.lang.CharSequence chars,
Location locationId,
int properties)
throws XPathException
characters in interface Receivercharacters in class ProxyReceiverchars - locationId - the location of the node in the source, or of the instruction that created itproperties - XPathException - if an error occurspublic void processingInstruction(java.lang.String target,
java.lang.CharSequence data,
Location locationId,
int properties)
throws XPathException
processingInstruction in interface ReceiverprocessingInstruction in class ProxyReceivertarget - data - locationId - the location of the node in the source, or of the instruction that created itproperties - XPathException - if an error occurspublic void comment(java.lang.CharSequence chars,
Location locationId,
int properties)
throws XPathException
comment in interface Receivercomment in class ProxyReceiverchars - locationId - the location of the node in the source, or of the instruction that created itproperties - XPathException - if an error occursCopyright (c) 2004-2020 Saxonica Limited. All rights reserved.