|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ctc.wstx.sr.InputElementStack
public final class InputElementStack
Shared base class that defines API stream reader uses to communicate with the element stack implementation, independent of whether it's operating in namespace-aware or non-namespace modes. Element stack class is used for storing nesting information about open elements, and for namespace-aware mode, also information about namespaces active (including default namespace), during parsing of XML input.
This class also implements NamespaceContext
, since it has all
the information necessary, so parser can just return element stack
instance as necesary.
Field Summary | |
---|---|
protected AttributeCollector |
mAttrCollector
|
protected ReaderConfig |
mConfig
|
protected com.ctc.wstx.sr.Element |
mCurrElement
Currently open element, if any; null outside root element. |
protected int |
mDepth
|
protected com.ctc.wstx.sr.Element |
mFreeElement
|
protected int |
mIdAttrIndex
Index of the attribute with type of ID, if known (most likely due to Xml:id support); -1 if not available, or no ID attribute for current element. |
protected String |
mLastLocalName
|
protected QName |
mLastName
|
protected BaseNsContext |
mLastNsContext
Last potentially shareable NamespaceContext created by this stack. |
protected String |
mLastNsURI
|
protected String |
mLastPrefix
|
protected boolean |
mMayHaveNsDefaults
|
protected StringVector |
mNamespaces
Vector that contains all currently active namespaces; one String for prefix, another for matching URI. |
protected boolean |
mNsAware
|
protected NsDefaultProvider |
mNsDefaultProvider
Object that will need to be consulted about namespace bindings, since it has some knowledge about default namespace declarations (has default attribute value expansion). |
protected InputProblemReporter |
mReporter
|
protected XMLValidator |
mValidator
Optional validator object that will get called if set, and that can validate xml content. |
Constructor Summary | |
---|---|
protected |
InputElementStack(ReaderConfig cfg,
boolean nsAware)
|
Method Summary | |
---|---|
int |
addDefaultAttribute(String localName,
String uri,
String prefix,
String value)
Method called by actual validator instances when attributes with default values have no explicit values for the element; if so, default value needs to be added as if it was parsed from the element. |
void |
addNsBinding(String prefix,
String uri)
Callback method called by the namespace default provider. |
protected XMLValidator |
addValidator(XMLValidator vld)
|
protected void |
connectReporter(InputProblemReporter rep)
|
BaseNsContext |
createNonTransientNsContext(Location loc)
Method called to construct a non-transient NamespaceContext instance; generally needed when creating events to return from event-based iterators. |
int |
findAttributeIndex(String nsURI,
String localName)
|
AttributeCollector |
getAttrCollector()
Method called by BasicStreamReader , to retrieve the
attribute collector it needs for some direct access. |
int |
getAttributeCount()
This method returns number of attributes accessible from within currently active start element. |
String |
getAttributeLocalName(int index)
|
String |
getAttributeNamespace(int index)
|
String |
getAttributePrefix(int index)
|
String |
getAttributeType(int index)
|
String |
getAttributeValue(int index)
|
String |
getAttributeValue(String nsURI,
String localName)
|
String |
getBaseUri()
|
QName |
getCurrentElementName()
Method that can be used to access name information of the innermost (top) element in the element stack. |
int |
getCurrentNsCount()
|
String |
getDefaultNsURI()
|
int |
getDepth()
|
int |
getIdAttributeIndex()
Default implementation just indicates it does not know of such attributes; this because that requires DTD information that only some implementations have. |
String |
getLocalName()
|
String |
getLocalNsPrefix(int index)
|
String |
getLocalNsURI(int index)
|
String |
getNamespaceURI(String prefix)
Method that can be called by the validator to resolve a namespace prefix of the currently active top-level element. |
int |
getNotationAttributeIndex()
Default implementation just indicates it does not know of such attributes; this because that requires DTD information that only some implementations have. |
String |
getNsURI()
|
String |
getPrefix()
|
String |
getPrefix(String nsURI)
|
Iterator |
getPrefixes(String nsURI)
|
String |
getTopElementDesc()
|
int |
getTotalNsCount()
|
Location |
getValidationLocation()
Method that will return the location that best represents current location within document to be validated, if such information is available. |
String |
getXmlVersion()
Method that validator can call to figure out which xml version document being validated declared (if none, "1.0" is assumed as per xml specifications 1.0 and 1.1). |
boolean |
isEmpty()
|
boolean |
isNamespaceAware()
|
boolean |
isNotationDeclared(String name)
|
boolean |
isPrefixLocallyDeclared(String internedPrefix)
|
boolean |
isUnparsedEntityDeclared(String name)
|
boolean |
matches(String prefix,
String localName)
|
boolean |
pop()
Method called by the stream reader to remove the topmost (start) element from the stack; called when an end element is encountered during parsing. |
void |
push(String prefix,
String localName)
Method called by the stream reader to add new (start) element into the stack in namespace-aware mode; called when a start element is encountered during parsing, but only in ns-aware mode. |
protected boolean |
reallyValidating()
This is a method called by the reader to ensure that we have at least one 'real' validator. |
void |
reportProblem(XMLValidationProblem problem)
Method called by the validator, upon encountering a validation problem. |
int |
resolveAndValidateElement()
Method called to resolve element and attribute namespaces (in namespace-aware mode), and do optional validation using pluggable validator object. |
protected void |
setAutomaticDTDValidator(XMLValidator validator,
NsDefaultProvider nsDefs)
Method called to connect the automatically handled DTD validator (one detected from DOCTYPE, loaded and completely handled by the stream reader without application calling validation methods). |
XMLValidator |
stopValidatingAgainst(XMLValidationSchema schema)
|
XMLValidator |
stopValidatingAgainst(XMLValidator validator)
|
XMLValidator |
validateAgainst(XMLValidationSchema schema)
|
int |
validateEndElement()
Method called after parsing (but before returning) end element, to allow for pluggable validators to verify correctness of the content model for the closing element. |
void |
validateText(String contents,
boolean lastTextSegment)
|
void |
validateText(TextBuffer tb,
boolean lastTextSegment)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final boolean mNsAware
protected final AttributeCollector mAttrCollector
protected final ReaderConfig mConfig
protected InputProblemReporter mReporter
protected NsDefaultProvider mNsDefaultProvider
protected int mDepth
protected final StringVector mNamespaces
protected com.ctc.wstx.sr.Element mCurrElement
protected boolean mMayHaveNsDefaults
protected XMLValidator mValidator
protected int mIdAttrIndex
protected String mLastLocalName
protected String mLastPrefix
protected String mLastNsURI
protected QName mLastName
protected BaseNsContext mLastNsContext
protected com.ctc.wstx.sr.Element mFreeElement
Constructor Detail |
---|
protected InputElementStack(ReaderConfig cfg, boolean nsAware)
Method Detail |
---|
protected void connectReporter(InputProblemReporter rep)
protected XMLValidator addValidator(XMLValidator vld)
protected void setAutomaticDTDValidator(XMLValidator validator, NsDefaultProvider nsDefs)
public XMLValidator validateAgainst(XMLValidationSchema schema) throws XMLStreamException
XMLStreamException
public XMLValidator stopValidatingAgainst(XMLValidationSchema schema) throws XMLStreamException
XMLStreamException
public XMLValidator stopValidatingAgainst(XMLValidator validator) throws XMLStreamException
XMLStreamException
protected boolean reallyValidating()
DTDValidatorBase
or returns true for
reallyValidating
.
!!! TODO: remove need for this method (and method itself) with Woodstox 4.0, by adding necessary support in Stax2 XMLValidator interface.
public final AttributeCollector getAttrCollector()
BasicStreamReader
, to retrieve the
attribute collector it needs for some direct access.
public BaseNsContext createNonTransientNsContext(Location loc)
public final void push(String prefix, String localName)
public final boolean pop() throws XMLStreamException
XMLStreamException
public int resolveAndValidateElement() throws XMLStreamException
XMLStreamException
public int validateEndElement() throws XMLStreamException
XMLStreamException
public final int getAttributeCount()
ValidationContext
Note: this method is only guaranteed to be callable during execution
of XMLValidator
methods
XMLValidator.validateElementStart(java.lang.String, java.lang.String, java.lang.String)
,
XMLValidator.validateAttribute(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
and
XMLValidator.validateElementAndAttributes()
. At other times
implementations may choose to allow it to be called (for example,
with information regarding last start element processed), to throw
a IllegalArgumentException
, or to return 0 to indicate no
attribute information is available.
Also note that whether defaulted attributes (attributes for which values are only available via attribute defaulting) are accessible depends on exact time when this method is called, and in general can not be assumed to function reliably.
getAttributeCount
in interface AttributeInfo
getAttributeCount
in interface ValidationContext
public final int findAttributeIndex(String nsURI, String localName)
findAttributeIndex
in interface AttributeInfo
findAttributeIndex
in interface ValidationContext
public final int getIdAttributeIndex()
getIdAttributeIndex
in interface AttributeInfo
public final int getNotationAttributeIndex()
getNotationAttributeIndex
in interface AttributeInfo
public final String getNamespaceURI(String prefix)
ValidationContext
getNamespaceURI
in interface NamespaceContext
getNamespaceURI
in interface ValidationContext
public final String getPrefix(String nsURI)
getPrefix
in interface NamespaceContext
public final Iterator getPrefixes(String nsURI)
getPrefixes
in interface NamespaceContext
public final String getXmlVersion()
ValidationContext
getXmlVersion
in interface ValidationContext
public String getAttributeLocalName(int index)
getAttributeLocalName
in interface ValidationContext
public String getAttributeNamespace(int index)
getAttributeNamespace
in interface ValidationContext
public String getAttributePrefix(int index)
getAttributePrefix
in interface ValidationContext
public String getAttributeValue(int index)
getAttributeValue
in interface ValidationContext
public String getAttributeValue(String nsURI, String localName)
getAttributeValue
in interface ValidationContext
public boolean isNotationDeclared(String name)
isNotationDeclared
in interface ValidationContext
public boolean isUnparsedEntityDeclared(String name)
isUnparsedEntityDeclared
in interface ValidationContext
public String getBaseUri()
getBaseUri
in interface ValidationContext
public final QName getCurrentElementName()
ValidationContext
getCurrentElementName
in interface ValidationContext
public Location getValidationLocation()
ValidationContext
Note: it is likely that even when a location is known, it may not be very accurate; for example, when attributes are validated, it is possible that they all would point to a single location that may point to the start of the element that contains attributes.
getValidationLocation
in interface ValidationContext
public void reportProblem(XMLValidationProblem problem) throws XMLStreamException
ValidationContext
ValidationProblemHandler
be set by the application,
to define handling.
Note: Stax2 version 2 only allowed throwing instances
of XMLValidationProblem
; version 3 allows generic
base class to be thrown, to support other interfaces such
as basic Stax interface XMLReporter
.
reportProblem
in interface ValidationContext
XMLStreamException
public int addDefaultAttribute(String localName, String uri, String prefix, String value)
addDefaultAttribute
in interface ValidationContext
public boolean isPrefixLocallyDeclared(String internedPrefix)
public void addNsBinding(String prefix, String uri)
public final void validateText(TextBuffer tb, boolean lastTextSegment) throws XMLStreamException
XMLStreamException
public final void validateText(String contents, boolean lastTextSegment) throws XMLStreamException
XMLStreamException
public final boolean isNamespaceAware()
public final boolean isEmpty()
public final int getDepth()
public final String getDefaultNsURI()
public final String getNsURI()
public final String getPrefix()
public final String getLocalName()
public final boolean matches(String prefix, String localName)
public final String getTopElementDesc()
public final int getTotalNsCount()
public final int getCurrentNsCount()
public final String getLocalNsPrefix(int index)
public final String getLocalNsURI(int index)
public final String getAttributeType(int index)
getAttributeType
in interface ValidationContext
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |