1<?xml version="1.0" encoding="UTF-8" ?>
2
3<!-- This adds some functionality onto the log4j.dtd -->
4<!-- Authors: Kevin Goess -->
5<!-- Version: 1.0 -->
6
7
8<!-- include the log4j dtd -->
9<!ENTITY % log4j.dtd SYSTEM "log4j-1.2.dtd">  
10%log4j.dtd;  
11
12
13<!-- overriding log4j:configuration with log4perl:configuration
14     so that we can use a log4perl:appender -->
15<!ELEMENT log4perl:configuration (renderer*, log4perl:appender*, appender*,
16                                  (log4perl:filter)*,(category|logger)*,root?, PatternLayout?)>
17
18<!ATTLIST log4perl:configuration
19  xmlns:log4perl              CDATA #FIXED "http://log4perl.sourceforge.net/" 
20  threshold                (all|debug|info|warn|error|fatal|off|null) "null"
21  debug                    (true|false|null)  "null"
22  oneMessagePerAppender    (true|false|null) "null"
23>
24
25
26<!-- overriding log4j's appender with log4perl:appender so can include
27     other kinds of param structures -->
28<!ELEMENT log4perl:appender     (errorHandler?, (param|param-nested|param-text)*, 
29                                 (layout|log4perl:layout)?, filter*, filter-ref*, appender-ref*)>
30<!ATTLIST log4perl:appender
31   xmlns:log4perl CDATA #FIXED "http://log4perl.sourceforge.net/"
32  name 		ID 	#REQUIRED
33  class 	CDATA	#REQUIRED
34>
35
36<!-- a complex param type -->
37<!ELEMENT param-nested ((param|param-nested|param-text)+)>
38<!ATTLIST param-nested
39  name          CDATA   #REQUIRED
40>
41
42
43<!-- so you can put the value in the text instead of always having to 
44     put it in the attribute -->
45<!ELEMENT param-text (#PCDATA)>
46<!ATTLIST param-text
47  name          CDATA #REQUIRED
48>
49
50<!-- a top-level PatternLayout to handle global cspecs -->
51<!ELEMENT PatternLayout (cspec+)>
52
53<!-- custom conversion specifiers -->
54<!ELEMENT cspec (#PCDATA)>
55<!ATTLIST cspec
56  name          CDATA #REQUIRED
57>
58
59
60<!ELEMENT log4perl:layout ((param|cspec)*)>
61<!ATTLIST log4perl:layout
62  class		CDATA	#REQUIRED
63>
64
65<!-- This is the filter at the document root, as opposed to the appender
66       children filters.  This implement the log4perl-specific boolean appenders
67-->
68<!ELEMENT log4perl:filter (#PCDATA|param|param-nested|param-text)*>
69<!ATTLIST log4perl:filter 
70      class		CDATA	 #IMPLIED
71      name     CDATA    #IMPLIED
72      value     CDATA    #IMPLIED
73>
74
75<!ELEMENT filter-ref EMPTY>
76<!ATTLIST filter-ref id  NMTOKEN #REQUIRED>
77
78