<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3.org/TR/html4/loose.dtd">
<!--
   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.
-->
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
 <meta name="Author" content="Malcolm Edgar"/>
 <meta name="description" lang="en" content="Apache Click Java web application framework"/>
 <meta name="keywords" lang="en" content="Apache Click, Click Framework, Java, JEE, J2EE, web application framework, open source"/>
 <title>Apache Click</title>
 <link rel="stylesheet" type="text/css" href="../help.css"/>
</head>
<body>

<h1>Click DTD</h1>

Click application XML descriptor Documentation Type Definition (DTD) :
(A full example is available <a href="click-dtd-example.html">here</a>)

<pre class="codeDtd">
&lt;!--
     DTD for the Click Application Configuration File, Version 2.1

     To support validation of your configuration file, include the following
     DOCTYPE element at the beginning (after the "xml" declaration):

     &lt;!DOCTYPE click-app PUBLIC
       "-//Apache Software Foundation//DTD Click Configuration 2.1//EN"
       "http://click.apache.org/dtds/click-2.1.dtd"&gt;
--&gt;

&lt;!-- The Click Application (click.xml) Document Type Definition. --&gt;
&lt;!ELEMENT <span class="red">click-app</span> (<span class="blue">pages</span>*, <span class="blue">headers</span>?, <span class="blue">format</span>?, <span class="blue">mode</span>?, <span class="blue">controls</span>?, 
                     <span class="blue">file-upload-service</span>?, <span class="blue">log-service</span>?, <span class="blue">template-service</span>?)&gt;
  &lt;!ATTLIST <span class="red">click-app</span> <span class="blue">charset</span> CDATA #IMPLIED&gt;
  &lt;!ATTLIST <span class="red">click-app</span> <span class="blue">locale</span> CDATA #IMPLIED&gt;

  &lt;-- Application pages. --&gt;
  &lt;!ELEMENT <span class="red">pages</span> (<span class="blue">page</span>*, <span class="blue">excludes</span>*)&gt;
    &lt;!ATTLIST <span class="red">pages</span> <span class="blue">package</span> CDATA #IMPLIED&gt;
    &lt;!ATTLIST <span class="red">pages</span> <span class="blue">automapping</span> (true|false) "<span class="green">true</span>"&gt;
    &lt;!ATTLIST <span class="red">pages</span> <span class="blue">autobinding</span> (annotation|public|none) "<span class="green">public</span>"&gt;

    &lt;!-- Page definition. --&gt;
    &lt;!ELEMENT <span class="red">page</span> (<span class="blue">header</span>*)&gt;
      &lt;!ATTLIST <span class="red">page</span> <span class="blue">path</span> CDATA #REQUIRED&gt;
      &lt;!ATTLIST <span class="red">page</span> <span class="blue">classname</span> CDATA #REQUIRED&gt;

    &lt;!-- Excludes definition. --&gt;
    &lt;!ELEMENT <span class="red">excludes</span> (#PCDATA)&gt;
      &lt;!ATTLIST <span class="red">excludes</span> <span class="blue">pattern</span> CDATA #REQUIRED&gt;

  &lt;!-- Application default page headers. --&gt;
  &lt;!ELEMENT <span class="red">headers</span> (<span class="blue">header</span>*)&gt;
  
    &lt;!-- Header definition. --&gt;
    &lt;!ELEMENT <span class="red">header</span> (#PCDATA)&gt;
      &lt;!ATTLIST <span class="red">header</span> <span class="blue">name</span> CDATA #REQUIRED&gt;
      &lt;!ATTLIST <span class="red">header</span> <span class="blue">value</span> CDATA #REQUIRED&gt;
      &lt;!ATTLIST <span class="red">header</span> <span class="blue">type</span> (String|Integer|Date) "<span class="green">String</span>"&gt;

  &lt;!-- Page template formatter class. An new format object added to
       the Velocity context under the key: "format". --&gt;
  &lt;!ELEMENT <span class="red">format</span> (#PCDATA)&gt;
    &lt;!ATTLIST <span class="red">format</span> <span class="blue">classname</span> CDATA #FIXED "<span class="green">org.apache.click.util.Format</span>"&gt;
 
  &lt;!-- Application mode, which configures logging and caching. --&gt;
  &lt;!ELEMENT <span class="red">mode</span> (#PCDATA)&gt;
     &lt;!ATTLIST <span class="red">mode</span> <span class="blue">value</span> (production|profile|development|debug|trace) "<span class="green">development</span>"&gt;

  &lt;!-- Application deployable controls. --&gt;
  &lt;!ELEMENT <span class="red">controls</span> (<span class="blue">control</span>*, <span class="blue">control-set</span>*)&gt;
  
    &lt;-- Deployable control class. --&gt;
    &lt;!ELEMENT <span class="red">control</span> (#PCDATA)&gt;
      &lt;!ATTLIST <span class="red">control</span> <span class="blue">classname</span> CDATA #REQUIRED&gt;

    &lt;-- Deployable Third Party Set of Controls. --&gt;
    &lt;!ELEMENT <span class="red">control-set</span> (#PCDATA)&gt;
      &lt;!ATTLIST <span class="red">control-set</span> <span class="blue">name</span> CDATA #REQUIRED&gt;

  &lt;!-- File Upload Service. --&gt;
  &lt;!ELEMENT <span class="red">file-upload-service</span> (property*)&gt;
    &lt;!ATTLIST <span class="red">file-upload-service</span> <span class="blue">classname</span> CDATA #FIXED "<span class="green">org.apache.click.service.FileUploadService</span>"&gt;
 
    &lt;!-- Property definition. --&gt;
    &lt;!ELEMENT <span class="red">property</span> (#PCDATA)&gt;
      &lt;!ATTLIST <span class="red">property</span> <span class="blue">name</span> CDATA #REQUIRED&gt;
      &lt;!ATTLIST <span class="red">property</span> <span class="blue">value</span> CDATA #REQUIRED&gt;

  &lt;!-- Log Service. --&gt;
  &lt;!ELEMENT <span class="red">log-service</span> (property*)&gt;
    &lt;!ATTLIST <span class="red">log-service</span> <span class="blue">classname</span> CDATA #FIXED "<span class="green">org.apache.click.service.ConsoleLogService</span>"&gt;
 
  &lt;!-- Template Service. --&gt;
  &lt;!ELEMENT <span class="red">template-service</span> (property*)&gt;
    &lt;!ATTLIST <span class="red">template-service</span> <span class="blue">classname</span> CDATA #FIXED "<span class="green">org.apache.click.service.VelocityTemplateService</span>"&gt;
 
</pre>
</body>
</html>
   

  
   
  
  
  
