# This file stores localized messages for the Xerces XPointer implementation.
#
# The messages are arranged in key and value tuples in a ListResourceBundle.
#

# 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. 
