// This file is part of TagSoup and is Copyright 2002-2008 by John Cowan.
//
// TagSoup is licensed under the Apache License,
// Version 2.0.  You may obtain a copy of this license at
// http://www.apache.org/licenses/LICENSE-2.0 .  You may also have
// additional legal rights not granted by this license.
//
// TagSoup is distributed in the hope that it will be useful, but
// unless required by applicable law or agreed to in writing, TagSoup
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
// OF ANY KIND, either express or implied; not even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// 
// 
// Defines models for HTMLSchema

/**
This interface contains generated constants representing HTML content
models.  Logically, it is part of HTMLSchema, but it is more
convenient to generate the constants into a separate interface.
*/

package org.ccil.cowan.tagsoup;
public interface HTMLModels {

	// Start of model definitions
	@@MODEL_DEFINITIONS@@

	// End of model definitions

	}
