Class DTDElement

java.lang.Object
com.ctc.wstx.dtd.DTDElement

public final class DTDElement extends Object
Class that contains element definitions from DTD.

Notes about thread-safety: this class is not thread-safe, since it does not have to be, in general case. That is, the only instances that can be shared are external subset instances, and those are used in read-only manner (with the exception of temporary arrays constructed on-demand).

  • Method Details

    • createDefined

      public static DTDElement createDefined(ReaderConfig cfg, Location loc, PrefixedName name, StructValidator val, int allowedContent)
      Method called to create an actual element definition, matching an ELEMENT directive in a DTD subset.
    • createPlaceholder

      public static DTDElement createPlaceholder(ReaderConfig cfg, Location loc, PrefixedName name)
      Method called to create a "placeholder" element definition, needed to contain attribute definitions.
    • define

      public DTDElement define(Location loc, StructValidator val, int allowedContent)
      Method called on placeholder element, to create a real instance that has all attribute definitions placeholder had (it'll always have at least one -- otherwise no placeholder was needed).
    • defineFrom

      public void defineFrom(InputProblemReporter rep, DTDElement definedElem, boolean fullyValidate) throws XMLStreamException
      Method called to "upgrade" a placeholder using a defined element, including adding attributes.
      Throws:
      XMLStreamException
    • addAttribute

      public DTDAttribute addAttribute(InputProblemReporter rep, PrefixedName attrName, int valueType, DefaultAttrValue defValue, WordResolver enumValues, boolean fullyValidate) throws XMLStreamException
      Method called by DTD parser when it has read information about an attribute that belong to this element
      Returns:
      Newly created attribute Object if the attribute definition was added (hadn't been declared yet); null if it's a duplicate, in which case original definition sticks.
      Throws:
      XMLStreamException
    • addNsDefault

      public DTDAttribute addNsDefault(InputProblemReporter rep, PrefixedName attrName, int valueType, DefaultAttrValue defValue, boolean fullyValidate) throws XMLStreamException
      Method called to add a definition of a namespace-declaration pseudo-attribute with a default value.
      Parameters:
      rep - Reporter to use to report non-fatal problems
      fullyValidate - Whether this is being invoked for actual DTD validation, or just the "typing non-validator"
      Returns:
      Attribute that acts as the placeholder, if the declaration was added; null to indicate it was a dup (there was an earlier declaration)
      Throws:
      XMLStreamException
    • mergeMissingAttributesFrom

      public void mergeMissingAttributesFrom(InputProblemReporter rep, DTDElement other, boolean fullyValidate) throws XMLStreamException
      Throws:
      XMLStreamException
    • getName

      public PrefixedName getName()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getDisplayName

      public String getDisplayName()
    • getLocation

      public Location getLocation()
    • isDefined

      public boolean isDefined()
    • getAllowedContent

      public int getAllowedContent()
      Returns:
      Constant that identifies what kind of nodes are in general allowed inside this element.
    • getAllowedContentIfSpace

      public int getAllowedContentIfSpace()
      Specialized accessor used by non-validating but typing 'validator': essentially, used to figure out whether #PCDATA is allowed or not; and based on that, return one of 2 allowable text values (only space, or anything). This is the relevant subset in non-validating modes, needed to properly type resulting character events.
    • getAttributes

      public HashMap<PrefixedName,DTDAttribute> getAttributes()
    • getSpecialCount

      public int getSpecialCount()
    • getSpecialAttrs

      public List<DTDAttribute> getSpecialAttrs()
    • attrsNeedValidation

      public boolean attrsNeedValidation()
      Returns:
      True if at least one of the attributes has type other than CDATA; false if not
    • hasFixedAttrs

      public boolean hasFixedAttrs()
    • hasAttrDefaultValues

      public boolean hasAttrDefaultValues()
    • getIdAttribute

      public DTDAttribute getIdAttribute()
    • getNotationAttribute

      public DTDAttribute getNotationAttribute()
    • hasNsDefaults

      public boolean hasNsDefaults()
    • getValidator

      public StructValidator getValidator()
    • getNsDefaults

      protected HashMap<String,DTDAttribute> getNsDefaults()