/* |
|
* reserved comment block |
|
* DO NOT REMOVE OR ALTER! |
|
*/ |
|
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
|
* contributor license agreements. See the NOTICE file distributed with |
|
* this work for additional information regarding copyright ownership. |
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
|
* (the "License"); you may not use this file except in compliance with |
|
* the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
package com.sun.org.apache.xerces.internal.xni; |
|
import com.sun.org.apache.xerces.internal.xni.parser.XMLDTDContentModelSource; |
|
/** |
|
* The DTD content model handler interface defines callback methods |
|
* to report information items in DTD content models of an element |
|
* declaration. Parser components interested in DTD content model |
|
* information implement this interface and are registered as the DTD |
|
* content model handler on the DTD content model source. |
|
* |
|
* @see XMLDTDHandler |
|
* |
|
* @author Andy Clark, IBM |
|
* |
|
*/ |
|
public interface XMLDTDContentModelHandler { |
|
// |
|
// Constants |
|
// |
|
// separators |
|
/** |
|
* A choice separator for children and mixed content models. This |
|
* separator is used to specify that the allowed child is one of a |
|
* collection. |
|
* <p> |
|
* For example: |
|
* <pre> |
|
* <!ELEMENT elem (foo|bar)> |
|
* <!ELEMENT elem (foo|bar+)> |
|
* <!ELEMENT elem (foo|bar|baz)> |
|
* <!ELEMENT elem (#PCDATA|foo|bar)*> |
|
* </pre> |
|
* |
|
* @see #SEPARATOR_SEQUENCE |
|
*/ |
|
public static final short SEPARATOR_CHOICE = 0; |
|
/** |
|
* A sequence separator for children content models. This separator |
|
* is used to specify that the allowed children must follow in the |
|
* specified sequence. |
|
* <p> |
|
* <pre> |
|
* <!ELEMENT elem (foo,bar)> |
|
* <!ELEMENT elem (foo,bar*)> |
|
* <!ELEMENT elem (foo,bar,baz)> |
|
* </pre> |
|
* |
|
* @see #SEPARATOR_CHOICE |
|
*/ |
|
public static final short SEPARATOR_SEQUENCE = 1; |
|
// occurrence counts |
|
/** |
|
* This occurrence count limits the element, choice, or sequence in a |
|
* children content model to zero or one. In other words, the child |
|
* is optional. |
|
* <p> |
|
* For example: |
|
* <pre> |
|
* <!ELEMENT elem (foo?)> |
|
* </pre> |
|
* |
|
* @see #OCCURS_ZERO_OR_MORE |
|
* @see #OCCURS_ONE_OR_MORE |
|
*/ |
|
public static final short OCCURS_ZERO_OR_ONE = 2; |
|
/** |
|
* This occurrence count limits the element, choice, or sequence in a |
|
* children content model to zero or more. In other words, the child |
|
* may appear an arbitrary number of times, or not at all. This |
|
* occurrence count is also used for mixed content models. |
|
* <p> |
|
* For example: |
|
* <pre> |
|
* <!ELEMENT elem (foo*)> |
|
* <!ELEMENT elem (#PCDATA|foo|bar)*> |
|
* </pre> |
|
* |
|
* @see #OCCURS_ZERO_OR_ONE |
|
* @see #OCCURS_ONE_OR_MORE |
|
*/ |
|
public static final short OCCURS_ZERO_OR_MORE = 3; |
|
/** |
|
* This occurrence count limits the element, choice, or sequence in a |
|
* children content model to one or more. In other words, the child |
|
* may appear an arbitrary number of times, but must appear at least |
|
* once. |
|
* <p> |
|
* For example: |
|
* <pre> |
|
* <!ELEMENT elem (foo+)> |
|
* </pre> |
|
* |
|
* @see #OCCURS_ZERO_OR_ONE |
|
* @see #OCCURS_ZERO_OR_MORE |
|
*/ |
|
public static final short OCCURS_ONE_OR_MORE = 4; |
|
// |
|
// XMLDTDContentModelHandler methods |
|
// |
|
/** |
|
* The start of a content model. Depending on the type of the content |
|
* model, specific methods may be called between the call to the |
|
* startContentModel method and the call to the endContentModel method. |
|
* |
|
* @param elementName The name of the element. |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
*/ |
|
public void startContentModel(String elementName, Augmentations augmentations) |
|
throws XNIException; |
|
/** |
|
* A content model of ANY. |
|
* |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
* |
|
* @see #empty |
|
* @see #startGroup |
|
*/ |
|
public void any(Augmentations augmentations) throws XNIException; |
|
/** |
|
* A content model of EMPTY. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
* |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @see #any |
|
* @see #startGroup |
|
*/ |
|
public void empty(Augmentations augmentations) throws XNIException; |
|
/** |
|
* A start of either a mixed or children content model. A mixed |
|
* content model will immediately be followed by a call to the |
|
* <code>pcdata()</code> method. A children content model will |
|
* contain additional groups and/or elements. |
|
* |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
* |
|
* @see #any |
|
* @see #empty |
|
*/ |
|
public void startGroup(Augmentations augmentations) throws XNIException; |
|
/** |
|
* The appearance of "#PCDATA" within a group signifying a |
|
* mixed content model. This method will be the first called |
|
* following the content model's <code>startGroup()</code>. |
|
* |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
* |
|
* @see #startGroup |
|
*/ |
|
public void pcdata(Augmentations augmentations) throws XNIException; |
|
/** |
|
* A referenced element in a mixed or children content model. |
|
* |
|
* @param elementName The name of the referenced element. |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
*/ |
|
public void element(String elementName, Augmentations augmentations) |
|
throws XNIException; |
|
/** |
|
* The separator between choices or sequences of a mixed or children |
|
* content model. |
|
* |
|
* @param separator The type of children separator. |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
* |
|
* @see #SEPARATOR_CHOICE |
|
* @see #SEPARATOR_SEQUENCE |
|
*/ |
|
public void separator(short separator, Augmentations augmentations) |
|
throws XNIException; |
|
/** |
|
* The occurrence count for a child in a children content model or |
|
* for the mixed content model group. |
|
* |
|
* @param occurrence The occurrence count for the last element |
|
* or group. |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
* |
|
* @see #OCCURS_ZERO_OR_ONE |
|
* @see #OCCURS_ZERO_OR_MORE |
|
* @see #OCCURS_ONE_OR_MORE |
|
*/ |
|
public void occurrence(short occurrence, Augmentations augmentations) |
|
throws XNIException; |
|
/** |
|
* The end of a group for mixed or children content models. |
|
* |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
*/ |
|
public void endGroup(Augmentations augmentations) throws XNIException; |
|
/** |
|
* The end of a content model. |
|
* |
|
* @param augmentations Additional information that may include infoset |
|
* augmentations. |
|
* |
|
* @throws XNIException Thrown by handler to signal an error. |
|
*/ |
|
public void endContentModel(Augmentations augmentations) throws XNIException; |
|
// set content model source |
|
public void setDTDContentModelSource(XMLDTDContentModelSource source); |
|
// get content model source |
|
public XMLDTDContentModelSource getDTDContentModelSource(); |
|
} // interface XMLDTDContentModelHandler |