net.sf.saxon.event
Class StartTagBuffer
- NamespaceResolver, Receiver, Result
public class StartTagBuffer
StartTagBuffer is a ProxyReceiver that buffers attributes and namespace events within a start tag.
It maintains details of the namespace context, and a full set of attribute information, on behalf
of other filters that need access to namespace information or need to process attributes in arbitrary
order.
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.
void | attribute(int nameCode, int typeCode, CharSequence value, int locationId, int properties) - Notify an attribute.
|
protected void | declareAllNamespaces()
|
protected void | declareNamespacesForStartElement()
|
void | endDocument() - Notify the end of a document node
|
void | endElement() - endElement: Discard the namespaces declared on this element.
|
String | getAttribute(int nameCode) - Get the value of the current attribute with a given nameCode
|
int | getElementNameCode() - Get the name of the current element
|
protected short | getURICode(short prefixCode) - Get the URI code corresponding to a given prefix code, by searching the
in-scope namespaces.
|
String | getURIForPrefix(String prefix, boolean useDefault) - Get the namespace URI corresponding to a given prefix.
|
boolean | hasAttributes() - Determine if the current element has any attributes
|
Iterator | iteratePrefixes() - Get an iterator over all the prefixes declared in this namespace context.
|
void | namespace(int namespaceCode, int properties) - Notify a namespace.
|
void | setPipelineConfiguration(PipelineConfiguration config) - 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(int nameCode, int typeCode, int locationId, int properties) - startElement
|
protected void | undeclareNamespacesForElement()
|
append , attribute , characters , close , comment , endDocument , endElement , getConfiguration , getDocumentLocator , getNamePool , getUnderlyingReceiver , namespace , open , processingInstruction , setPipelineConfiguration , setSystemId , setUnderlyingReceiver , setUnparsedEntity , startContent , startDocument , startElement |
attribute
public void attribute(int nameCode,
int typeCode,
CharSequence value,
int locationId,
int properties)
throws XPathException
Notify an attribute. Attributes are notified after the startElement event, and before any
children. Namespaces and attributes may be intermingled.
- attribute in interface Receiver
- attribute in interface ProxyReceiver
nameCode
- 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:
declareAllNamespaces
protected void declareAllNamespaces()
throws XPathException
declareNamespacesForStartElement
protected void declareNamespacesForStartElement()
throws XPathException
getAttribute
public String getAttribute(int nameCode)
Get the value of the current attribute with a given nameCode
nameCode
- the name of the required attribute
- the attribute value, or null if the attribute is not present
getElementNameCode
public int getElementNameCode()
Get the name of the current element
- the namepool namecode of the element
getURICode
protected short getURICode(short prefixCode)
Get the URI code corresponding to a given prefix code, by searching the
in-scope namespaces. This is a service provided to subclasses.
prefixCode
- the 16-bit prefix code required
- the 16-bit URI code, or -1 if the prefix is not bound to any namespace
getURIForPrefix
public String getURIForPrefix(String prefix,
boolean useDefault)
Get the namespace URI corresponding to a given prefix. Return null
if the prefix is not in scope.
- getURIForPrefix in interface NamespaceResolver
prefix
- the namespace prefixuseDefault
- true if the default namespace is to be used when the
prefix is ""
- the uri for the namespace, or null if the prefix is not in scope
hasAttributes
public boolean hasAttributes()
Determine if the current element has any attributes
- true if the element has one or more attributes
iteratePrefixes
public Iterator iteratePrefixes()
Get an iterator over all the prefixes declared in this namespace context. This will include
the default namespace (prefix="") and the XML namespace where appropriate
- iteratePrefixes in interface NamespaceResolver
namespace
public void namespace(int namespaceCode,
int properties)
throws XPathException
Notify a namespace. Namespaces are notified after the startElement event, and before
any children for the element. The namespaces that are reported are only required
to include those that are different from the parent element; however, duplicates may be reported.
A namespace must not conflict with any namespaces already used for element or attribute names.
- namespace in interface Receiver
- namespace in interface ProxyReceiver
namespaceCode
- an integer: the top half is a prefix code, the bottom half a URI code.
These may be translated into an actual prefix and URI using the name pool. A prefix code of
zero represents the empty prefix (that is, the default namespace). A URI code of zero represents
a URI of "", that is, a namespace undeclaration.
undeclareNamespacesForElement
protected void undeclareNamespacesForElement()