package org.eclipse.wst.xsl.core.internal.ant;

import org.eclipse.osgi.util.NLS;

/**
 * The XInclude message properties for string externalization
 * @author dcarver
 *
 */
public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.wst.xsl.core.internal.ant.messages"; //$NON-NLS-1$
	/**
	 * 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;
	
	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	private Messages() {
	}
}
