org.apache.xerces.framework
Class XMLContentSpecNode

java.lang.Object
  |
  +--org.apache.xerces.framework.XMLContentSpecNode

public final class XMLContentSpecNode
extends java.lang.Object

This class is used by the DTD scanner and the validator classes, allowing them to be used separately or together. This "struct" class is used to build content models for validation, where it is more efficient to fetch all of the information for each of these content model "fragments" than to fetch each field one at a time. Since configurations are allowed to have validators without a DTD scanner (i.e. a schema validator) and a DTD scanner without a validator (non-validating processor), this class can be used by each without requiring the presence of the other. When processing element declarations, the DTD scanner will build up a representation of the content model using the node types that are defined here. Since a non-validating processor only needs to remember the type of content model declared (i.e. ANY, EMPTY, MIXED, or CHILDREN), it is free to discard the specific details of the MIXED and CHILDREN content models described using this class. In the typical case of a validating processor reading the grammar of the document from a DTD, the information about the content model declared will be preserved and later "compiled" into an efficient form for use during element validation. Each content spec node that is saved is assigned a unique index that is used as a handle for the "value" or "otherValue" fields of other content spec nodes. A leaf node has a "value" that is either an index in the string pool of the element type of that leaf, or a value of -1 to indicate the special "#PCDATA" leaf type used in a mixed content model. For a mixed content model, the content spec will be made up of leaf and choice content spec nodes, with an optional "zero or more" node. For example, the mixed content declaration "(#PCDATA)" would contain a single leaf node with a node value of -1. A mixed content declaration of "(#PCDATA|foo)*" would have a content spec consisting of two leaf nodes, for the "#PCDATA" and "foo" choices, a choice node with the "value" set to the index of the "#PCDATA" leaf node and the "otherValue" set to the index of the "foo" leaf node, and a "zero or more" node with the "value" set to the index of the choice node. If the content model has more choices, for example "(#PCDATA|a|b)*", then there will be more corresponding choice and leaf nodes, the choice nodes will be chained together through the "value" field with each leaf node referenced by the "otherValue" field. For element content models, there are sequence nodes and also "zero or one" and "one or more" nodes. The leaf nodes would always have a valid string pool index, as the "#PCDATA" leaf is not used in the declarations for element content models.

Version:
 

Field Summary
static int CONTENTSPECNODE_CHOICE
           
static int CONTENTSPECNODE_LEAF
           
static int CONTENTSPECNODE_ONE_OR_MORE
           
static int CONTENTSPECNODE_SEQ
           
static int CONTENTSPECNODE_ZERO_OR_MORE
           
static int CONTENTSPECNODE_ZERO_OR_ONE
           
 int otherValue
           
 int type
           
 int value
           
 
Constructor Summary
XMLContentSpecNode()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CONTENTSPECNODE_LEAF

public static final int CONTENTSPECNODE_LEAF

CONTENTSPECNODE_ZERO_OR_ONE

public static final int CONTENTSPECNODE_ZERO_OR_ONE

CONTENTSPECNODE_ZERO_OR_MORE

public static final int CONTENTSPECNODE_ZERO_OR_MORE

CONTENTSPECNODE_ONE_OR_MORE

public static final int CONTENTSPECNODE_ONE_OR_MORE

CONTENTSPECNODE_CHOICE

public static final int CONTENTSPECNODE_CHOICE

CONTENTSPECNODE_SEQ

public static final int CONTENTSPECNODE_SEQ

type

public int type

value

public int value

otherValue

public int otherValue
Constructor Detail

XMLContentSpecNode

public XMLContentSpecNode()


Copyright © 1999 Apache XML Project. All Rights Reserved.