#
# Copyright (c) 1997, 2011, 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}"\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093: {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}"\u306F\u3053\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u306E\u4E00\u90E8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002"{1}"\u306E\u8AA4\u308A\u3067\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002

Internalizer.XPathEvaluationError = XPath\u30A8\u30E9\u30FC: {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}"\u306EXPath\u8A55\u4FA1\u3067\u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30CE\u30FC\u30C9\u304C\u7A7A\u3068\u306A\u308A\u307E\u3057\u305F

# {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}"\u306EXPath\u8A55\u4FA1\u3067\u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30CE\u30FC\u30C9\u304C\u591A\u304F\u306A\u308A\u3059\u304E\u307E\u3057\u305F({1})

# {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}"\u306EXPath\u8A55\u4FA1\u3067\u306F\u8981\u7D20\u3068\u306A\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002

Internalizer.XPathEvaluatesToNonSchemaElement = "{0}"\u306EXPath\u8A55\u4FA1\u3067\u306F\u30B9\u30AD\u30FC\u30DE\u8A00\u8A9E\u306E\u8981\u7D20\u3068\u306A\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u304C\u3001{1}\u3068\u306A\u308A\u307E\u3057\u305F

Internalizer.ContextNodeIsNotElement = \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30CE\u30FC\u30C9\u306F\u8981\u7D20\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002

Internalizer.OrphanedCustomization = "{0}"\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u306F\u30B9\u30AD\u30FC\u30DE\u8981\u7D20\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093\u3002

Internalizer.IncorrectVersion = JAXB\u306Eversion\u5C5E\u6027\u306F"1.0"\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059

Internalizer.VersionNotPresent = JAXB\u306Eversion\u5C5E\u6027\u304C\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059

Internalizer.TwoVersionAttributes = jaxb:version\u3068version\u306E\u4E21\u65B9\u304C\u5B58\u5728\u3057\u307E\u3059

ERR_GENERAL_SCHEMA_CORRECTNESS_ERROR = \u30B9\u30AD\u30FC\u30DE\u304C\u6B63\u3057\u3044\u304B\u3069\u3046\u304B\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: {0}

SCD_NOT_ENABLED = \u30B9\u30AD\u30FC\u30DE\u30FB\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u6307\u5B9A\u5B50\u306E\u30B5\u30DD\u30FC\u30C8\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30D9\u30F3\u30C0\u30FC\u62E1\u5F35\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3001-extension\u30B9\u30A4\u30C3\u30C1\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002

# SCD = Schema Component Designator.
ERR_SCD_EVAL = \u7121\u52B9\u306ASCD: {0}

# SCD = Schema Component Designator.
ERR_SCD_EVALUATED_EMPTY = SCD "{0}"\u306F\u30B9\u30AD\u30FC\u30DE\u30FB\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F

# SCD = Schema Component Designator.
ERR_SCD_MATCHED_MULTIPLE_NODES = SCD "{0}"\u306F{1}\u500B\u306E\u30B9\u30AD\u30FC\u30DE\u30FB\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3068\u4E00\u81F4\u3057\u307E\u3057\u305F\u304C\u3001\u4E88\u671F\u3055\u308C\u308B\u306E\u306F1\u3064\u306E\u307F\u3067\u3059

# 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 = (\u524D\u8FF0\u306E\u5185\u5BB9\u306B\u95A2\u9023\u3057\u3066)\u4E00\u81F4\u3057\u305F\u30B9\u30AD\u30FC\u30DE\u30FB\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E1\u3064\u304C\u3053\u3053\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059

# 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 = (\u524D\u8FF0\u306E\u5185\u5BB9\u306B\u95A2\u9023\u3057\u3066)\u5225\u306E\u30B9\u30AD\u30FC\u30DE\u30FB\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u3053\u3053\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059

ERR_FILENAME_IS_NOT_URI = \u30D5\u30A1\u30A4\u30EB\u540D\u304CURI\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002

DOMFOREST_INPUTSOURCE_IOEXCEPTION = "{0}"\u306E\u51E6\u7406\u4E2D\u306BIOException\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F\u3002\u4F8B\u5916: {1}\u3002
