#
# 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_zh_CN.properties /st_wptg_1.8.0.0.0jdk/2 2013/05/29 01:19:32 gmolloy Exp $

# Messages for message reporting
BadMessageKey = \u627E\u4E0D\u5230\u4E0E\u6D88\u606F\u5173\u952E\u5B57\u5BF9\u5E94\u7684\u9519\u8BEF\u6D88\u606F\u3002
FormatFailed = \u8BBE\u7F6E\u4EE5\u4E0B\u6D88\u606F\u7684\u683C\u5F0F\u65F6\u51FA\u73B0\u5185\u90E8\u9519\u8BEF:\n  

# XPointer Framework Error Messages
XPointerProcessingError = XPointerProcessingError: \u5904\u7406 XPointer \u8868\u8FBE\u5F0F\u65F6\u51FA\u9519\u3002
InvalidXPointerToken = InvalidXPointerToken: XPointer \u8868\u8FBE\u5F0F\u5305\u542B\u65E0\u6548\u7684\u6807\u8BB0 ''{0}''
InvalidXPointerExpression = InvalidXPointerExpression: XPointer \u8868\u8FBE\u5F0F ''{0}'' \u65E0\u6548\u3002
MultipleShortHandPointers = MultipleShortHandPointers: XPointer \u8868\u8FBE\u5F0F ''{0}'' \u65E0\u6548\u3002\u5B83\u5177\u6709\u591A\u4E2A ShortHand \u6307\u9488\u3002
SchemeDataNotFollowedByCloseParenthesis = SchemeDataNotFollowedByCloseParenthesis: XPointer \u8868\u8FBE\u5F0F ''{0}'' \u65E0\u6548\u3002SchemeData \u7684\u540E\u9762\u672A\u8DDF\u968F '')'' \u5B57\u7B26\u3002
SchemeUnsupported = SchemeUnsupported: \u4E0D\u652F\u6301 XPointer \u65B9\u6848 ''{0}''\u3002
InvalidShortHandPointer = InvalidShortHandPointer: ShortHand \u6307\u9488 ''{0}'' \u7684 NCName \u65E0\u6548\u3002
UnbalancedParenthesisInXPointerExpression = UnbalancedParenthesisInXPointerExpression: XPointer \u8868\u8FBE\u5F0F ''{0}'' \u65E0\u6548\u3002\u5DE6\u62EC\u53F7\u7684\u6570\u91CF ''{1}'' \u4E0E\u53F3\u62EC\u53F7\u7684\u6570\u91CF ''{2}'' \u4E0D\u76F8\u7B49\u3002
InvalidSchemeDataInXPointer = InvalidSchemeDataInXPointer: XPointer \u8868\u8FBE\u5F0F ''{0}'' \u5305\u542B\u65E0\u6548\u7684 SchemeData\u3002

# XPointer Element Scheme Error Messages
InvalidElementSchemeToken = InvalidElementSchemeToken: element() \u65B9\u6848\u7684 XPointer \u8868\u8FBE\u5F0F\u5305\u542B\u65E0\u6548\u7684\u6807\u8BB0 ''{0}''
InvalidElementSchemeXPointer = InvalidElementSchemeXPointer: \u5143\u7D20\u65B9\u6848\u7684 XPointer \u8868\u8FBE\u5F0F ''{0}'' \u65E0\u6548\u3002
XPointerElementSchemeProcessingError = XPointerElementSchemeProcessingError: \u5904\u7406 XPointer element() \u65B9\u6848\u8868\u8FBE\u5F0F\u65F6\u51FA\u9519\u3002
InvalidNCNameInElementSchemeData = InvalidNCNameInElementSchemeData: element() \u65B9\u6848\u5305\u542B NCName \u65E0\u6548\u7684 ShortHand \u6307\u9488 ''{0}''\u3002
InvalidChildSequenceCharacter = InvalidChildSequenceCharacter: element() \u65B9\u6848\u5305\u542B\u65E0\u6548\u7684\u5B50\u5E8F\u5217\u5B57\u7B26 ''{0}''\u3002
