# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.

OpenIDE-Module-Name=XML \u652f\u63f4
OpenIDE-Module-Display-Category=XML
OpenIDE-Module-Short-Description=\u6b64\u6a21\u7d44\u662f\u6240\u6709 XML \u76f8\u95dc\u6a21\u7d44\u7684\u57fa\u790e\u3002
OpenIDE-Module-Long-Description=\u6b64\u6a21\u7d44\u662f\u6240\u6709 XML \u76f8\u95dc\u6a21\u7d44\u7684\u57fa\u790e\u3002\u5b83\u80fd\u8b58\u5225 XML \u548c DTD \u6587\u4ef6\uff0c\u9019\u5169\u7a2e\u6587\u4ef6\u53ef\u4ee5\u5728\u6587\u5b57\u7de8\u8f2f\u5668\u4e2d\u958b\u555f\u3002\u6b64\u6a21\u7d44\u652f\u63f4\u5c07\u9019\u4e9b\u6587\u4ef6\u5256\u6790\u70ba TAX (Tree API for XML) \u8868\u793a\u6cd5\u3002\u5b83\u652f\u63f4\u6587\u4ef6\u8868\u793a\u4e4b\u9593\u7684\u540c\u6b65\u3002\u5b83\u9084\u5305\u542b\u6240\u6709 XML \u76f8\u95dc\u6a21\u7d44\u9593\u5171\u4eab\u7684\u5168\u90e8\u8a2d\u5b9a\u3002

## mf-layer.xml
Loaders/application/xml/Factories/org-netbeans-modules-xml-XMLDataLoader.instance=XML \u6a94\u6848
Loaders/text/x-dtd/Factories/org-netbeans-modules-xml-DTDDataLoader.instance=DTD \u6a94\u6848
Loaders/text/xml-external-parsed-entity/Factories/org-netbeans-modules-xml-EntityDataLoader.instance=XML \u5916\u90e8\u5256\u6790\u5be6\u9ad4\u6a94\u6848
Loaders/text/xml/Factories/org-netbeans-modules-xml-XMLDataLoader.instance=XML \u6a94\u6848
Templates/XML/emptyDTD.dtd=DTD \u5be6\u9ad4
Templates/XML/XMLDocument.xml=XML \u6587\u4ef6
Templates/XML/XMLwithROOT.xml=XML \u6587\u4ef6
Templates/XML/XMLwithDTD.xml=\u5e36\u6709 DTD \u7684 XML
Templates/XML/xhtml.xml=XHTML \u6587\u4ef6
Templates/XML/StyleSheet.xsl=XSL \u6a23\u5f0f\u8868\u683c
Templates/XML/xml_entity.ent=XML \u5256\u6790\u5be6\u9ad4
UI/Services/Editing/XML=XML

#Actions
Actions/XML=XML

# JavaHelp
Menu/Help/HelpShortcuts/org-netbeans-modules-xml-docs-mainpage.xml=XML \u6a21\u7d44\u8aaa\u660e
Actions/Help/org-netbeans-modules-xml-docs-mainpage.xml=XML \u6a21\u7d44\u8aaa\u660e

# File Types
Services/MIMEResolver/XMLSchema.xml=XML Schema
Services/MIMEResolver/xslt-mime-resolver.xml=\u53ef\u64f4\u5c55\u6a23\u5f0f\u8868\u683c\u8a9e\u8a00 (XSLT)
Services/MIMEResolver/org-netbeans-modules-xml-services-XMLMIMEResolver.xml=XML \u6a94\u6848
Services/MIMEResolver/org-netbeans-modules-xml-services-DTDMIMEResolver.xml=DTD \u6a94\u6848
Services/MIMEResolver/org-netbeans-modules-xml-services-ENTMIMEResolver.xml=ENT \u6a94\u6848

## error-annotation.xml
LBL_error_annotation=XML \u8a9e\u6cd5\u932f\u8aa4

#--
