/**********************************************************************
 * Copyright (c) 2005, 2008 IBM Corporation and others. All rights reserved.   This
 * program and the accompanying materials are made available under the terms of
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
 * available at http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: 
 * IBM - Initial API and implementation
 * Jesper Steen M�ller - adapted from org.eclipse.core.internal.content
 **********************************************************************/
package org.eclipse.wst.xsl.core;

import org.eclipse.osgi.util.NLS;

/**
 * @author Jesper Steen
 *
 */
// Runtime plugin message catalog

public class Messages extends NLS {

	private static final String BUNDLE_NAME = "org.eclipse.wst.xsl.core.messages"; //$NON-NLS-1$

	/**
	 * TODO: Add JavaDoc
	 */
	// Content type manager
	public static String XSLCorePlugin_parserConfiguration;

	/**
	 * TODO: Add JavaDoc
	 */
	public static String XSLCorePlugin_badInitializationData;

	/**
	 * TODO: Add JavaDoc
	 */
	public static String XSLCorePlugin_coreError;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_0;
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_1;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_2;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_3;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_4;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_5;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_6;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_7;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_8;
	
	/**
	 * TODO: Add JavaDoc
	 */
	public static String XIncludeTask_9;
	public static String XSLValidator_1;
	/**
	 * Stylesheet importing itself
	 */
	public static String XSLValidator_10;
	/**
	 * Template conflict (internal)
	 */
	public static String XSLValidator_11;
	/**
	 * Template conflict (included)
	 */
	public static String XSLValidator_12;
	/**
	 * Template conflict (external)
	 */
	public static String XSLValidator_13;
	/**
	 * Parameter missing name attribute
	 */
	public static String XSLValidator_14;
	/**
	 * Parameter with empty name attribute
	 */
	public static String XSLValidator_15;
	/**
	 * Duplicate parameter
	 */
	public static String XSLValidator_16;
	/**
	 * Unresolved named template
	 */
	public static String XSLValidator_18;
	/**
	 * Circular reference
	 */
	public static String XSLValidator_2;
	/**
	 * Parameter without default value
	 */
	public static String XSLValidator_20;
	/**
	 * Parameter does not exist
	 */
	public static String XSLValidator_22;
	/**
	 * href attribute is required
	 */
	public static String XSLValidator_23;
	/**
	 * Missing parameter
	 */
	public static String XSLValidator_3;
	/**
	 * Unresolved include
	 */
	public static String XSLValidator_4;
	/**
	 * Stylesheet includes itself
	 */
	public static String XSLValidator_6;
	/**
	 *  Unresolved import
	 */
	public static String XSLValidator_8;
	
	

	static {
		// load message values from bundle file
		reloadMessages();
	}

	/**
	 * TODO: Add JavaDoc
	 */
	public static void reloadMessages() {
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}
}