Class DTDAttribute

java.lang.Object
com.ctc.wstx.dtd.DTDAttribute
Direct Known Subclasses:
DTDCdataAttr, DTDEntitiesAttr, DTDEntityAttr, DTDEnumAttr, DTDIdAttr, DTDIdRefAttr, DTDIdRefsAttr, DTDNmTokenAttr, DTDNmTokensAttr, DTDNotationAttr

public abstract class DTDAttribute extends Object
Base class for objects that contain attribute definitions from DTD. Sub-classes exists for specific typed attributes (enumeration-valued, non-CDATA ones); base class itself is used for attributes of type CDATA.
  • Field Details

    • CHAR_SPACE

      static final char CHAR_SPACE
      See Also:
    • TYPE_CDATA

      public static final int TYPE_CDATA
      See Also:
    • TYPE_ENUMERATED

      public static final int TYPE_ENUMERATED
      See Also:
    • TYPE_ID

      public static final int TYPE_ID
      See Also:
    • TYPE_IDREF

      public static final int TYPE_IDREF
      See Also:
    • TYPE_IDREFS

      public static final int TYPE_IDREFS
      See Also:
    • TYPE_ENTITY

      public static final int TYPE_ENTITY
      See Also:
    • TYPE_ENTITIES

      public static final int TYPE_ENTITIES
      See Also:
    • TYPE_NOTATION

      public static final int TYPE_NOTATION
      See Also:
    • TYPE_NMTOKEN

      public static final int TYPE_NMTOKEN
      See Also:
    • TYPE_NMTOKENS

      public static final int TYPE_NMTOKENS
      See Also:
    • sTypes

      static final String[] sTypes
      Array that has String constants matching above mentioned value types
    • mName

      protected final PrefixedName mName
    • mSpecialIndex

      protected final int mSpecialIndex
      Index number amongst "special" attributes (required ones, attributes that have default values), if attribute is one: -1 if not.
    • mDefValue

      protected final DefaultAttrValue mDefValue
    • mCfgNsAware

      protected final boolean mCfgNsAware
    • mCfgXml11

      protected final boolean mCfgXml11
  • Constructor Details

  • Method Details

    • cloneWith

      public abstract DTDAttribute cloneWith(int specIndex)
    • getName

      public final PrefixedName getName()
    • toString

      public final String toString()
      Overrides:
      toString in class Object
    • getDefaultValue

      public final String getDefaultValue(org.codehaus.stax2.validation.ValidationContext ctxt, org.codehaus.stax2.validation.XMLValidator dtd) throws XMLStreamException
      Throws:
      XMLStreamException
    • getSpecialIndex

      public final int getSpecialIndex()
    • needsValidation

      public final boolean needsValidation()
    • isFixed

      public final boolean isFixed()
    • isRequired

      public final boolean isRequired()
    • isSpecial

      public final boolean isSpecial()
      Method used by the element to figure out if attribute needs "special" checking; basically if it's required, and/or has a default value. In both cases missing the attribute has specific consequences, either exception or addition of a default value.
    • hasDefaultValue

      public final boolean hasDefaultValue()
    • getValueType

      public int getValueType()
      Returns the value type of this attribute as an enumerated int to match type (CDATA, ...)

      Note:

    • getValueTypeString

      public String getValueTypeString()
    • typeIsId

      public boolean typeIsId()
    • typeIsNotation

      public boolean typeIsNotation()
    • validate

      public abstract String validate(DTDValidatorBase v, char[] cbuf, int start, int end, boolean normalize) throws XMLStreamException
      Throws:
      XMLStreamException
    • validate

      public String validate(DTDValidatorBase v, String value, boolean normalize) throws XMLStreamException

      Note: the default implementation is not optimized, as it does a potentially unnecessary copy of the contents. It is expected that this method is seldom called (Woodstox never directly calls it; it only gets called for chained validators when one validator normalizes the value, and then following validators are passed a String, not char array)

      Throws:
      XMLStreamException
    • validateDefault

      public abstract void validateDefault(InputProblemReporter rep, boolean normalize) throws XMLStreamException
      Method called by the DTDValidator to ask attribute to verify that the default it has (if any) is valid for such type.
      Throws:
      XMLStreamException
    • normalize

      public String normalize(DTDValidatorBase v, char[] cbuf, int start, int end)
      Method called when no validation is to be done, but value is still to be normalized as much as it can. What this usually means is that all regular space (parser earlier on converts other white space to spaces, except for specific character entities; and these special cases are NOT to be normalized).

      The only exception is that CDATA will not do any normalization. But for now, let's implement basic functionality that CDTA instance will override

      Parameters:
      v - Validator that invoked normalization
      Returns:
      Normalized value as a String, if any changes were done; null if input was normalized
    • normalizeDefault

      public void normalizeDefault()
      Method called to do initial normalization of the default attribute value, without trying to verify its validity. Thus, it's called independent of whether we are fully validating the document.
    • validateDefaultName

      protected String validateDefaultName(InputProblemReporter rep, boolean normalize) throws XMLStreamException
      Throws:
      XMLStreamException
    • validateDefaultNames

      protected String validateDefaultNames(InputProblemReporter rep, boolean normalize) throws XMLStreamException
      Throws:
      XMLStreamException
    • validateDefaultNmToken

      protected String validateDefaultNmToken(InputProblemReporter rep, boolean normalize) throws XMLStreamException
      Throws:
      XMLStreamException
    • validateEnumValue

      public String validateEnumValue(char[] cbuf, int start, int end, boolean normalize, WordResolver res)
      Method called by validation/normalization code for enumeration-valued attributes, to trim specified attribute value (full normalization not needed -- called for values that CAN NOT have spaces inside; such values can not be legal), and then check whether it is included in set of words (tokens) passed in. If actual value was included, will return the normalized word (as well as store shared String locally); otherwise will return null.
    • findEntityDecl

      protected EntityDecl findEntityDecl(DTDValidatorBase v, char[] ch, int start, int len) throws XMLStreamException
      Throws:
      XMLStreamException
    • checkEntity

      protected void checkEntity(InputProblemReporter rep, String id, EntityDecl ent) throws XMLStreamException
      Throws:
      XMLStreamException
    • reportInvalidChar

      protected String reportInvalidChar(DTDValidatorBase v, char c, String msg) throws XMLStreamException
      Throws:
      XMLStreamException
    • reportValidationProblem

      protected String reportValidationProblem(DTDValidatorBase v, String msg) throws XMLStreamException
      Throws:
      XMLStreamException
    • reportValidationProblem

      protected String reportValidationProblem(InputProblemReporter rep, String msg) throws XMLStreamException
      Method called during parsing of DTD schema, to report a problem. Note that unlike during actual validation, we have no option of just gracefully listing problems and ignoring them; an exception is always thrown.
      Throws:
      XMLStreamException