#
# Copyright (c) 2009, 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.
#

# This file stores localized messages for the Xerces XPointer implementation.
#
# The messages are arranged in key and value tuples in a ListResourceBundle.
#
# @version $Id: XPointerMessages_ko.properties /st_wptg_1.8.0.0.0jdk/2 2013/05/29 02:40:33 gmolloy Exp $

# Messages for message reporting
BadMessageKey = \uBA54\uC2DC\uC9C0 \uD0A4\uC5D0 \uD574\uB2F9\uD558\uB294 \uC624\uB958 \uBA54\uC2DC\uC9C0\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
FormatFailed = \uB2E4\uC74C \uBA54\uC2DC\uC9C0\uC758 \uD615\uC2DD\uC744 \uC9C0\uC815\uD558\uB294 \uC911 \uB0B4\uBD80 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.\n  

# XPointer Framework Error Messages
XPointerProcessingError = XPointerProcessingError: XPointer \uD45C\uD604\uC2DD\uC744 \uCC98\uB9AC\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
InvalidXPointerToken = InvalidXPointerToken: XPointer \uD45C\uD604\uC2DD\uC5D0 \uBD80\uC801\uD569\uD55C \uD1A0\uD070 ''{0}''\uC774(\uAC00) \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
InvalidXPointerExpression = InvalidXPointerExpression: XPointer \uD45C\uD604\uC2DD ''{0}''\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
MultipleShortHandPointers = MultipleShortHandPointers: XPointer \uD45C\uD604\uC2DD ''{0}''\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. ShortHand Pointer\uAC00 \uB450 \uAC1C \uC774\uC0C1 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. 
SchemeDataNotFollowedByCloseParenthesis = SchemeDataNotFollowedByCloseParenthesis: XPointer \uD45C\uD604\uC2DD ''{0}''\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. SchemeData \uB4A4\uC5D0 '')'' \uBB38\uC790\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. 
SchemeUnsupported = SchemeUnsupported: XPointer \uCCB4\uACC4 ''{0}''\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
InvalidShortHandPointer = InvalidShortHandPointer: ShortHand Pointer ''{0}''\uC758 NCName\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
UnbalancedParenthesisInXPointerExpression = UnbalancedParenthesisInXPointerExpression: XPointer \uD45C\uD604\uC2DD ''{0}''\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uC5EC\uB294 \uAD04\uD638\uC758 \uAC1C\uC218 ''{1}''\uACFC(\uC640) \uB2EB\uB294 \uAD04\uD638\uC758 \uAC1C\uC218 ''{2}''\uC774(\uAC00) \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
InvalidSchemeDataInXPointer = InvalidSchemeDataInXPointer: XPointer \uD45C\uD604\uC2DD ''{0}''\uC5D0 \uBD80\uC801\uD569\uD55C SchemeData\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.

# XPointer Element Scheme Error Messages
InvalidElementSchemeToken = InvalidElementSchemeToken: element() \uCCB4\uACC4 XPointer \uD45C\uD604\uC2DD\uC5D0 \uBD80\uC801\uD569\uD55C \uD1A0\uD070 ''{0}''\uC774(\uAC00) \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
InvalidElementSchemeXPointer = InvalidElementSchemeXPointer: \uC694\uC18C \uCCB4\uACC4 XPointer \uD45C\uD604\uC2DD ''{0}''\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
XPointerElementSchemeProcessingError = XPointerElementSchemeProcessingError: XPointer element() \uCCB4\uACC4 \uD45C\uD604\uC2DD\uC744 \uCC98\uB9AC\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
InvalidNCNameInElementSchemeData = InvalidNCNameInElementSchemeData: element() \uCCB4\uACC4\uC5D0 NCName\uC774 \uBD80\uC801\uD569\uD55C ShortHand Pointer ''{0}''\uC774(\uAC00) \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
InvalidChildSequenceCharacter = InvalidChildSequenceCharacter: element() \uCCB4\uACC4\uC5D0 \uBD80\uC801\uD569\uD55C \uD558\uC704 \uC2DC\uD000\uC2A4 \uBB38\uC790 ''{0}''\uC774(\uAC00) \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. 
