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

# Messages for message reporting
BadMessageKey = \u627E\u4E0D\u5230\u5C0D\u61C9\u8A0A\u606F\u7D22\u5F15\u9375\u7684\u932F\u8AA4\u8A0A\u606F\u3002
FormatFailed = \u683C\u5F0F\u5316\u4E0B\u5217\u8A0A\u606F\u6642\u767C\u751F\u5167\u90E8\u932F\u8AA4:\n

# XPointer Framework Error Messages
XPointerProcessingError = XPointerProcessingError: \u8655\u7406 XPointer \u8868\u793A\u5F0F\u6642\u767C\u751F\u932F\u8AA4\u3002
InvalidXPointerToken = InvalidXPointerToken: XPointer \u8868\u793A\u5F0F\u5305\u542B\u7121\u6548\u8A18\u865F ''{0}''
InvalidXPointerExpression = InvalidXPointerExpression: XPointer \u8868\u793A\u5F0F ''{0}'' \u7121\u6548\u3002
MultipleShortHandPointers = MultipleShortHandPointers: XPointer \u8868\u793A\u5F0F ''{0}'' \u7121\u6548\u3002\u5B83\u5177\u6709\u8D85\u904E\u4E00\u500B\u4EE5\u4E0A\u7684 ShortHand \u6307\u6A19\u3002
SchemeDataNotFollowedByCloseParenthesis = SchemeDataNotFollowedByCloseParenthesis: XPointer \u8868\u793A\u5F0F ''{0}'' \u7121\u6548\u3002\u7DCA\u63A5\u5728 SchemeData \u4E4B\u5F8C\u4E0D\u662F '')'' \u5B57\u5143\u3002
SchemeUnsupported = SchemeUnsupported: \u4E0D\u652F\u63F4 XPointer \u914D\u7F6E ''{0}''\u3002
InvalidShortHandPointer = InvalidShortHandPointer: ShortHand \u6307\u6A19 ''{0}'' \u7684 NCName \u7121\u6548\u3002
UnbalancedParenthesisInXPointerExpression = UnbalancedParenthesisInXPointerExpression: XPointer \u8868\u793A\u5F0F ''{0}'' \u7121\u6548\u3002\u5DE6\u62EC\u865F\u7684\u6578\u76EE ''{1}'' \u4E0D\u7B49\u65BC\u53F3\u62EC\u865F\u7684\u6578\u76EE ''{2}''\u3002
InvalidSchemeDataInXPointer = InvalidSchemeDataInXPointer: XPointer \u8868\u793A\u5F0F ''{0}'' \u5305\u542B\u7121\u6548\u7684 SchemeData\u3002

# XPointer Element Scheme Error Messages
InvalidElementSchemeToken = InvalidElementSchemeToken: element() \u914D\u7F6E XPointer \u8868\u793A\u5F0F\u5305\u542B\u7121\u6548\u8A18\u865F ''{0}''
InvalidElementSchemeXPointer = InvalidElementSchemeXPointer: \u5143\u7D20\u914D\u7F6E XPointer \u8868\u793A\u5F0F ''{0}'' \u7121\u6548\u3002
XPointerElementSchemeProcessingError = XPointerElementSchemeProcessingError: \u8655\u7406 XPointer element() \u914D\u7F6E\u8868\u793A\u5F0F\u6642\u767C\u751F\u932F\u8AA4\u3002
InvalidNCNameInElementSchemeData = InvalidNCNameInElementSchemeData: element() \u914D\u7F6E\u5305\u542B\u5177\u6709\u7121\u6548 NCName \u7684 ShortHand \u6307\u6A19 ''{0}''\u3002
InvalidChildSequenceCharacter = InvalidChildSequenceCharacter: element() \u914D\u7F6E\u5305\u542B\u7121\u6548\u5B50\u9805\u9806\u5E8F\u5B57\u5143 ''{0}''\u3002
