###############################################################################
# Copyright (c) 2007 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
###############################################################################

#
#  NVDLReader Error Messages
#

NVDLReader.XSDBooleanError=`{0}'' must be true (1) or false (0).

NVDLReader.RuleConflictsError=The rule `{0}'' conflicts with `{1}''.

NVDLReader.NestedModeAndUseModeError=The nested mode is not allowed \
                                     when `useMode'' attribute is specified.

NVDLReader.DuplicatedNestedModeError=The nested mode is defined duplicatedly.

NVDLReader.InvalidMatchTargetError=The `match'' attribute:`{0}'' is invalid. \
                                   It must consists of `elements'' or `attributes''.

NVDLReader.WildCardOneCharError=The `wildCard'' attribute:`{0}'' is invalid. \
                                It must be one character.

NVDLReader.OneResultActionError={0} is not allowed here since \
                                any result action (`attach'', `unwrap'', or `attachPlaceHolder'') \
                                must be only one for each `namespace or `anyNamespace'' element.

NVDLReader.CancelNestedActionsError=`{0}'' is not allowed here since `cancelNestedActions'' does not allow any other actions.

NVDLReader.NoActionError=At least one action is required.

NVDLReader.OptionBeforeSchemaError=The `option'' element must be put before `schema'', `mode'' or `context'' elements.

NVDLReader.OptionHasNameError=The `option'' element must have `name'' attribute.

NVDLReader.SchemaAttributeSpecifiedError=The `schema'' element is not allowed here since this `validate'' element has a `schema'' attribute.

NVDLReader.SchemaBeforeModeOrContextError=`schema'' element must be put before `mode'' or `context'' elements.

NVDLReader.ValidateHasSchemaError=`validate'' element must have `schema'' attribute or element.

NVDLReader.MessageBeforeSchemaError=`message'' element must be put before `schema'', `mode'' or `context'' elements.

NVDLReader.ModeBeforeContextError=`mode'' element must be put before `context'' elements.

NVDLReader.SchemaReadError=Failed to interpret the schema specified.

NVDLReader.ContextHasPathError=`context'' element must have one `path'' attribute.

NVDLReader.ContextHasModeButUseModeIsSpecifiedError=`mode'' element is not allowed here \
              since `useMode'' attribute is already specified in this `context'' element.

NVDLReader.ContextHasUseModeOrModeError=`context'' element must have a `useMode'' attribute or `mode'' element.

NVDLReader.TriggerHasNSError=`trigger'' element must has `ns'' attribute.

NVDLReader.TriggerIsFirstErrorr=`trigger'' elements must be put first in `rules'' element.

NVDLReader.ModeIsAfterRuleError=`mode'' element cannot be specified \
                                after `namespace'' or `anyNamespace'' elements in `rules'' element.

NVDLReader.RuleIsAfterModeError=`{0}'' element cannot be specified \
                                after `mode'' elements in `rules'' element.

NVDLReader.TriggerHasNameListError=`trigger'' element must has `nameList'' attribute.

NVDLReader.StartModeError=When the `rules'' element has a `startMode'' attribute, \
                          it must have no `namespace'' or `anyNamespace'' element directly.

NVDLReader.ModeInRulesHasName=Any `mode'' element of `rules'' element must have `name'' attribute.

NVDLReader.ModeNameConflictError=mode:`{0}'' has already been defined.

NVDLReader.IncludedModeAfterRuleError=`mode'' in `mode'' element (included mode) must be put before `namespace'' or `anyNamespace'' elements.

NVDLReader.DocumentElementIsRulesError=The document element must be `rules'' of NVDL namespace (http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0) but it is '{'{0}'}'{1}.

NVDLReader.UnallowedElementError=The element '{'{0}'}'{1} is not allowed here.

NVDLReader.UnallowedAttributeError=The attributes `{0}'' is not allowed here.

NVDLReader.UnallowedCharactersError=The characters `{0}'' is not allowed here.

NVDLReader.NVDLHasError=The NVDL file has {0,number,integer} error(s).

NVDLReader.SchemaImplementationNotFoundError=No appropriate validator implementation for {0}

NVDLSimplifier.ModeIsNotDefinedError=The mode `{0}'' is not defined.

NVDLSimplifier.RulesHasNoStartModeError=`rules'' element must have `startMode'' attribute \
                                        when it has no `namespace'' or `anyNamespace'' element.

NVDLSimplifier.StartModeIsNotDefinedError=StartMode `{0}'' is not defined.

SchemaLoader.OpenSchemaIOError=I/O error occured while trying to open a schema.\n\
Reason: {0}

SchemaLoader.SchemaTypeDetectionError=Failed to detect the schema type in {0}.

#

SnRNV.Usage=SnRNV: <options> <nvdl file> <instance XML file>\n\
\ \ \ Options:\n\
\ \ \ \ \ -p <DIRECTORY> : dispatch mode.  The validation candidates are saved in <DIRECTORY>.\n\
\ \ \ \ \ -r <DIRECTORY> : reconstruction mode.\n\
\ \ \ \ \ -q : quiet mode.  It outputs minimum messages.\n\
\ \ \ \ \ -d : debug mode.  This prints dispatching details.\n\
\ \ \ \ \ -locale <LOCALE> : Set the current locale to <LOCALE>\n\

SnRNV.LocaleRequireArgumentError=-locale option requires a "locale" as an arguemnt \
                                 (e.g. en, en_US).

SnRNV.TargetDirectoryNotSpecifiedError=The target directory is not specified.

SnRNV.InvalidOptionError=Invalid option: {0}

ValidationDriver.OpenNVDLFile=Open the NVDL file: {0}

ValidationDriver.ValidateInstanceFile=Validate the instance file: {0}

ValidationDriver.Success={0} is a valid XML document.

ValidationDriver.Error={0,number,integer} errors in {1}
