###############################################################################
# Copyright (c) 2004 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 Corporation - initial API and implementation
###############################################################################
No_error._UI_=No error.
Undefined_attribute_name_(_ERROR_=Undefined attribute name ({0}).
Undefined_attribute_value__ERROR_=Undefined attribute value ({0}).
Multiple_values_specified__ERROR_=Multiple values specified for an attribute ({0}).
Attribute_name_({0})_uses__ERROR_=Attribute name ({0}) uses wrong case character.
Invalid_attribute_name_({0_ERROR_=Invalid attribute name ({0}).
Invalid_attribute_({0})._ERROR_=Invalid attribute ({0}).
Invalid_location_of_tag_({_ERROR_=Invalid location of tag ({0}).
Duplicate_tag_({0})._ERROR_=Duplicate tag ({0}).
No_start_tag_(<{0}>)._ERROR_=No start tag (<{0}>).
No_end_tag_(</{0}>)._ERROR_=No end tag (</{0}>).
End_tag_(</{0}>)_not_neede_ERROR_=End tag (</{0}>) not needed.
Unknown_tag_({0})._ERROR_=Unknown tag ({0}).
Tag_name_({0})_uses_wrong__ERROR_=Tag name ({0}) uses wrong case character.
Invalid_tag_name_({0})._ERROR_=Invalid tag name ({0}).
Invalid_JSP_directive_({0}_ERROR_=Invalid JSP directive ({0}).
Invalid_text_string_({0})._ERROR_=Invalid text string ({0}).
Invalid_character_used_in__ERROR_=Invalid character used in text string ({0}).
Unknown_error._ERROR_=Unknown error.
Start_tag_(<{0}>)_not_clos_ERROR_=Start tag (<{0}>) not closed.
End_tag_(</{0}>)_not_close_ERROR_=End tag (</{0}>) not closed.
Tag_({0})_not_closed._ERROR_=Tag ({0}) not closed.
Attribute_value_({0})_uses_ERROR_=Attribute value ({0}) uses wrong case character.
Comment_not_closed._ERROR_=Comment not closed.
DOCTYPE_declaration_not_cl_ERROR_=DOCTYPE declaration not closed.
Processing_instruction_not_ERROR_=Processing instruction not closed.
CDATA_section_not_closed._ERROR_=CDATA section not closed.
# From here, the new messages are added for V5
_ERROR_Tag_({0})_should_be_an_empty-element_tag_1=Tag ({0}) should be an empty-element tag.
_ERROR_Attribute_value_({0})_not_closed._1=Attribute value ({0}) not closed.
