blob: 9b67da74be07e61d285bb2c6c2e1b14e1b72b0d9 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
! Licensed to the Apache Software Foundation (ASF) under one or more
! contributor license agreements. See the NOTICE file distributed with
! this work for additional information regarding copyright ownership.
! The ASF licenses this file to You under the Apache License, Version 2.0
! (the "License"); you may not use this file except in compliance with
! the License. You may obtain a copy of the License at
!
! http://www.apache.org/licenses/LICENSE-2.0
!
! Unless required by applicable law or agreed to in writing, software
! distributed under the License is distributed on an "AS IS" BASIS,
! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
! See the License for the specific language governing permissions and
! limitations under the License.
!
!
! Document : plugin.dtd
! Created on : 14 avril 2006, 22:14
! Author : Chris Mattmann, Jerome Charron
! Description: Nutch plug-in manifest DTD
!
! PUBLIC ID : -//Apache Software Fundation//DTD Nutch Plugin Manifest 1.0//EN
! SYSTEM ID : http://lucene.apache.org/nutch/plugin.dtd
-->
<!--
! The <plugin> element defines the body of the manifest.
! It optionally contains definitions for the plug-in runtime,
! definitions of other plug-ins required by this one,
! declarations of any new extension points being introduced by the plug-in,
! as well as configuration of functional extensions
! (configured into extension points defined by other plug-ins,
! or introduced by this plug-in).
!-->
<!ELEMENT plugin (runtime?, requires?, extension-point*, extension*)>
<!-- A user displayable name for the plug-in -->
<!ATTLIST plugin name CDATA #REQUIRED>
<!--
! A unique identifier for the plug-in.
! To minimize potential for naming collisions,
! the identifier should be derived from the internet domain id
! of the supplying provider (reversing the domain name tokens and
! appending additional name tokens separated by dot [.]).
! For example, provider nutch.org could define plug-in identifier
! org.nutch.myplugin
!-->
<!ATTLIST plugin id CDATA #REQUIRED>
<!--
! The plug-in version number.
! NOTE : Version numbers compatibility are not yet implemented.
!-->
<!ATTLIST plugin version CDATA #REQUIRED>
<!-- The user-displayable name of the provider supplying the plug-in. -->
<!ATTLIST plugin provider-name CDATA #IMPLIED>
<!--
! The name of the plug-in class for this plug-in.
! The class must be a subclass of org.apache.nutch.plugin.Plugin
!-->
<!ATTLIST plugin class CDATA #IMPLIED>
<!--
! The <requires> section of the manifest declares
! any dependencies on other plug-ins.
!-->
<!ELEMENT requires (import+)>
<!-- Each dependency is specified using an <import> element. -->
<!ELEMENT import EMPTY>
<!-- The identifier of the required plug-in. -->
<!ATTLIST import plugin CDATA #REQUIRED>
<!--
! The <runtime> section of the manifest contains a definition of one or more
! libraries that make up the plug-in runtime.
! The referenced libraries are used by the plugin execution mechanisms
! (the plug-in class loader) to load and execute the correct code required by
! the plug-in.
!-->
<!ELEMENT runtime (library+)>
<!--
!The <library> elements collectively define the plug-in runtime.
! At least one <library> must be specified.
!-->
<!ELEMENT library (export*)>
<!--
! A string reference to a library file or directory containing classes
! (relative to the plug-in install directory).
! Directory references must contain trailing file separator.
!-->
<!ATTLIST library name CDATA #REQUIRED>
<!--
! Each <library> element can specify which portion
! of the library should be exported.
! The export rules are specified as a set of export masks.
! By default (no export rules specified),
! the library is considered to be private.
! Each export mask is specified using the name attribute.
!-->
<!ELEMENT export EMPTY>
<!--
! The export mask can have the following values:
! * - indicates all contents of library are exported (public)
! package.name.* - indicates all classes in the specified package
! are exported. The matching rules are the same as in the
! Java import statement.
! package.name.ClassName - fully qualified java class name
!
! NOTE : export mask is not yet implemented in Nutch.
!-->
<!ATTLIST export name CDATA #REQUIRED>
<!--
! Nutch's architecture is based on the notion of configurable extension points.
! Nutch itself predefines a set of extension points that cover the task of
! extending it (for example, adding parser, indexing filter, ...).
! In addition to the predefined extension points, each supplied plug-in can
! declare additional extension points. By declaring an extension point the
! plug-in is essentially advertising the ability to configure the plug-in
! function with externally supplied extensions.
!-->
<!ELEMENT extension-point EMPTY>
<!-- A user-displayable name for the extension point. -->
<!ATTLIST extension-point name CDATA #REQUIRED>
<!-- A simple id, unique within this plug-in -->
<!ATTLIST extension-point id CDATA #REQUIRED>
<!--
! Actual extensions are configured into extension points
! (predefined, or newly declared in this plug-in) in the <extension> section.
!
! The configuration information is specified by at least one implementation
! with some parameters.
!-->
<!ELEMENT extension (implementation+)>
<!--
! A reference to an extension point being configured.
! The extension point can be one defined in this plug-in or another plug-in.
!-->
<!ATTLIST extension point CDATA #REQUIRED>
<!--
! Optional identifier for this extension point configuration instance.
! This is used by extension points that need to uniquely identify
! (rather than just enumerate) the specific configured extensions.
! The identifier is specified as a simple token unique within the definition
! of the declaring plug-in. When used globally, the extension identifier
! is qualified by the plug-in identifier.
! FIXME : Seems it is never read in the code.
!-->
<!ATTLIST extension id CDATA #IMPLIED>
<!--
! A user-displayable name for the extension.
! FIXME : Seems it is never read in the code.
!-->
<!ATTLIST extension name CDATA #IMPLIED>
<!--
! Defines a specific implementation for the extension.
! This implementation can define some special name/value parameters
! used at runtime.
!-->
<!ELEMENT implementation (parameter*)>
<!-- A unique identifier for this implementation -->
<!ATTLIST implementation id CDATA #REQUIRED>
<!-- The fully-qualified Java Class that implements this extension-point -->
<!ATTLIST implementation class CDATA #REQUIRED>
<!-- Defines a name/value parameter -->
<!ELEMENT parameter EMPTY>
<!-- The parameter's name (should be unique for an extension) -->
<!ATTLIST parameter name CDATA #REQUIRED>
<!-- The parameter's value -->
<!ATTLIST parameter value CDATA #REQUIRED>