#
# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

#
# Message resource file
#


AbstractReferenceFinderImpl.UnableToParse = "{0}"\uC758 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD560 \uC218 \uC5C6\uC74C: {1}



# {0} - schema location, {1} - (correct) schema location e.g.: "classpath:/foo/bar/Schema.xsd" is not a part of this compilation. Is this a mistake for "file:/bar/foo/Schema2.xsd"? OR "http://localhost:8080/MyService/TestService?wsdl" is not a part of this compilation. Is this a mistake for "http://localhost:8080/MyService/TestService?wsdl#types3"?
Internalizer.IncorrectSchemaReference = "{0}"\uC740(\uB294) \uC774 \uCEF4\uD30C\uC77C\uC5D0 \uC18D\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. "{1}"\uC744(\uB97C) \uC0AC\uC6A9\uD558\uB824\uACE0 \uD55C \uAC83\uC785\uB2C8\uAE4C?

Internalizer.XPathEvaluationError = XPath \uC624\uB958: {0}

# {0} - xpath location (location of element/node/... in XML) e.g.: XPath evaluation of "/foo/bar" needs to result in an element.
Internalizer.XPathEvaluatesToNoTarget = "{0}"\uC758 XPath \uD3C9\uAC00\uB85C \uBE48 \uB300\uC0C1 \uB178\uB4DC\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4.

# {0} - xpath location (location of element/node/... in XML) e.g.: XPath evaluation of "/foo/bar" needs to result in an element.
Internalizer.XPathEvaulatesToTooManyTargets = "{0}"\uC758 XPath \uD3C9\uAC00\uB85C \uB108\uBB34 \uB9CE\uC740 ({1}) \uB300\uC0C1 \uB178\uB4DC\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4.

# {0} - xpath location (location of element/node/... in XML) e.g.: XPath evaluation of "/foo/bar" needs to result in an element.
Internalizer.XPathEvaluatesToNonElement = "{0}"\uC758 XPath \uD3C9\uAC00\uB85C \uC694\uC18C\uAC00 \uC0DD\uC131\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.

Internalizer.XPathEvaluatesToNonSchemaElement = "{0}"\uC758 XPath \uD3C9\uAC00\uB85C \uC2A4\uD0A4\uB9C8 \uC5B8\uC5B4 \uC694\uC18C\uAC00 \uC0DD\uC131\uB418\uC5B4\uC57C \uD558\uC9C0\uB9CC {1}\uC774(\uAC00) \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4.

Internalizer.ContextNodeIsNotElement = \uCEE8\uD14D\uC2A4\uD2B8 \uB178\uB4DC\uAC00 \uC694\uC18C\uAC00 \uC544\uB2D9\uB2C8\uB2E4.

Internalizer.OrphanedCustomization = "{0}" \uC0AC\uC6A9\uC790 \uC815\uC758\uAC00 \uC2A4\uD0A4\uB9C8 \uC694\uC18C\uC640 \uC5F0\uAD00\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.

Internalizer.IncorrectVersion = JAXB \uBC84\uC804 \uC18D\uC131\uC740 "1.0"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.

Internalizer.VersionNotPresent = JAXB \uBC84\uC804 \uC18D\uC131\uC774 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.

Internalizer.TwoVersionAttributes = jaxb:version\uACFC version\uC774 \uC788\uC2B5\uB2C8\uB2E4.

ERR_GENERAL_SCHEMA_CORRECTNESS_ERROR = \uC2A4\uD0A4\uB9C8\uAC00 \uC815\uD655\uD55C\uC9C0 \uD655\uC778\uD560 \uC218 \uC5C6\uC74C: {0}

SCD_NOT_ENABLED = \uC2A4\uD0A4\uB9C8 \uAD6C\uC131 \uC694\uC18C \uC9C0\uC815\uC790 \uC9C0\uC6D0\uC740 \uAE30\uBCF8\uC801\uC73C\uB85C \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. -extension \uC2A4\uC704\uCE58\uB97C \uC0AC\uC6A9\uD558\uC5EC \uC774 \uACF5\uAE09\uC5C5\uCCB4 \uD655\uC7A5\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD558\uC2ED\uC2DC\uC624.

# SCD = Schema Component Designator.
ERR_SCD_EVAL = \uBD80\uC801\uD569\uD55C SCD: {0}

# SCD = Schema Component Designator.
ERR_SCD_EVALUATED_EMPTY = SCD "{0}"\uC774(\uAC00) \uC2A4\uD0A4\uB9C8 \uAD6C\uC131 \uC694\uC18C\uC640 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.

# SCD = Schema Component Designator.
ERR_SCD_MATCHED_MULTIPLE_NODES = SCD "{0}"\uC774(\uAC00) {1}\uAC1C\uC758 \uC2A4\uD0A4\uB9C8 \uAD6C\uC131 \uC694\uC18C\uC640 \uC77C\uCE58\uD558\uC9C0\uB9CC \uD55C \uAC1C\uB9CC \uD544\uC694\uD569\uB2C8\uB2E4.

# Not concatenated with any other string (written on a separate line) but printed after (and related to) ERR_SCD_MATCHED_MULTIPLE_NODES, followed by a line with the position of the problem in a particular file.
ERR_SCD_MATCHED_MULTIPLE_NODES_FIRST = (\uC704 \uC624\uB958\uC640 \uAD00\uB828\uB428) \uC77C\uCE58\uB41C \uC2A4\uD0A4\uB9C8 \uAD6C\uC131 \uC694\uC18C \uC911 \uD558\uB098\uAC00 \uC5EC\uAE30\uC5D0 \uC815\uC758\uB418\uC5C8\uC2B5\uB2C8\uB2E4.

# Not concatenated with any other string (written on a separate line) but printed after (related to ERR_SCD_MATCHED_MULTIPLE_NODES) ERR_SCD_MATCHED_MULTIPLE_NODES_FIRST, followed by a line with the position of the problem in a particular file.
ERR_SCD_MATCHED_MULTIPLE_NODES_SECOND = (\uC704 \uC624\uB958\uC640 \uAD00\uB828\uB428) \uC77C\uCE58\uB41C \uB2E4\uB978 \uC2A4\uD0A4\uB9C8 \uAD6C\uC131 \uC694\uC18C\uAC00 \uC5EC\uAE30\uC5D0 \uC815\uC758\uB418\uC5C8\uC2B5\uB2C8\uB2E4.

ERR_FILENAME_IS_NOT_URI = \uD30C\uC77C \uC774\uB984\uC774 URI\uAC00 \uC544\uB2D9\uB2C8\uB2E4.

DOMFOREST_INPUTSOURCE_IOEXCEPTION = "{0}"\uC744(\uB97C) \uCC98\uB9AC\uD558\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC608\uC678 \uC0AC\uD56D: {1}.
