You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
274 lines
8.6 KiB
274 lines
8.6 KiB
/*
|
|
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
|
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
|
*/
|
|
/*
|
|
* Copyright 2000-2002,2004 The Apache Software Foundation.
|
|
*
|
|
* Licensed 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
|