#	 ***************************************************************
#	 * Licensed to the Apache Software Foundation (ASF) under one
#	 * or more contributor license agreements.  See the NOTICE file
#	 * distributed with this work for additional information
#	 * regarding copyright ownership.  The ASF licenses this file
#	 * to you 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.
#	 ***************************************************************

# Note: this file contains messages relating to external CAS representations
#       both *XCAS* and *XMI-CAS*

WRONG_ROOT_TAG = Error parsing XCAS from source {0} at line {1}, column {2}: expected <CAS> root tag but found: <{3}>.
TEXT_EXPECTED = Error parsing XCAS from source {0} at line {1}, column {2}: expected text but found element: <{3}>.
ARRAY_ELE_EXPECTED = Error parsing XCAS from source {0} at line {1}, column {2}: expected array element <i> but found: <{3}>.
ARRAY_ELE_ATTRS = Error parsing XCAS from source {0} at line {1}, column {2}: array element <i> may not have attributes.
UNKNOWN_TYPE = Error parsing XCAS from source {0} at line {1}, column {2}: unknown type: {3}.
ILLEGAL_ID = Error parsing XCAS from source {0} at line {1}, column {2}: value of _id attribute must be integer, but is: {3}.
ILLEGAL_ARRAY_SIZE = Error parsing XCAS from source {0} at line {1}, column {2}: size of array must be >= 0, but is: {3}.
ILLEGAL_ARRAY_ATTR = Error parsing XCAS from source {0} at line {1}, column {2}: unknown attribute for array type: {3}.
UNKNOWN_FEATURE = Error parsing XCAS from source {0} at line {1}, column {2}: unknown feature: {3}.
INTEGER_EXPECTED = Error parsing XCAS from source {0} at line {1}, column {2}: expected integer value, but found: {3}.
FLOAT_EXPECTED = Error parsing XCAS from source {0} at line {1}, column {2}: expected float value, but found: {3}.
EXCESS_ARRAY_ELE = Error parsing XCAS from source {0} at line {1}, column {2}: number of array elements exceeds specified array size.
UNKNOWN_ID = Error parsing XMI-CAS from source {0} at line {1}, column {2}: xmi id {3} is referenced but not defined.
