--- a/Admin/website/.cvsignore Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-conf
--- a/Admin/website/README Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-The Isabelle Webpage
-====================
-
-(1) philosophy
-==============
-
-The webpage sources consist of three different layers:
-
-a) the presentation layer
--------------------------
-
-This is was the user actually sees; the slogan is
-
- "structural XHTML plus CSS"
-
-There are three different groups of end-user agents (browsers)
-
- 1) "practical non-CSS" browsers (lynx, netscape4)
- These just display plain HTML.
- 2) "more-or-less-w3c-CSS" browsers (KHTML/Konqueror/Safari, Internet Explorer)
- These are able to display the pages almost as they should be,
- but perhaps with some minor warts.
- 3) "almost-w3-CSS" browsers (Mozilla/Firefox/Galeone)
- These are the "reference implementation" for the layout.
-
-b) the project layer
---------------------
-
-This manages the dependencies between files; the tool of choice
-is
-
- "(g)make plus shell scripting"
-
-Project settings may be configured using a seperate configuration
-file.
-
-c) the preprocessing layer
---------------------------
-
-This allows to use things like includes, current date, and so on:
-
- "XHTML plus processing instructions"
-
-Note that this is almost not interwoven with b), to keep it as robust
-and simple as possible.
-
-The layer itself is implemented by a small tool "pypager", written in python.
-
-
-(2) writing your own pages
-==========================
-
-You may add arbitrary files to the dir structure, but adhere to the following:
-* use XHTML, not loose HTML
-* only structural markup; if you need layout effects, use CSS
- (browse the existing files to get some inspirations)
-* any files ending with .html are considered as HTML files and are implicitly
- processed by the preprocessing layer
-* for HTML includes, it is most convenient to name them *.include.html to
- avoid them to be processed stand-alone by the preprocessing layer
-* whole dirs maybe selected for statically copying them to the
- target destination by configuring the project layer
-* for attributes etc. referencing file locations, there is a convenient
- abbreviation: "//" at the beginning of a path is translated to the root,
- but expressed relatively to the current location, e. g.
-
- in abc/def/itsme.html: <a href="//abc/ghi/itsyou.html">
- becomes: <a href="../def/itsyou.html">
-
- Further, targets are checked for existence.
- This is a simple yet powerful thing easing to keep the pages consistent.
-* for the semantics of the processing instructions, see build/pypager.py
- source code
-
-
-(3) using the project layer framework
-=====================================
-
-To configure it the first time after checkout, just type
-> gmake phase=init
-
-Not: on GNU systems, just type make instead of gmake.
-
-Then, you may edit the project configuration file conf/localconf.mak.
-After a correct configuration, the build process may be started by
-> gmake
-
-The project layer tries to be smart about dependencies, but includes,
-embedded images and so on are not tracked; to built dependencies anew,
-do
-> gmake depends
-
-After adding or deleting files, an
-> gmake depends
-may also be neccessary. The same after changing something in the configuration.
-
-If nothing seems to be sensible any more, try
-> gmake clean
-> gmake depends
-> gmake
-
-
-(4) project-specific remarks
-============================
-
-The whole thing should fit neatlessly into the Isabelle distribution and
-regression framework; this may explain some "features" which seem to be
-enigmatic.
-
-
-(5) the website build bed on sunbroy2
-=====================================
-
-For convenience, there is a completely configured
-website build bed on sunbroy2:
-* log in to sunbroy2
-* go to ~isabelle/website_build
-* there do an CVS update if desired
-* do "gmake perms" to set file owner group (isabelle) and permissions
- (rw-rw-r--, rwxrwsr-x)
-* do your changes
-* just type gmake - the website is built to the website synchronization cache
-* then do CVS commit
-* for updating the webpage in Munich, just use Admin/mirror-website
-* if the Isabelle distribution files themselves change, some handwired updating
- is necessary; however, for casual content changes the build bed should work
- properly.
--- a/Admin/website/TODO Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-- a gentle intro enumeration on Home - "Why Isabelle?"
- * stably running, mature system
- * (something to say about Isar?)
- * big library
- * big community
- * it's free
- * ...
- (to discuss)
-- clarify relationship of "overview" and "logics":
- * overview: Isabelle/HOL
- * logics: Isabelle system
- (to discuss)
-
-- world_map: automated generation from coordinate data
-- world_map: more content in HTML, less in java script
\ No newline at end of file
--- a/Admin/website/build/.cvsignore Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-*.pyc
--- a/Admin/website/build/cl-1.0.1.pl Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2112 +0,0 @@
-#!/usr/local/bin/perl
-#
-# Checklinks 1.0.1
-#
-# Starting at one or more seed HTML files, recursively check the
-# validity of all links on the site. Major features:
-#
-# * Local URLs are read from the filesystem when possible (much
-# faster than going through HTTP server).
-# * Basic server-side includes (aka SSI or SHTML) are checked.
-# * Latest standards are supported-- HTML 4.0, HTTP 1.1, URIs
-# according to RFC 2396.
-# * Links are traversed breadth-first.
-#
-# To list command-line options, run "cl -?" or see &usage() below.
-#
-# TO CONFIGURE:
-#
-# 1) Set $LOCAL_HOST and $DOCUMENT_ROOT, just below. If you don't, the
-# program will try to guess them in set_needed_globals(), but it's more
-# reliable if you enter them here.
-#
-# 2) If needed, set any further server configuration below-- things like
-# path aliases and so forth. If you have the srm.conf file, you can
-# feed it into this script with "-c srm.conf"; otherwise, the default
-# settings will probably work OK.
-#
-# You can set a few parameters with the undocumented "-D <name=value>"
-# command-line option, e.g. "-D LOCAL_HOST=www.myhost.com".
-#
-# Further comments, including an overview of script internals, are at
-# the end of this file.
-#
-# Copyright (C) 1998, 2000 by James Marshall, james@jmarshall.com
-# see http://www.jmarshall.com/tools/cl/ for more info
-#
-#
-# CHANGES IN 1.0.1:
-#
-# This is just a bug fix release. Fixes include:
-# . Aliases are handled correctly now. Sorry 'bout that.
-# . A redirect + relative URL no longer results in infinitely
-# recursing URLs.
-# . More HTML tags are searched for links.
-# . Non-HTML files are no longer searched for links.
-# . There were other minor bug fixes.
-#
-#----------------------------------------------------------------------
-
-#use strict ;
-
-my( $LOCAL_HOST, $DOCUMENT_ROOT, $USER_DIR, @DIRECTORY_INDEX,
- %ALIAS, %ALIAS_MATCH, %SCRIPT_ALIAS, %SCRIPT_ALIAS_MATCH, %UN_ALIAS,
- @SHTML_EXTENSIONS, @CGI_EXTENSIONS, @INCLUDE_PATTERNS, @EXCLUDE_PATTERNS,
- @INCLUDE_STATUS, @EXCLUDE_STATUS,
- $verbose_report, $max_depth, $file_check, $full_http_check,
- $MAX_REDIRECTS, $MAX_ATTEMPTS, $HTML_BY_NAME, $SUPPORT_NCSA_BUG,
- @NO_PROXY, $DOC_ROOT_DEV, $DOC_ROOT_INODE, $DOC_ROOT_EXISTS, $CWD,
- %html_urls, %non_html_urls, %e_to_ch,
-
- %home_dir, %dir_to_user, %inode_to_user,
-
- %url, @urlstoget,
-
- $debug, $CL_VERSION,
- ) ;
-
-
-#----- User Configuration ---------------------------------------------
-
-# This should be 'localhost', or a hostname of the Web server. URLs at
-# this host will be assumed to be local; URLs not at this host will not be
-# traversed into. If this names a remote host, the program will not work.
-# Note that 'localhost' doesn't necessarily point to your local Web server.
-
-# $LOCAL_HOST= 'localhost' ;
-# $LOCAL_HOST= 'www.example.com' ;
-$LOCAL_HOST='isabelle.in.tum.de';
-
-# This is your root Web directory, i.e. the directory that the Web server
-# sends the user if the URL "http://$LOCAL_HOST" is requested. It's in
-# the configuration file srm.conf (and is read by -c option).
-# If you don't know the document root of your server, but you don't need
-# it because you're only checking URLs whose path starts with ~, put a
-# non-existent path here rather than leave it blank (a hack).
-
-# $DOCUMENT_ROOT= '/home/www/htdocs' ;
-$DOCUMENT_ROOT='/home/proj/isabelle';
-
-#----- variables equivalent to srm.conf entries
-
-# These globals are from the equivalent entries in srm.conf, etc.
-# See the command-line option -c <config-file>, to read values directly
-# from srm.conf instead.
-
-# $USER_DIR= 'public_html' ;
-$USER_DIR='.html-data';
-@DIRECTORY_INDEX= qw( index.html index.cgi index.shtml ) ;
-
-# Used in &url_to_filename(), and possibly elsewhere
-# Note that ALIAS_MATCH and SCRIPT_ALIAS_MATCH use Perl (not standard) regexps.
-# If order of multiple e.g. "Alias" directives is important, this may not work.
-%ALIAS= () ;
-%ALIAS_MATCH= () ;
-%SCRIPT_ALIAS= () ;
-%SCRIPT_ALIAS_MATCH= () ;
-
-# The list of file extensions to interpret as CGI scripts or
-# server-parsed HTML files.
-# These are not specific settings in srm.conf, but are combinations of
-# AddHandler directives and possibly AddType directives.
-@CGI_EXTENSIONS= qw( .cgi ) ;
-@SHTML_EXTENSIONS= qw( .shtml ) ;
-
-#----- end of variables equivalent to srm.conf entries
-
-# Specify patterns here to only include URLs that match at least one
-# pattern. As a special case, an empty list includes all URLs, i.e.
-# does not restrict URLs by name (except perhaps by @EXCLUDE_PATTERNS).
-# This can be added to or cleared with the -I command-line option.
-@INCLUDE_PATTERNS= () ;
-
-# Specify patterns here to cause matching URLs to be excluded,
-# e.g. '\?' means ignore all URLs that query.
-# This can be added to or cleared with the -X command-line option.
-# @EXCLUDE_PATTERNS= qw( \? ) ;
-
-# Only report URLs whose status codes start with one of these patterns.
-# As a special case, an empty list reports all URLs, i.e. does not
-# restrict URLs by status code (except perhaps by @EXCLUDE_STATUS).
-# This can be added to or cleared with the -i command-line option.
-@INCLUDE_STATUS= () ;
-
-# Don't report URLs whose status codes start with these patterns. Default
-# is qw( 200 ).
-# This can be added to or cleared with the -x command-line option.
-@EXCLUDE_STATUS= qw( 200 ) ;
-
-# For 302 or 303 HTTP redirection, redirect no more than this many times.
-$MAX_REDIRECTS= 5 ;
-
-# If a connection times out, etc., attempt no more than this many times.
-$MAX_ATTEMPTS= 5 ;
-
-# The old version determined whether a file was HTML by the -T test (text
-# file), and so traversed all HTML-like links in any text file that wasn't
-# a CGI script. It's probably more appropriate to check the file
-# extension, to exclude source code, .txt files, etc. Leave $HTML_BY_NAME
-# set to use the filename, or unset it to traverse all HTML-like links in
-# any text files, as the old version did.
-$HTML_BY_NAME= 1 ;
-
-# Some old NCSA servers, including 1.5.2, don't report the HTTP version
-# correctly in the status line; they return e.g. "HTTP 200 OK". To allow
-# this, leave the variable here set.
-$SUPPORT_NCSA_BUG= 1 ;
-
-
-#----- DO NOT CHANGE ANYTHING BELOW THIS LINE, unless you want to... ---
-
-#----- Further Global Variable Initialization --------------------------
-
-$CL_VERSION= '1.0.1' ;
-
-$ENV{'http_proxy'}||= $ENV{'HTTP_PROXY'} ;
-@NO_PROXY= split(/[\s,]+/, $ENV{'no_proxy'} || $ENV{'NO_PROXY'} ) ;
-
-
-# If output's not going directly to terminal, this ensures autoflushing.
-$|= 1 ;
-
-#----- End of Configuration --------------------------------------------
-
-use strict 'vars' ;
-use IO::Socket ;
-
-&usage unless @ARGV ;
-
-# Process command-line options
-&getopts ;
-
-# Make any final needed adjustments to globals, after the hard-coded
-# values above and any options have been processed.
-&adjust_all_globals ;
-
-# Default to "." if no starting filenames given.
-# 3-6-98: Anh, decided against it.
-#@ARGV= ('.') unless @ARGV ;
-
-# &add_url() sets $url{$_} and pushes to @urlstoget, only if not already
-# added, plus any other initialization.
-# Only add a file if it can be accessed with a URL.
-foreach my $arg (@ARGV) {
- if ($arg=~ m#^http://#i) {
- &add_url($arg, '-', 0) ;
- } else {
- my($URL)= &filename_to_url($arg, $CWD) ;
- if (defined($URL)) {
- &add_url($URL, '-', 0) ;
- } else {
- die "ERROR: $arg is not accessible through the Web server.\n" ;
- }
- }
-}
-
-
-# Check the URLs, in order. @urlstoget may grow and rearrange.
-while (@urlstoget) {
- my($url)= shift(@urlstoget) ;
- if ( !$url->{'ishtml'} or !$url->{'islocal'} or $url->{'dontfollow'}
- or (length($max_depth) and $url->{'depth'} > $max_depth ) ) {
- &verify_url($url) ; # may set ishtml=true
- }
- if ( $url->{'ishtml'} and $url->{'islocal'} and !$url->{'dontfollow'}
- and (!length($max_depth) or $url->{'depth'} <= $max_depth ) ) {
- my($HTML)= &load_url($url) ; # may set ishtml=false
- # 11-30-99 JSM: fixed to handle rel URLs in redirected pages correctly
- my($base_url)= $url->{'location'} || $url->{'URL'} ;
- &extract_urls($HTML, $base_url, $url->{'URL'}, $url->{'depth'}+1)
- if $url->{'ishtml'} ; # big, calls &add_url()
- }
-
- # If we get an error response that may be corrected with another
- # attempt, put it back in the queue. Such errors include 408,
- # 503, 504, and the homegrown codes 600, 601, 602, and 603.
- if ($url->{'status'}=~ /^(408|503|504|600|601|602|603)\b/ ) {
- push(@urlstoget, $url) if ( $url->{'numtries'} < $MAX_ATTEMPTS ) ;
- }
-
-}
-
-&make_report() ;
-
-exit ;
-
-
-
-#----- Process command-line options -----------------------------------
-
-# Process any command-line options.
-sub getopts {
- my($opt, $param) ;
- while ($ARGV[0]=~ /^-/) {
- $opt= shift(@ARGV) ;
- ($opt, $param)= $opt=~ /^-(.)(.*)/ ;
-
- # Turn on verbose reporting
- if ($opt eq 'v') {
- $verbose_report= ($param ne '-') ;
-
- # User-specified patterns to exclude ('' to clear list)
- } elsif ($opt eq 'I') {
- $param= shift(@ARGV) unless length($param) ;
- if (length($param)) { push(@INCLUDE_PATTERNS, $param) }
- else { @INCLUDE_PATTERNS= () }
-
- # User-specified patterns to exclude ('' to clear list)
- } elsif ($opt eq 'X') {
- $param= shift(@ARGV) unless length($param) ;
- if (length($param)) { push(@EXCLUDE_PATTERNS, $param) }
- else { @EXCLUDE_PATTERNS= () }
-
- # User-specified response codes to ignore ('' to clear list)
- } elsif ($opt eq 'i') {
- $param= shift(@ARGV) unless length($param) ;
- if (length($param)) { push(@INCLUDE_STATUS, $param) }
- else { @INCLUDE_STATUS= () }
-
- # User-specified response codes to ignore ('' to clear list)
- } elsif ($opt eq 'x') {
- $param= shift(@ARGV) unless length($param) ;
- if (length($param)) { push(@EXCLUDE_STATUS, $param) }
- else { @EXCLUDE_STATUS= () }
-
- # Maximum traversal depth
- } elsif ($opt eq 'd') {
- $param= shift(@ARGV) unless length($param) ;
- $max_depth= $param ;
-
- # Make it a "file check"-- only read local files, do not use HTTP
- } elsif ($opt eq 'f') {
- $file_check= ($param ne '-') ;
-
- # Use HTTP for all URL's, even local files
- } elsif ($opt eq 'h') {
- $full_http_check= ($param ne '-') ;
-
- # Read configuration parameters from srm.conf-like file
- } elsif ($opt eq 'c') {
- $param= shift(@ARGV) unless length($param) ;
- &read_srm_conf($param) ;
-
- # Print current configuration parameters
- } elsif ($opt eq 'q') {
- &print_config ;
- exit ; # jsm-- should we exit?
-
- # Allow certain parameters to be defined via the command line
- } elsif ($opt eq 'D') {
- $param= shift(@ARGV) unless length($param) ;
- $debug=1, unshift(@ARGV,$param), next if $param=~ /^-/ ;
- my($name,$value)= split(/=/, $param, 2) ;
- $value= 1 unless length($value) ;
- if ($name=~ /^(LOCAL_HOST|DOCUMENT_ROOT|USER_DIR|DEBUG|debug)$/) {
- eval "\$$name= \$value" ;
- #$$name= $value ; # this doesn't work, because of initial my()
- }
-
- } elsif ($opt eq '?') {
- &usage ;
-
- # End command-line option processing on "--"
- } elsif ($opt eq '-') {
- return ;
-
- } else {
- print STDERR
- "Illegal option-- '$opt'. Enter \"$0 -?\" for help.\n" ;
- exit ;
- }
-
- }
-
- if ($file_check and $full_http_check) {
- print STDERR "You cannot use both the -f and the -h options.\n" ;
- exit ;
- }
-
-}
-
-
-# Read appropriate values from the given file, typically srm.conf. If a
-# directory is named, default to filename "srm.conf".
-# Note that opening "-" will open STDIN.
-sub read_srm_conf {
- my($fname)= @_ ;
- local(*SRM) ;
-
- # default to srm.conf if only a directory is named
- if (-d $fname) {
- $fname=~ s#/$## ;
- $fname.= "/srm.conf" ;
- }
-
- # Clear old values
- $DOCUMENT_ROOT= $USER_DIR= '' ;
- @DIRECTORY_INDEX= @CGI_EXTENSIONS= @SHTML_EXTENSIONS= () ;
- %ALIAS= %ALIAS_MATCH= %SCRIPT_ALIAS= %SCRIPT_ALIAS_MATCH= () ;
-
- open(SRM, "<$fname") || die "Can't open $fname: $!" ;
- while (<SRM>) {
- s/#.*// ;
- next unless /\S/ ;
- my($name, @param)= /(\S+)/g ;
-
- if ($name eq 'DocumentRoot') {
- $DOCUMENT_ROOT= $param[0] ;
-
- } elsif ($name eq 'UserDir') {
- $USER_DIR= $param[0] ;
-
- } elsif ($name eq 'DirectoryIndex') {
- @DIRECTORY_INDEX= @param ;
-
- } elsif ($name eq 'Alias') {
- $ALIAS{$param[0]}= $param[1] ;
-
- } elsif ($name eq 'AliasMatch') {
- $ALIAS_MATCH{$param[0]}= $param[1] ;
-
- } elsif ($name eq 'ScriptAlias') {
- $SCRIPT_ALIAS{$param[0]}= $param[1] ;
-
- } elsif ($name eq 'ScriptAliasMatch') {
- $SCRIPT_ALIAS_MATCH{$param[0]}= $param[1] ;
-
- } elsif ($name eq 'AddHandler') {
- if ($param[0] eq 'cgi-script') {
- push(@CGI_EXTENSIONS, $param[1]) ;
- } elsif ($param[0] eq 'server-parsed') {
- push(@SHTML_EXTENSIONS, $param[1]) ;
- }
- }
-
- }
- close(SRM) ;
-}
-
-
-# Make any final settings to global variables, after the hard-coded values
-# and command-line options have been processed.
-# Most non-user-configurable globals are also set here.
-sub adjust_all_globals {
-
- # Standardize $USER_DIR to never have trailing slash
- $USER_DIR=~ s#/$## ;
-
- # If no $LOCAL_HOST set, try to read it from first URL in list, or
- # use the string 'localhost' if that URL contains no hostname.
- unless (length($LOCAL_HOST)) {
- $LOCAL_HOST= (&parse_url($ARGV[0]))[1] || 'localhost' ;
- print STDERR "LOCAL_HOST set to \"\L$LOCAL_HOST\E\"\n" ;
- }
- $LOCAL_HOST= lc($LOCAL_HOST) ;
-
- # If no $DOCUMENT_ROOT, try to guess it from $HOME, username, $USER_DIR.
- unless (length($DOCUMENT_ROOT)) {
- my($home) ;
- unless ($home= $ENV{'HOME'}) {
- my($uname)= getpwuid($<) || $ENV{'USER'} || `whoami` || `id -un` ;
- chomp($uname) ;
- &read_home_dirs unless %home_dir ; # only read when needed
- $home= $home_dir{$uname} ;
- }
- $DOCUMENT_ROOT= "$home/$USER_DIR" ;
-
- die "Could not determine DOCUMENT_ROOT; edit the $0 script to set it.\n"
- unless (-d $DOCUMENT_ROOT) ;
-
- print STDERR "DOCUMENT_ROOT set to \"$DOCUMENT_ROOT\"\n" ;
- }
- $DOCUMENT_ROOT=~ s#/$## ;
-
- # Allows &filename_to_url() to unalias as best as possible. Note that
- # use of &filename_to_url() can be avoided by the user; see note in
- # that routine.
- %UN_ALIAS= (reverse (%ALIAS, %SCRIPT_ALIAS) ) ;
-
- # These are to compare equivalency to later, in &filename_to_url().
- ($DOC_ROOT_DEV, $DOC_ROOT_INODE)= stat("$DOCUMENT_ROOT/.") ;
-
- $DOC_ROOT_EXISTS= -e _ ;
-
- # Set CWD from shell variable, else from `pwd`.
- $CWD= $ENV{'PWD'} || `pwd` || die "couldn't run pwd: $!" ;
- chomp($CWD) ;
-
-
- # These are used by &extract_urls().
- # This is a complete list of URL-type attributes defined in HTML 4.0,
- # plus any others I found, like nonstandard ones or from an earlier HTML.
- # Only a few of these are commonly used, as of early 1998.
- # The set in %html_urls could possibly link to HTML resources, while the
- # set in %non_html_urls could not. The %special(.*) sets, here for
- # reference only, include URL attributes that require special handling.
-
- %html_urls= ( 'a' => [ 'href' ],
- 'area' => [ 'href' ],
- 'frame' => [ 'src', 'longdesc' ],
- 'link' => [ 'href', 'urn' ],
- 'img' => [ 'longdesc', 'usemap' ],
- 'q' => [ 'cite' ],
- 'blockquote' => [ 'cite' ],
- 'ins' => [ 'cite' ],
- 'del' => [ 'cite' ],
- 'object' => [ 'usemap' ],
- 'input' => [ 'usemap' ],
- 'iframe' => [ 'src', 'longdesc' ],
- 'ilayer' => [ 'src' ],
- 'layer' => [ 'src' ],
- 'fig' => [ 'imagemap' ],
- 'overlay' => [ 'imagemap' ],
- 'meta' => [ 'url' ],
- 'note' => [ 'src' ],
- ) ;
-
- %non_html_urls= ( 'body' => [ 'background' ],
- 'img' => [ 'src', 'lowsrc', 'dynsrc' ],
- 'input' => [ 'src' ],
- 'script' => [ 'src', 'for' ],
-
- 'fig' => [ 'src' ],
- 'overlay' => [ 'src' ],
- 'select' => [ 'src' ],
- 'ul' => [ 'src' ],
- 'h1' => [ 'src' ],
- 'h2' => [ 'src' ],
- 'h3' => [ 'src' ],
- 'h4' => [ 'src' ],
- 'h5' => [ 'src' ],
- 'h6' => [ 'src' ],
- 'hr' => [ 'src' ],
- 'table' => [ 'src' ],
- 'td' => [ 'src' ],
- 'th' => [ 'src' ],
- 'tr' => [ 'src' ],
-
- 'bgsound' => [ 'src' ],
- 'embed' => [ 'src' ],
- ) ;
-
- # %special_urls= ( 'base' => [ 'href' ] ) ;
- #
- # %special_html_urls= ( 'object' => [ 'codebase', 'data' ] ) ;
- #
- # %special_non_html_urls=
- # ( 'head' => [ 'profile' ],
- # 'object' => [ 'codebase', 'archive', 'classid' ],
- # 'applet' => [ 'codebase', 'code', 'object', 'archive' ],
- # 'form' => [ 'action', 'script' ]
- # ) ;
-
-
- # This is a translation from entity character references to characters,
- # used in &HTMLunescape().
- # This simplified version only supports " < > &, but that
- # should be enough for URL-type attributes.
- # See http://www.w3.org/TR/REC-html40/sgml/entities.html for full entity
- # list.
-
- %e_to_ch= (quot => '"',
- 'lt' => '<',
- 'gt' => '>',
- amp => '&') ;
-
-}
-
-
-#----------------------------------------------------------------------
-
-# Add the URL to our data structures; specifically, to %url and @urlstoget.
-# Returns a pointer to the structure in %url, or undef if already defined
-# or on error.
-# Currently, this always receives the URL with the host name lowercase,
-# either from &absolute_url() or from using $LOCAL_HOST.
-sub add_url {
- my($URL, $referer, $depth, $ishtml, $iscgi, $dontfollow)= @_ ;
-
- # Allow the user to restrict URL patterns: URLs must be in
- # @INCLUDE_PATTERNS but not in @EXCLUDE_PATTERNS (but only restrict
- # by @INCLUDE_PATTERNS if it's not empty).
- return undef if @INCLUDE_PATTERNS &&
- !grep( $URL=~ /$_/, @INCLUDE_PATTERNS ) ;
- return undef if grep( $URL=~ /$_/, @EXCLUDE_PATTERNS ) ;
-
- # Canonicalize URL, so we don't get a page multiple times
- $URL= &canonicalize($URL) ;
-
- # for obscure case involving a <form action=___.cgi>-extracted URL being
- # overwritten by <a href=___.cgi> extraction (don't fret over this)
- $url{$URL}{'dontfollow'}&&= $dontfollow if $url{$URL} ;
-
- # Don't add the record a second time! Or will infinitely traverse.
- return undef if $url{$URL} ; # or add to @referers, for 301 correction...?
-
- # Only HTTP URLs are currently supported
- return undef unless $URL=~ /^http:/i ;
-
- # Any self-referral here indicates a bug in the program. It's happened.
- die "PROGRAM ERROR: $URL shows its first referer as itself.\n"
- if $referer eq $URL ;
-
- my(%u) ;
- @u{qw(URL referer depth ishtml iscgi dontfollow)}=
- ($URL, $referer, $depth, $ishtml, $iscgi, $dontfollow) ;
- $u{'islocal'}= ($URL=~ m#^http://\Q$LOCAL_HOST\E/#io) + 0 ; # make length>0
- if ($u{'islocal'}) {
-# $u{'filename'}= &url_to_filename($URL) ;
- @u{'filename', 'location'}= &url_to_filename($URL) ;
- $u{'iscgi'}= &is_cgi($u{'filename'}, $URL) if $u{'iscgi'} eq '' ;
-
- # 2-27-00 JSM: Detect ishtml by filename, not -T test.
- if ( $u{'ishtml'} eq '' ) {
- $u{'ishtml'}= $HTML_BY_NAME
- ? ( !$u{'iscgi'} && -e $u{'filename'} &&
- $u{'filename'}=~ /\.html?$/i ) + 0
- : (!$u{'iscgi'} && -e $u{'filename'} && -T _) + 0 ;
- }
-# $u{'ishtml'}= (!$u{'iscgi'} && -e $u{'filename'} && -T _) + 0
-# unless length($u{'ishtml'}) ;
-
- }
-
- # If we're only doing a file check, don't add URLs that require HTTP
- return undef if ($file_check and (!$u{'islocal'} or $u{'iscgi'}) ) ;
-
- push(@urlstoget, \%u) ;
- $url{$URL}= \%u ;
-
- # return \%u ; # unneeded because of previous statement
-}
-
-
-# Guess if a file is a CGI script or not. Returns true if the (regular) file
-# is executable, has one of @CGI_EXTENSIONS, or if the URL is in a
-# ScriptAlias'ed directory.
-# $fname must be absolute path, but $URL is optional (saves time if available).
-# Note that URLs like "/path/script.cgi?a=b" are handled correctly-- the
-# previously extracted filename is tested for CGI-ness, while the URL is
-# checked for ScriptAlias matching (which is unaffected by final query
-# strings or PATH_INFO).
-sub is_cgi {
- my($fname, $URL)= @_ ;
- return 1 if (-x $fname && ! -d _ ) ; # should we really do this?
- foreach (@CGI_EXTENSIONS) { return 1 if $fname=~ /\Q$_\E$/i }
-
- $URL= &filename_to_url($fname) unless length($URL) ; # currently unused
- my($URLpath)= $URL=~ m#^http://[^/]*(.*)#i ;
- foreach (keys %SCRIPT_ALIAS) { return 1 if $URLpath=~ /^\Q$_\E/ }
- foreach (keys %SCRIPT_ALIAS_MATCH) { return 1 if $URLpath=~ /^$_/ }
-
- return 0 ;
-}
-
-
-# Put the URL in such a form that two URLs that point to the same resource
-# have the same URL, to avoid superfluous retrievals.
-# Host name is lowercased elsewhere-- this routine is only called from
-# &add_url; see note there. To lowercase the host name here would be
-# inefficient.
-sub canonicalize {
- my($URL)= @_ ;
-
- $URL=~ s/#.*// ; # remove any "#" fragment from end of URL
-
- return $URL ;
-}
-
-
-#----- File reading/downloading routines (includes networking) --------
-
-# Verify that a URL exists, and set $url->{'status'} accordingly. Do
-# this either by checking the local filesystem or by using the HTTP HEAD
-# method for remote sites or CGI scripts.
-# Set $url->{'ishtml'} accordingly if discovered from Content-Type:.
-# This does not support various Redirect directives in srm.conf.
-sub verify_url {
- my($url)= @_ ;
-
- print STDERR "verifying $url->{'URL'}\n" if $debug ;
-
-
- # Depending on the state of $url->{islocal, iscgi, dontfollow} and
- # $full_http_check, take appropriate actions to check/set the
- # status code for this URL.
-
- # NOTE: In some situations, specifically when checking a CGI script
- # named in a <form action> (thus implying that dontfollow is set),
- # and using HTTP to check the URL (because the script is remote or
- # $full_http_check is set), the HTTP response code may not be
- # accurate. This is because there is no form data sent with the
- # request, as there normally would be. In these cases, a cautionary
- # note is appended to $url->{'status'}. Additionally, an empty
- # $url->{'status'} is changed to an explanatory note (maybe we should
- # do that in load_url() too?).
-
- # Use HEAD if file is remote, or if $full_http_check is set.
- if (!$url->{'islocal'} or $full_http_check) {
- &load_url_using_HTTP($url, 'HEAD') ;
- $url->{'status'}= '[no status returned]'
- unless length($url->{'status'}) ;
- $url->{'status'}.= ' (NOTE: Form was not submitted normally)'
- if $url->{'dontfollow'} ;
-
- # URL is local: If it's not CGI, do a normal local file check
- } elsif (!$url->{'iscgi'}) {
- $url->{'status'}= (-e $url->{'filename'})
- ? "200 Local File Exists" : "404 File Not Found" ;
-
- # URL is local CGI: Use HEAD unless dontfollow is set
- } elsif (!$url->{'dontfollow'}) {
- &load_url_using_HTTP($url, 'HEAD') ;
-
- # Else it's a local CGI with dontfollow set: Check for executable file
- } else {
- $url->{'status'}=
- (! -e $url->{'filename'}) ? "404 File Not Found"
- : (! -x $url->{'filename'}) ? "403 Local File Is Not Executable"
- : "200 Local Executable File Exists"
-
- }
-
-
-# Old verify routine below:
-#
-# # If is a local non-CGI file, check it directly from the filesystem
-# if ($url->{'islocal'} and !$url->{'iscgi'} and !$full_http_check) {
-# $url->{'status'}= (-e $url->{'filename'})
-# ? "200 Local File Exists" : "404 File Not Found" ;
-#
-# # Otherwise, download its HEAD from its HTTP server
-# } else {
-# &load_url_using_HTTP($url, 'HEAD') ;
-# }
-
-
-}
-
-
-
-# Load entire file/resource and return its contents, setting $url->{'status'}
-# accordingly. Do this either by checking the local filesystem or by
-# using the HTTP GET method for remote sites or CGI scripts.
-# Set $url->{'ishtml'} accordingly if discovered from Content-Type:.
-# This does not support various Redirect directives in srm.conf.
-sub load_url {
- my($url)= @_ ;
- my($HTML) ;
-
- print STDERR "loading $url->{'URL'}\n" if $debug ;
-
- # If is a local non-CGI file, read it directly from the filesystem
- if ($url->{'islocal'} and !$url->{'iscgi'} and !$full_http_check) {
- my($iscgi) ;
- ($HTML, $url->{'ssierrs'}, $iscgi)=
- &read_expanded_file($url->{'filename'}, $url->{'URL'}) ;
- $url->{'status'}=
- !defined($HTML)
- ? sprintf("450 Can't read file: %s (%s)", $!, $!+0)
- : @{$url->{'ssierrs'}}
- ? sprintf("451 SSI Error(s) (%s total)",
- scalar @{$url->{'ssierrs'}})
-
- : "200 Local File Read OK" ;
-
- # $url->{'iscgi'} may be set if an SHTML file included CGI calls.
- # Don't set it if we're doing a file check, in which case we'll
- # keep whatever $HTML we could get.
- $url->{'iscgi'}= $iscgi unless $file_check ;
- }
-
- # Otherwise (or if rereckoned), download the resource from its HTTP server
- if (!$url->{'islocal'} or $url->{'iscgi'} or $full_http_check) {
- (undef, undef, $HTML)= &load_url_using_HTTP($url, 'GET') ;
- }
-
- # Note that this will be set even when URL is to be reloaded, like
- # for a 601 (timeout) response.
- $url->{'hasbeenloaded'}= 1 ;
- return $HTML ;
-}
-
-
-# Read a local file and return its contents. If a file is SSI (aka SHTML),
-# expand any SSI <!--#include--> directives as needed, recursively
-# including nested files.
-# This is used for all local reads, SHTML or not, but the vast bulk of this
-# routine is for SHTML files.
-#
-# If file is SHTML, this routine also returns a structure of error data,
-# and a boolean saying if this file needs to be downloaded via HTTP
-# for a complete check (e.g. includes CGI calls).
-#
-# $fname must be canonicalized absolute path, but $URL parameter is optional.
-# %$parents contains all "include"-ancestors of the file, to prevent loops.
-# If omitted, assumes no ancestors (and a fresh hash is started).
-#
-# This routine seems much bigger and more complex than it needs to be.
-# It could be one third the size and much simpler if we didn't have to
-# worry about full error reporting on nested includes.
-#
-# Note: This routine was made to mimic what Apache would return to a client.
-# However, the result differs from Apache's in two slight ways, both
-# involving nested SSI within <!--#include file="..." -->, and both
-# apparent bugs in Apache 1.1 (may be fixed in later versions):
-#
-# 1) If a <file="..."> value contains no "/" (i.e. in current directory),
-# then Apache always parses the included file as SHTML, regardless of
-# extension. This routine checks @SHTML_EXTENSIONS for all included
-# files.
-# 2) If a <file="..."> value containing a "/" loads an SHTML file
-# containing a <virtual="..."> tag with a relative path, the directive
-# fails in Apache. This routine tries to guess the correct path/URL.
-#
-#
-# Notes on this routine, and SHTML files in general:
-#
-# At first thought, it seems like we could load each included file
-# only once, instead of once for every file that includes it.
-# However, because of the fact that relative URLs are resolved
-# relative to the top-level including file, the top-level file will
-# need to be expanded every time. (It's legal (though of questionable
-# wisdom) to include a file from e.g. both /a/index.shtml and
-# /b/index.shtml, so links from the included file point to different
-# URLs.)
-#
-# Note that while URLs in included files (e.g. <a href="...">) are
-# resolved relative to the top-level including file, nested include tags
-# are resolved relative to the direct includer.
-#
-# We could possibly be more efficient in time (but costly in memory)
-# by storing the expanded contents and $errlist of each included file,
-# since those will be constant (except $errlist's include-loop
-# reporting might vary somewhat). There are probably other ways to
-# eek out savings of time and memory, at the cost of complexity.
-#
-# The main loop here is inside of an s/// statement. Unusual, but it's an
-# appropriate way to handle the recursion. Recursion is needed, since each
-# included file may or may not be SHTML.
-#
-# $iscgi is set if a file includes "<!--#exec", or if it contains an
-# <!--#include virtual="..." --> tag that points to a CGI file, or if
-# any of its include-children sets $iscgi.
-#
-#
-# Notes to help clarify data structures, if (God forbid) you have to modify
-# this routine:
-#
-# Each error is a list of files in an "include chain", and $errlist is a
-# list of errors. $errlist is associated with the current $HTML. Each
-# error in $errlist is associated with some tag in $HTML, as iterated in
-# the s/// loop. When this routine returns ($HTML, $errlist), the
-# errors in $errlist should all have as their first element tags that
-# were found in $HTML.
-#
-# Each error's final element (the "leaf") is associated with a tag that
-# tried to load an invalid file. Each leaf will always be the complete
-# set of errors for that tag (i.e. it has no children, since it couldn't
-# load the file).
-#
-# If the file can be validly loaded, then we may have 0 or multiple errors
-# associated with this file/tag (and returned from this routine). Each
-# file's $errlist is an accumulation of all of its children's $errlist's.
-#
-# Errors that come from loading a child are associated with the child's
-# $HTML and tags. Before adding them to the parent's (current) $errlist,
-# they must have the CHILD's path/tag unshifted onto the front of the
-# include chain; all errors are then added to the current $errlist.
-# This ensures that:
-# a) The errors are now all associated with the tag that loaded the child.
-# b) The errors in the current $errlist are always associated with tags
-# from the current $HTML.
-#
-
-sub read_expanded_file {
- my($fname, $URL, $parents)= @_ ;
- my($HTML, $errlist, $iscgi) ;
- my($isshtml) ;
-
- $parents->{$fname}= 1 ;
-
- $HTML= &read_file($fname) ;
- return(undef) unless defined($HTML) ;
-
- foreach (@SHTML_EXTENSIONS) {
- $isshtml= 1, last if ($fname=~ /\Q$_\E$/i) ;
- }
-
- if ($isshtml) {
- $errlist= [] ;
- $iscgi= ($HTML=~ /<!--#exec\b/i) ;
-
- $HTML=~ s{(<!--#include\b.*?>)} {
- do {
- my($childfname, $childURL) ;
- my($childHTML, $childerrlist, $childiscgi) ;
- my($tagst) = $1 ;
- my($tag)= &parse_tag($tagst) ;
- GET_CHILD: {
- if (length($tag->{'attrib'}{'virtual'})) {
- $URL= &filename_to_url($fname) unless length($URL) ;
- $childURL=
- &absolute_url($tag->{'attrib'}{'virtual'}, $URL) ;
- ($childfname)= &url_to_filename($childURL) ;
-
- # If it's a CGI, don't follow it, but no error either
- if (&is_cgi($childfname, $childURL)) {
- $iscgi= 1 ;
- last GET_CHILD ;
- }
-
- } elsif (length($tag->{'attrib'}{'file'})) {
- $childfname= $tag->{'attrib'}{'file'} ;
- if ($childfname=~ m#^(/|~)#) {
- push(@$errlist, [ {'path' => $childfname,
- 'tag' => $tagst, 'errmsg' =>
- 'Absolute paths are not allowed in '
- . '<!--#include file="..." -->.'}]);
- last GET_CHILD ;
- }
- if ($childfname=~ m#\.\.(/|$)#) {
- push(@$errlist, [ {'path' => $childfname,
- 'tag' => $tagst, 'errmsg' =>
- 'Paths can not contain "../" in '
- . '<!--#include file="..." -->.'}]);
- last GET_CHILD ;
- }
- $childfname= ($fname=~ m#(.*/)#)[0] . $childfname ;
-
- } else {
- push(@$errlist, [ {'path' => '',
- 'tag' => $tagst, 'errmsg' =>
- 'Tag must contain either the "file" or '
- . '"virtual" attribute.'}]);
- last GET_CHILD ;
-
- }
-
- # canonicalize filename for %$parents
- 1 while $childfname=~ s#/\.(/|$)#/# ;
- 1 while $childfname=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-
- # Guarantee that file exists, is regular, and is readable
- unless (-e $childfname) {
- push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
- 'errmsg' => 'File not found'} ] ) ;
- last GET_CHILD ;
- }
- unless (-f $childfname) {
- push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
- 'errmsg' => 'File is not a regular'
- . ' file.' } ] ) ;
- last GET_CHILD ;
- }
- unless (-r $childfname) {
- push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
- 'errmsg' => 'File is not readable by'
- . ' current user.' } ] ) ;
- last GET_CHILD ;
- }
-
- # Guard against include loops
- if ($parents->{$childfname}) {
- push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
- 'errmsg' => 'An "include" loop exists'
- . ' involving this file.' } ] ) ;
- last GET_CHILD ;
- }
-
-
- # Get the included file, with any error data
- ($childHTML, $childerrlist, $childiscgi)=
- &read_expanded_file($childfname, $childURL, $parents) ;
-
- # Log if there was any error reading the file
- push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
- 'errmsg' => "Can't read file: $!." } ] )
- unless defined($childHTML) ;
-
- # Add any errors to the current (parent) error list
- foreach my $error (@$childerrlist) {
- unshift(@$error,
- { 'path' => $childfname, 'tag' => $tagst } ) ;
- }
- push(@$errlist, @$childerrlist) ;
-
- # Parent is a CGI if any of its children is a CGI
- $iscgi||= $childiscgi ;
-
- } # GET_CHILD
-
-
- $childHTML ; # final value to replace in main s/// construct
-
- } # do {}
-
- }gie ; # $HTML=~ s{} {}
-
- } # if ($isshtml)
-
- delete $parents->{$fname} ;
-
- return($HTML, $errlist, $iscgi) ;
-}
-
-
-
-# Returns the contents of the named file, or undef on error.
-sub read_file {
- my($fname)= @_ ;
- local(*F, $/) ;
-
- undef $/ ;
- open(F, "<$fname") || return undef ;
- my($ret)= <F> ;
- close(F) ;
-
- return $ret ;
-}
-
-
-# Try to get the given URL with the given HTTP method, and return the
-# status line, headers, and body.
-# Set $url->{'status'} accordingly, and set $url->{'ishtml'} accordingly
-# if Content-Type: header is returned.
-# This is specific to this program, and calls the more general &get_url().
-# This could be slightly more efficient if 302 or 303 was handled in the
-# calling routine, where it could take advantage of a new URL being local.
-sub load_url_using_HTTP {
- my($url, $method)= @_ ;
- my($status_line, $headers, $body) ;
-
- # We should not get here if $file_check is set
- die "mistakenly called load_url_using_HTTP($url->{'URL'})" if $file_check ;
-
- GETFILE: {
- ($status_line, $headers, $body)=
- &get_url( ($url->{'location'} || $url->{'URL'}), $method) ;
-
- # If HEAD failed (as on some servers), sigh and use GET
- ($status_line, $headers, $body)=
- &get_url( ($url->{'location'} || $url->{'URL'}), 'GET')
- unless length($status_line) ;
-
- ($url->{'status'})= $status_line=~ m#^HTTP/[\d.]+\s+(.*)# ;
-
- # 2-27-00 JSM: Allow old NCSA servers to not include the HTTP version.
- if ($SUPPORT_NCSA_BUG and $url->{'status'} eq '') {
- ($url->{'status'})= $status_line=~ m#^HTTP(?:/[\d.]+)?\s+(.*)# ;
- }
-
- # Redirect to new location if status is 302 or 303
- if ($url->{'status'}=~ /^(301|302|303)\b/) {
- ($url->{'location'})= $headers=~ m#^Location:[ \t]+(\S+)#im ;
- last GETFILE unless length($url->{'location'}) ;
- $url->{'location'}=
- &absolute_url($url->{'location'}, $url->{'URL'}) ;
- redo GETFILE
- if ($url->{'status'}=~ /^(302|303)\b/)
- && (++$url->{'numredirects'} <= $MAX_REDIRECTS) ;
- }
- }
-
- $url->{'numtries'}++ ;
- $url->{'lasttried'}= time ;
-
- # If successful response included Content-Type:, set ishtml accordingly
- $url->{'ishtml'}= (lc($1) eq 'text/html') + 0
- if $url->{'status'}=~ /^2/
- and $headers=~ m#^content-type:[ \t]*(\S+)#im ;
-
- print STDERR "status: $status_line\n" if $debug ;
-
- return($status_line, $headers, $body) ;
-}
-
-
-# Request the HTTP resource at the given absolute URL using the given method,
-# and return the response status line, headers, and body.
-# jsm-- in the future, this should support downloading to a file, in case
-# the download is too large to fit in memory.
-sub get_url {
- my($URL, $method)= @_ ;
- my($host, $uri, $endhost) ;
- my($S, $rin) ;
- my($response, $status_line, $headers, $body, $status_code) ;
- my($content_length) ;
- $method= uc($method) ;
- $method= 'GET' unless length($method) ;
-
- ($host, $uri)= $URL=~ m#^http://([^/]*)(.*)$#i ;
- $uri= '/' unless length($uri) ;
- $endhost= $host ;
-
- # use an HTTP proxy if $ENV{'http_proxy'} is set
- USEPROXY: {
- last USEPROXY unless $host=~ /\./ ;
- if (length($ENV{'http_proxy'})) {
- foreach (@NO_PROXY) {
- last USEPROXY if $host=~ /$_$/i ;
- }
- ($host)= $ENV{'http_proxy'}=~ m#^(?:http://)?([^/]*)#i ;
- $uri= $URL ;
- }
- }
-
- # Open socket
- $S= IO::Socket::INET->new(PeerAddr => $host, # may contain :port
- PeerPort => 80, # default if none in PeerAddr
- Proto => 'tcp') ;
- return("HTTP/1.1 600 Can't create socket: $@") unless defined($S) ;
- $S->autoflush() ; # very important!!
-
- # Send HTTP 1.1 request
- print $S "$method $uri HTTP/1.1\015\012",
- "Host: $endhost\015\012",
- "Connection: close\015\012",
- "User-agent: CheckLinks/$CL_VERSION\015\012",
- "\015\012" ;
-
- # Wait for socket response with select()
- vec($rin= '', fileno($S), 1)= 1 ;
- select($rin, undef, undef, 60)
- || return("HTTP/1.1 601 Connection timed out") ;
-
- local($/)= "\012" ;
-
- # Handle "100 Continue" responses for HTTP 1.1: loop until non-1xx.
- do {
- $status_line= <$S> ;
- $status_line=~ s/\015?\012$// ;
- ($status_code)= $status_line=~ m#^HTTP/\d+\.\d+\s+(\d+)# ;
-
- $headers= '' ;
- while (<$S>) {
- last if /^\015?\012/ ;
- $headers.= $_ ;
- }
- $headers=~ s/\015?\012[ \t]+/ /g ;
- } until $status_code!~ /^1/ ;
-
- # Body length is determined by HTTP 1.1 spec, section 4.4: these
- # certain conditions implying no body, then chunked encoding,
- # then Content-length: header, then server closing connection.
- if ($method eq 'HEAD' or $status_code=~ /^(1|204\b|304\b)/) {
- $body= undef ;
-
- # else chunked encoding
- } elsif ($headers=~ /^transfer-encoding:[ \t]*chunked\b/im) {
- # 7-16-99: Old code was only saving last chunk. Fix using
- # $this_chunk contributed by Mark Trotter.
- my($this_chunk, $chunk_size, $readsofar, $thisread) ;
- while ($chunk_size= hex(<$S>)) {
- $readsofar= 0 ;
- while ($readsofar!=$chunk_size) {
- last unless $thisread=
- read($S, $this_chunk, $chunk_size-$readsofar, $readsofar) ;
- $readsofar+= $thisread ;
- }
- return("HTTP/1.1 603 Incomplete chunked response", $headers, $body)
- if $readsofar!=$chunk_size ;
- $_= <$S> ; # clear CRLF after chunk
- $body.= $this_chunk ;
- }
-
- # Read footers if they exist
- while (<$S>) {
- last if /^\015?\012/ ;
- $headers.= $_ ;
- }
- $headers=~ s/\015?\012[ \t]+/ /g ;
-
-
- # else body length given in Content-length:
- } elsif (($content_length)= $headers=~ /^content-length:[ \t]*(\d+)/im) {
- my($readsofar, $thisread) ;
- while ($readsofar!=$content_length) {
- last unless $thisread=
- read($S, $body, $content_length-$readsofar, $readsofar) ;
- $readsofar+= $thisread ;
- }
- return(sprintf("HTTP/1.1 602 Incomplete response (%s of %s bytes)",
- $readsofar+0, $content_length),
- $headers, $body)
- if $readsofar!=$content_length ;
-
-
- # else body is entire socket output
- } else {
- local($/)= undef ;
- $body= <$S> ;
- }
-
- close($S) ;
-
- return($status_line, $headers, $body) ;
-}
-
-
-#----- URL-parsing routines -------------------------------------------
-
-# The routines parse_url(), unparse_url(), and absolute_url() are based on
-# different sections in the Internet Draft "Uniform Resource Identifiers
-# (URI): Generic Syntax and Semantics", 11-18-97, by Berners-Lee,
-# Fielding, and Masinter, filename draft-fielding-uri-syntax-01.
-
-# Parse a URL into its components, according to URI draft, sections 4.3, 4.4.
-# This regular expression is straight from Appendix B, modified to use Perl 5.
-# Returns scheme, site, path, query, and fragment. All but path may have
-# the undefined value.
-sub parse_url {
- my($URL)= @_ ;
- my($scheme, $site, $path, $query, $fragment)=
- ($URL=~ m{^(?: ([^:/?\#]+):)?
- (?: // ([^/?\#]*))?
- ([^?\#]*)
- (?: \? ([^\#]*))?
- (?: \# (.*))?
- }x
- ) ;
-
-
- # Un-URL-encode the path, to equivalate things like %7E --> ~
- # Note that in some situations, this may cause problems with URLs that
- # contain the % character: if the unescaped URL is then used in
- # relative URL calculation, it may be unescaped again (rare).
- $path=~ s/\+/ /g ;
- $path=~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/ge ;
-
- # Note that in HTTP, the presence of a host implies a path beginning with
- # '/', so $path should be '/' for URLs like "http://www.somehost.com"
- $path= '/' if !length($path) && length($site) && lc($scheme) eq 'http' ;
-
- return($scheme, $site, $path, $query, $fragment) ;
-
-}
-
-
-# Returns a full URL string, given its components
-# The full procedure is described in the URI draft, section 5.2, step 7.
-sub unparse_url {
- my($scheme, $site, $path, $query, $fragment)= @_ ;
- my($URL) ;
-
- $URL= "$scheme:" if defined($scheme) ;
- $URL.= "//$site" if defined($site) ;
- $URL.= $path ;
- $URL.= "?$query" if defined($query) ;
- $URL.= "#$fragment" if defined($fragment) ;
-
- return $URL ;
-}
-
-
-# Returns a canonicalized absolute URL, given a relative URL and a base URL.
-# The full procedure is described in the URI draft, section 5.2.
-# Note that a relative URI of "#fragment" should be resolved to "the current
-# document", not to an absolute URL. This presents a quandary for this
-# routine: should it always return an absolute URL, thus violating the
-# spec, or should it not always return an absolute URL, thus requiring any
-# caller to check for this special case? This routine leaves that up to
-# the caller, with $return_rel_fragment-- if set, stick to the spec;
-# otherwise, always return an absolute URL. See section G.4 of the draft.
-# Note that the pathname reduction in steps 6.c-f messes up any PATH_INFO
-# that has ./ or ../ in it, which may be a bug in the spec.
-sub absolute_url {
- my($relurl, $baseurl, $return_rel_fragment)= @_ ;
- my(@relurl, @baseurl) ;
-
- # parse_url() returns scheme, site, path, query, fragment
- @relurl= &parse_url($relurl) ; # Step 1
- @baseurl= &parse_url($baseurl) ;
-
- COMBINE: {
-
- # Step 2
- # See note above about $return_rel_fragment
- if ( $relurl[2] eq '' &&
- !defined($relurl[0]) &&
- !defined($relurl[1]) &&
- !defined($relurl[3]) ) {
- @relurl[0..3]= @baseurl[0..3] ;
- return $relurl if $return_rel_fragment ; # see note above
- last COMBINE ;
- }
-
- last COMBINE if defined($relurl[0]) ; # Step 3
- $relurl[0]= $baseurl[0] ;
-
- last COMBINE if defined($relurl[1]) ; # Step 4
- $relurl[1]= $baseurl[1] ;
-
- last COMBINE if $relurl[2]=~ m#^/# ; # Step 5
-
- # Step 6-- resolve relative path
- my($path)= $baseurl[2]=~ m#^(.*/)# ; # Step 6.a
- $relurl[2]= $path . $relurl[2] ; # Step 6.b
-
- } # COMBINE
-
- # Put the remaining steps outside of the block to canonicalize the path.
- # Arguably, this is not allowed. To avoid such arguments at the expense of
- # path canonicalization, put steps 6.c-f back in the COMBINE block.
-
- 1 while $relurl[2]=~ s#(^|/)\./#$1# ; # Step 6.c
- $relurl[2]=~ s#(^|/)\.$#$1# ; # Step 6.d
-
- # Step 6.e
- my($oldpath) ;
- while ($relurl[2]=~ s#(([^/]+)/\.\./)# ($2 eq '..') ? $1 : '' #ge) {
- last if ($relurl[2] eq $oldpath) ;
- $oldpath= $relurl[2] ;
- }
-
- # Step 6.f
- $relurl[2]=~ s#(([^/]+)/\.\.$)# ($2 eq '..') ? $1 : '' #ge ;
-
- # Step 6.g: allow leading ".." segments to remain in path
- # Step 6.h: relurl[2] is already the buffer string
-
- # To canonicalize further, lowercase the hostname (is this valid for all
- # schemes?)
- $relurl[1]= lc($relurl[1]) if defined($relurl[1]) ;
-
- return &unparse_url(@relurl) ; # Step 7
-}
-
-
-
-# Convert a local URL into a canonicalized absolute path, or undef if
-# not on this host or other error.
-# Result should only be used as filename.
-# Supports UserDir (e.g. public_html) for "/~username/path/file" URLs.
-# Supports Alias, AliasMatch, ScriptAlias, and ScriptAliasMatch from srm.conf
-# (but note use of Perl regex's instead of standard regex's).
-# Inserts index.html, etc. (from @DIRECTORY_INDEX) if result is a directory,
-# but just return directory name (ending in '/') if none of those exists.
-# Removes PATH_INFO, if any, from filename.
-# Directory names are always returned with trailing slash (which would not
-# be appropriate if PATH_INFO was to be retained).
-# While this routines makes some tests (e.g. if the file is a directory),
-# it does not verify that file at the resulting $filename exists.
-# Note that not all URLs point to files, so this routine is not always
-# appropriate. In this program, the result from this routine is only
-# used when we know the URL is not a CGI script (and is therefore a file),
-# except in &is_cgi() itself, which tests if a file is a CGI script.
-# If it weren't for &is_cgi(), we could ignore cases when the URL isn't
-# a file.
-# 12-1-99 JSM: Changed to also return "redirected" location, in case URL
-# is a directory but not ending in a slash, so relative URLs will resolve
-# correctly against the redirected URL.
-sub url_to_filename {
- my($URL)= @_ ;
- my($URLpath, $path, $location, $docroot, $user) ;
- return undef unless $URL=~ m#^http://\Q$LOCAL_HOST\E/#io ;
- $URLpath= (&parse_url($URL))[2] ;
- die "couldn't get path from [$URL]" unless length($URLpath) ;
-
- # Note minor security hole: if this script is run setuid, then any
- # file on the system could be read by using an ALIAS to point to the
- # file. Note also that if a $URLpath such as "/alias/dir/../.." is
- # passed to this routine, the alias will be substituted BEFORE the
- # ".." path segments are traversed. A case like this probably a
- # mistake in the URL anyway.
-
- # Make no more than one alias substitution-- is there a precedence order?
- # Note that %(.*)_MATCH use Perl regex's, not standard regex's.
- # 3-29-99 JSM: These all alias to actual directory, not to a resulting
- # URL, so no further conversion should be done if one of these matches.
- # 3-29-99 JSM: Changed ALIAS_MATCH and SCRIPT_ALIAS_MATCH blocks to
- # allow $1-type substitution in targets; MUST TEST!
- ALIAS: {
- foreach (keys %ALIAS)
- { $path= $URLpath, last ALIAS
- if $URLpath=~ s/^\Q$_\E/$ALIAS{$_}/ }
- foreach (keys %ALIAS_MATCH)
- { $path= $URLpath, last ALIAS
- if eval "\$URLpath=~ s/^\$_/$ALIAS_MATCH{$_}/" }
- foreach (keys %SCRIPT_ALIAS)
- { $path= $URLpath, last ALIAS
- if $URLpath=~ s/^\Q$_\E/$SCRIPT_ALIAS{$_}/ }
- foreach (keys %SCRIPT_ALIAS_MATCH)
- { $path= $URLpath, last ALIAS
- if eval "\$URLpath=~ s/^\$_/$SCRIPT_ALIAS_MATCH{$_}/" }
- }
-
-
- # If $path has been set in above ALIAS block, no further conversion is
- # needed.
- if ($path eq '') {
-
- # Must check for ^/.. before PATH_INFO check, in case $URL's path
- # is e.g. '/../conf/access.conf'
- return undef if $URLpath=~ m#^/\.\.(/|$)# ; # ^/.. is not allowed
-
- # Set $docroot and $path for this file, based on the URL (contains '~' ?)
- if (length($USER_DIR) and ($user,$path)= $URLpath=~ m#^/~([^/]+)(.*)# ) {
- &read_home_dirs unless %home_dir ; # only read when needed
- return undef unless length($home_dir{$user}) ;
- $docroot= "$home_dir{$user}/$USER_DIR" ;
- $path= '/' unless length($path) ;
- } else {
- # If we have no $DOCUMENT_ROOT, we can't handle URLs without ~.
- return undef unless $DOC_ROOT_EXISTS ;
- $docroot= $DOCUMENT_ROOT ;
- $path= $URLpath ;
- }
-
- # Handle PATH_INFO: remove path segments until an existing file is named.
- # Note that directories cannot have PATH_INFO after them.
- unless (-e "$docroot$path") {
- for (my($path2)= $path ; $path2=~ m#/# ; $path2=~ s#/[^/]*$##) {
- last if -d "$docroot$path2" ;
- $path= $path2, last if -e "$docroot$path2" ;
- }
- }
-
- # canonicalize path, and recheck for ^/.. (handles an obscure error,
- # when $URL's path is e.g. '/a/b/../../..'; but must canonicalize
- # after PATH_INFO check, in case path is e.g. '/a/b.cgi/../../..').
- 1 while $path=~ s#/\.(/|$)#/# ;
- 1 while $path=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
- return undef if $path=~ m#^/\.\.(/|$)# ; # ^/.. is not allowed
-
- $path= "$docroot$path" ;
-
- }
-
-
- # Add "index.html", etc. if appropriate
- if (-d $path) {
- $path.= '/' unless $path=~ m#/$# ;
- # 12-1-99 JSM: set "redirected" location also
- $location= "$URL/" unless $URL=~ m#/$# ;
- foreach (@DIRECTORY_INDEX) {
- $path.= $_, last if -f "$path$_" ;
- }
- }
- return ($path, $location) ;
-}
-
-
-# Convert a local (possibly relative) pathname into a canonicalized URL.
-# If filename is relative and no $basepath is given, assume it's in the
-# current directory.
-# Supports UserDir (e.g. public_html) for "/~username/path/file" URLs.
-# Each path segment is checked to see if it's the same as $DOCUMENT_ROOT,
-# by comparing inodes. When a match is found, it's cut off the front,
-# and an absolute URL is constructed. If $DOCUMENT_ROOT is never matched,
-# then $USER_DIR is scanned for. If that doesn't match (i.e. the file
-# is not served to the Web), undef is returned.
-# Note that $DOC_ROOT_DEV and $DOC_ROOT_INODE are set at the start of the
-# program for efficiency, but are an integral part of this routine.
-# %ALIAS is supported using %UN_ALIAS, as best as possible. See next note
-# on avoiding use of this routine.
-# This is currently only used when parsing command-line filenames, and when
-# an <!--#include file="..." --> includes an <!--#include virtual="..." -->
-# (which may be an error anyway). Thus, it can be avoided if needed, such
-# as when complex aliasing makes results ambiguous.
-# jsm-- should this add/remove @DIRECTORY_INDEX, to avoid some duplication?
-# 3-29-99 JSM: Changed UNALIAS handling-- if it's unaliased, then no other
-# conversion is necessary.
-sub filename_to_url {
- my($path, $basepath)= @_ ;
- my($URLpath) ;
- unless ($path=~ m#^/#) {
- $basepath= $CWD unless length($basepath) ;
- $basepath.= '/' if -d $basepath && $basepath!~ m#/$# ;
- $basepath=~ s#/[^/]*$#/# ;
- $path= "$basepath$path" ;
- }
-
- # canonicalize filename by removing ./ and ../ where appropriate
- 1 while $path=~ s#/\.(/|$)#/# ;
- 1 while $path=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-
- # canonicalize directory to include final /
- $path.= '/' if -d $path && $path!~ m#/$# ;
-
- # First, if path can be unaliased, return that.
- # (Added 3-29-99 by JSM.)
- foreach (keys %UN_ALIAS)
- { $URLpath= $path, last if $path=~ s/^\Q$_\E/$UN_ALIAS{$_}/ }
- return "http://\L$LOCAL_HOST\E$URLpath" if $URLpath ne '' ;
-
- # Then, check if file is under $DOCUMENT_ROOT tree, and convert if so.
- if ($DOC_ROOT_EXISTS) {
- my($doc_root)= $path ;
- while ($doc_root=~ s#/[^/]*$##) {
- my($dev,$inode)= stat("$doc_root/.") ;
- if ( ($dev==$DOC_ROOT_DEV) && ($inode==$DOC_ROOT_INODE) ) {
- $path=~ s/^$doc_root// ;
-# foreach (keys %UN_ALIAS)
-# { last if $path=~ s/^\Q$_\E/$UN_ALIAS{$_}/ }
- return "http://\L$LOCAL_HOST\E$path" ;
- }
- }
- }
-
- # Handle possible case of "~username/$USER_DIR/$path"
- # I don't think %ALIAS applies here, does it?
- # This misses some when $HOME/$USER_DIR points through a symbolic link,
- # and $CWD isn't set to match %dir_to_user. Work around by avoiding
- # this routine, e.g. using only URLs on command line.
- if (length($USER_DIR)) {
- if ($path=~ m#^(.*?)/$USER_DIR(/.*)# ) {
- # First, see if path is in %dir_to_user
- &read_home_dirs unless %dir_to_user ; # only read when needed
- return "http://\L$LOCAL_HOST\E/~$dir_to_user{$1}$2"
- if length($dir_to_user{$1}) ;
-
- # If not, then we must check inodes to equivalate directories
- &read_inode_to_user unless %inode_to_user ; # only read when needed
- my($dev,$inode)= stat("$1/.") ;
- return "http://\L$LOCAL_HOST\E/~$inode_to_user{$dev}{$inode}$2"
- if length($inode_to_user{$dev}{$inode}) ;
- }
- }
-
- return undef ;
-}
-
-
-
-# Reads all users' home directory into %home_dir, from /etc/passwd.
-# Also creates %dir_to_user, which is faster than %inode_to_user (below).
-# Only used when $USER_DIR is used, for "/~username/path/file" URLs.
-# 2-27-00 JSM: Changed to use getpwent, instead of reading /etc/passwd.
-sub read_home_dirs {
- my($user, $homedir) ;
-
- setpwent ; # to rewind, in case getpwent has already been used
- while ( ($user, $homedir)= (getpwent)[0,7] ) {
- $home_dir{$user}= $homedir ;
- $dir_to_user{$homedir}= $user
- unless $dir_to_user{$homedir} ne '' ;
- }
- endpwent ; # clean way to end getpwent processing
-}
-
-
-# Reads home directory inode information into %inode_to_user, from /etc/passwd.
-# Because this is time-consuming, it is only called if needed, and only once.
-# Only used when $USER_DIR is used, for "/~username/path/file" URLs.
-# On SPARCstation-10 with 3000 /etc/passwd records, this takes ~2 seconds.
-# 2-27-00 JSM: Changed to use already-existing %home_dir, instead of reading
-# /etc/passwd again.
-sub read_inode_to_user {
- my($user, $homedir) ;
- my($dev, $inode) ;
- &read_home_dirs unless %home_dir ; # only read when needed
-
- while ( ($user, $homedir)= each %home_dir ) {
- ($dev,$inode)= stat("$homedir/.") ;
- $inode_to_user{$dev}{$inode}= $user
- unless $inode_to_user{$dev}{$inode} ne '' ;
- }
-}
-
-
-
-#----- Extracting URLs from HTML ------------------------------------
-
-
-# Parse an SGML tag, and return a hash structure with a "name" scalar and
-# an "attrib" hash.
-# Parses first tag in string, ignoring all surrounding text.
-# Results are canonicalized to lower case wherever case-insensitive.
-sub parse_tag {
- my($tag)= @_ ; # will be mangled
- my($tagname,%attrib) ;
-
- # only parse first tag in string
- ($tag)= split(/>/, $tag) ; # remove all after >
- $tag=~ s/^([^<]*<)?\s*// ; # remove pre-<, <, and leading blanks
- ($tagname,$tag)= split(/\s+/, $tag, 2) ; # split out tag name
-
- # Extract name/value (possibly quoted), lowercase name, set $attrib{}.
- # If quoted, is delimited by quotes; if not, delimited by whitespace.
- $attrib{lc($1)}= &HTMLunescape($+)
- while ($tag=~ s/\s*(\w+)\s*=\s*(([^"']\S*)|"([^"]*)"?|'([^']*)'?)//) ;
-
- # now, get remaining non-valued (boolean) attributes
- $tag=~ s/^\s*|\s*$//g ; # skip leading/trailing blanks
- foreach (split(/\s+/, $tag)) {
- $_= lc($_) ;
- $attrib{$_}= $_ ; # booleans have values equal to their name
- }
-
- return { 'name' => lc($tagname),
- 'attrib' => \%attrib } ;
-}
-
-
-# Unescape any HTML character references and return resulting string.
-# Support entity character references in %e_to_ch (which is incomplete),
-# plus "$#ddd;" and "Ý" forms for values<256.
-# Note that not decoding a valid character is erroneous, in that a
-# subsequent re-escaping will not return the original string, because
-# of the ampersand. Nonetheless, that's preferable to losing the data.
-# Q: Is there an appropriate general way to represent an unescaped string?
-sub HTMLunescape {
- my($s)= @_ ;
-
- # Try alpha, decimal, and hex representations, only substituting if valid
- $s=~ s/&(([a-zA-Z][a-zA-Z0-9.-]*);?|#([0-9]+);?|#[Xx]([0-9a-fA-F]+);?)/
- length($2) ? ( defined($e_to_ch{$2}) ? $e_to_ch{$2} : "&$1" )
- : length($3) ? ( $3 < 256 ? chr($3) : "&$1" )
- : length($4) ? ( hex($4) < 256 ? chr(hex($4)) : "&$1" )
- : "&$1"
- /ge ;
-
- return $s ;
-}
-
-
-# Given a block of HTML, extracts all URLs referenced in it, and adds them
-# to our data structures to be downloaded or checked (i.e. calls
-# &add_url()).
-# Note that %html_urls and %non_html_urls are set at the start of the
-# program for efficiency, but are an integral part of this routine.
-# Currently, this extracts all <.*?> patterns, which may not be valid if
-# "<" or ">" characters are e.g. inside a <script> element.
-sub extract_urls {
- my($HTML, $baseurl, $referer, $depth)= @_ ;
- my(@tags) ;
-
- # Remove comments before extracting links, as pointed out by Tim Hunter.
- $HTML=~ s/<!--.*?--.*?>//gs ;
-
- # We must look for <base> tag before all the work, so we must parse
- # all tags first. :( Therefore, we save this large array of
- # structures for efficiency, hoping we don't run out of memory.
- my($i)= -1 ; # to start at array element 0
-
- foreach ($HTML=~ /(<.*?>)/gs) {
- $tags[++$i]= &parse_tag($_) ;
- $baseurl= $tags[$i]{'attrib'}{'href'}
- if ($tags[$i]{'name'} eq 'base')
- and (length($tags[$i]{'attrib'}{'href'})) ;
- }
-
- # For each tag, call &add_url() for each URL in the tag
- foreach my $tag (@tags) {
- next if $tag->{'name'}=~ m#^/# ;
-
- # Handle the "regular" tag-attributes, in %html_urls and %non_html_urls
-
- foreach (@{$html_urls{$tag->{'name'}}}) {
- &add_url(&absolute_url($tag->{'attrib'}{$_}, $baseurl),
- $referer, $depth)
- if length($tag->{'attrib'}{$_}) ;
- }
-
- foreach (@{$non_html_urls{$tag->{'name'}}}) {
- &add_url(&absolute_url($tag->{'attrib'}{$_}, $baseurl),
- $referer, $depth, 0)
- if length($tag->{'attrib'}{$_}) ;
- }
-
- # Now handle each tag-attribute that needs special attention
-
- if ($tag->{'name'} eq 'object') {
- my($codebase)=
- &absolute_url($tag->{'attrib'}{'codebase'}, $baseurl) ;
-
- &add_url(&absolute_url($tag->{'attrib'}{'data'}, $codebase),
- $referer, $depth)
- if length($tag->{'attrib'}{'data'}) ;
-
- # There seems to be a contradiction between the HTML 4.0 spec
- # section 13.3.3 and RFC 1808 section 4 step 2b regarding
- # the URL resolution of e.g. classid="java:program.start".
- # For now, we'll stick with the RFC 1808 method.
- &add_url(&absolute_url($tag->{'attrib'}{'classid'}, $codebase),
- $referer, $depth, 0)
- if length($tag->{'attrib'}{'classid'}) ;
-
- # <object> tag's "archive" attribute is a space-separated list
- foreach (split(/\s+/, $tag->{'attrib'}{'archive'})) {
- &add_url(&absolute_url($_, $codebase), $referer, $depth, 0) ;
- }
-
- } elsif ($tag->{'name'} eq 'head') {
- # "profile" attribute is a space-separated list
- foreach (split(/\s+/, $tag->{'attrib'}{'profile'})) {
- &add_url(&absolute_url($_, $baseurl), $referer, $depth, 0) ;
- }
-
- } elsif ($tag->{'name'} eq 'applet') {
- my($codebase)=
- &absolute_url($tag->{'attrib'}{'codebase'}, $baseurl) ;
-
- &add_url(&absolute_url($tag->{'attrib'}{'code'}, $codebase),
- $referer, $depth, 0)
- if length($tag->{'attrib'}{'code'}) ;
-
- &add_url(&absolute_url($tag->{'attrib'}{'object'}, $codebase),
- $referer, $depth, 0)
- if length($tag->{'attrib'}{'object'}) ;
-
- # <applet> tag's "archive" attribute is a comma-separated list
- foreach (split(/\s*,\s*/, $tag->{'attrib'}{'archive'})) {
- &add_url(&absolute_url($_, $codebase), $referer, $depth, 0) ;
- }
-
- # Check form script for existence only, but don't follow hyperlinks.
- # Handles the unlikely case when a CGI is referred to by both a
- # <form action=___.cgi> tag and an <a href=___.cgi> tag: If a CGI
- # is only pointed to by <form action>, then don't follow the link
- # (i.e. set $url->{'dontfollow'} to verify, not load). If a CGI
- # is called by at least one <a href> tag, then do follow the link.
- } elsif ($tag->{'name'} eq 'form') {
- &add_url(&absolute_url($tag->{'attrib'}{'action'}, $baseurl),
- $referer, $depth, undef, 1, 1)
- if length($tag->{'attrib'}{'action'}) ;
-
- } # if ($tag->{'name'} eq '...')
-
-
- } # foreach $tag (@tags)
-
-} # &extract_urls()
-
-
-
-#----- output routines ------------------------------------------------
-
-# Generate final report
-sub make_report {
- if ($verbose_report) { &make_verbose_report }
- else { &make_short_report }
-}
-
-
-
-# Generate a verbose report of all URLs that have been checked
-sub make_verbose_report {
- my($rootlist)= join("\n ", @ARGV) ;
- my($numurls)= scalar keys %url ;
-
- print <<EOH ;
-======================================================================
-Report of invalid links on $LOCAL_HOST,
-recursively followed starting with the files/URLs:
-
- $rootlist
-
-EOH
-
- if (@INCLUDE_PATTERNS) {
- my($includelist)= join("\n ", @INCLUDE_PATTERNS) ;
- print <<EOH ;
-Only including URLs matching at least one of the following patterns:
- $includelist
-
-EOH
- }
-
- if (@EXCLUDE_PATTERNS) {
- my($excludelist)= join("\n ", @EXCLUDE_PATTERNS) ;
- print <<EOH ;
-Excluding URLs matching any of the following patterns:
- $excludelist
-
-EOH
- }
-
- print "Total URLs checked: $numurls\n\n" ;
-
- print( "Only reporting response codes beginning with: ",
- join(", ", @INCLUDE_STATUS), "\n" )
- if @INCLUDE_STATUS ;
-
- print( "Excluding response codes beginning with: ",
- join(", ", @EXCLUDE_STATUS), "\n" )
- if @EXCLUDE_STATUS ;
-
- print "Maximum traversal depth: $max_depth\n" if length($max_depth) ;
- print "Only local files were checked; no CGI scripts were invoked.\n"
- if $file_check ;
- print "Local URLs were read from the filesystem where possible.\n"
- unless $full_http_check ;
-
- print "\n" ;
-
- # Only report status errors if there are any.
- # Using grep()s is slightly inefficient, but a *lot* cleaner.
- my($has_statuserrs) ;
- foreach my $URL (sort keys %url) {
- next if @INCLUDE_STATUS &&
- !grep($url{$URL}{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
- next if grep($url{$URL}{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
- $has_statuserrs=1, last ;
- }
-
-
- if ($has_statuserrs) {
- print <<EOH ;
-======================================================================
-
-RESULTS FROM ALL URLS WITH SELECTED RESPONSE STATUS CODES
-------------------------------------------------------------
-
-EOH
-
- foreach (sort keys %url) {
- my($u)= $url{$_} ;
-
- next if @INCLUDE_STATUS &&
- !grep($u->{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
- next if grep($u->{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
- print "$u->{'URL'}\n", '-' x 50, "\n" ;
- print "Status: $u->{'status'}\n" ;
- print "Moved to: $u->{'location'}\n" if $u->{'location'} ;
- print "Depth: $u->{'depth'}\n" ;
-
- for (my($URL)= $u->{'referer'}, my($tab)= ' ' ;
- length($url{$URL}) ;
- $URL= $url{$URL}{'referer'}, $tab.= ' ' )
- {
- print "${tab}referred by $url{$URL}{'URL'}\n" ;
- die "PROGRAM ERROR: apparent infinite referer loop.\n"
- if length($tab)>200 ; # simple-minded sanity check
- }
-
- print "\n\n" ;
- } # URL
-
- }
-
-
-
- # Only report SSI errors if there are any
- my($has_ssierrs) ;
- foreach (sort keys %url) {
- $has_ssierrs=1, last if @{$url{$_}{'ssierrs'}} ;
- }
-
-
- if ($has_ssierrs) {
- print <<EOH ;
-======================================================================
-
-PROBLEMS WITH SERVER-SIDE INCLUDE (AKA SHTML) DIRECTIVES
-------------------------------------------------------------
-
-EOH
- foreach (sort keys %url) {
- my($u)= $url{$_} ;
- if (@{$u->{'ssierrs'}}) {
- print "$u->{'URL'}\n", '-' x 50, "\n" ;
- printf "Total %s SSI Errors:\n", $#{$u->{'ssierrs'}}+1 ;
- foreach my $i (0..$#{$u->{'ssierrs'}}) {
- printf " %s) ", $i+1 ;
- my($tab)= ' ' x (4+length($i+1)) ;
- my($tab2) ;
- foreach my $level (@{$u->{'ssierrs'}[$i]}) {
- print "${tab2}file: $level->{'path'}\n" ;
- print "${tab}in tag: $level->{'tag'}\n" ;
- print "${tab}error: $level->{'errmsg'}\n"
- if $level->{'errmsg'} ;
- $tab.= ' ' ;
- $tab2= $tab ;
- }
- }
- print "\n\n" ;
- }
- }
- }
-
-
- unless ($has_statuserrs or $has_ssierrs) {
- print <<EOH ;
-======================================================================
-
- << NO ERRORS FOUND >>
-
-EOH
- }
-
- print '=' x 70, "\n" ;
-
-} # &make_verbose_report()
-
-
-# Generate a one-line-per-URL report
-sub make_short_report {
- my($numurls)= scalar keys %url ;
-
- print "Total $numurls URLs checked\n" ;
- URL: foreach my $URL (sort keys %url) {
- next if @INCLUDE_STATUS &&
- !grep($url{$URL}{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
- next if grep($url{$URL}{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
- print "$url{$URL}{'URL'}\t$url{$URL}{'status'}\n" ;
- } # URL
-}
-
-
-
-# Print a summary of usage and exit
-sub usage {
- print <<EOF ;
-
-Checklinks $CL_VERSION
-
-To recursively check all HTML links on the local site, enter:
- $0 <options> [ start-file | start-URL ] ...
-
-Options include:
- -v Generate full (verbose) report, including full
- referral information and detailed SSI error
- reporting.
- -I <include-pattern> Only check URLs matching <include-pattern>.
- -X <exclude-pattern> Don't check URLs matching <exclude-pattern>.
- -i <include-status> Only report URLs whose response code starts with
- the pattern <include-status>.
- -x <exclude-status> Don't report URLs whose response code starts with
- the pattern <exclude-status>. Default is to
- exclude "200" responses only (i.e. "-x 200").
- -d <max-depth> Traverse links no deeper than <max-depth>.
- -f "File mode"-- only read files from the filesystem;
- do not go through the HTTP server at all. This
- will skip all URLs that point to CGI scripts.
- -h "HTTP mode"-- use HTTP to check ALL URLs, even
- if they could be read from the filesystem.
- Incompatible with "-f" option.
- -c <config-file> Read appropriate configuration parameters from
- <config-file>, typically srm.conf. Use '-' to
- read from STDIN. If a directory is named, use
- "srm.conf" in that directory.
- -q Print current configuration parameters.
- -? Print this help message.
- -- End command-line option processing.
-
-Don't stack options like "-vf"; use "-v -f" instead.
-
-For -I, -X, -i, and -x:
- Values are interpreted as Perl 5 regular expressions.
- Use multiple options to build a list (e.g. "-I include1 -I include2").
- Use a value of '' to clear a list (e.g. -x '' means "report all responses",
- "-x '' -x 401" means "report all but 401 responses").
- As a special case, an empty -I or -i list implies no include-restrictions.
- If an item is in both the include and exclude list, it is excluded.
- Note that -I and -X restrict which URLs are traversed into, so they may
- prune large areas of your Web structure.
-
-EOF
- exit ;
-}
-
-
-#----- debugging routines below ---------------------------------------
-
-# Print current configuration settings
-sub print_config {
- print "\n----- OPTIONS SPECIFIC TO THIS EXECUTION -----------------------------\n\n" ;
-
- print "Include only URLs containing one of the following patterns:\n",
- ( map { " $_\n" } @INCLUDE_PATTERNS ),
- "\n"
- if @INCLUDE_PATTERNS ;
-
- print "Exclude URLs containing one of the following patterns:\n",
- (map { " $_\n" } @EXCLUDE_PATTERNS ),
- "\n"
- if @EXCLUDE_PATTERNS ;
-
- print "Only report response codes beginning with: ",
- join(", ", @INCLUDE_STATUS), "\n"
- if @INCLUDE_STATUS ;
-
- print "Don't report response codes beginning with: ",
- join(", ", @EXCLUDE_STATUS), "\n"
- if @EXCLUDE_STATUS ;
-
- print "\nMaximum search depth: $max_depth\n" if length($max_depth) ;
-
- print <<EOS ;
-
------ INSTALLATION PARAMETERS ----------------------------------------
-
-Local Host: $LOCAL_HOST
-Document Root: $DOCUMENT_ROOT
-User Web Directory: $USER_DIR
-Default Filename(s): @DIRECTORY_INDEX
-
-File extensions indicating a CGI program: @CGI_EXTENSIONS
-File extensions indicating server-parsed HTML: @SHTML_EXTENSIONS
-
-EOS
-
- print "Directory Aliases:\n",
- map { sprintf(" %15s ==> %s\n", $_, $ALIAS{$_}) }
- sort keys %ALIAS,
- "\n"
- if keys %ALIAS ;
-
- print "Directory Regular Expression Aliases:\n",
- map { sprintf(" %15s ==> %s\n", $_, $ALIAS_MATCH{$_}) }
- sort keys %ALIAS_MATCH,
- "\n"
- if keys %ALIAS_MATCH ;
-
- print "Script Directory Aliases:\n",
- map { sprintf(" %15s ==> %s\n", $_, $SCRIPT_ALIAS{$_}) }
- sort keys %SCRIPT_ALIAS,
- "\n"
- if keys %SCRIPT_ALIAS ;
-
- print "Script Directory Regular Expression Aliases:\n",
- map { sprintf(" %15s ==> %s\n", $_, $SCRIPT_ALIAS_MATCH{$_}) }
- sort keys %SCRIPT_ALIAS_MATCH,
- "\n"
- if keys %SCRIPT_ALIAS_MATCH ;
-
- if ($ENV{'http_proxy'}) {
- print "HTTP Proxy: $ENV{'http_proxy'}\n" ;
- print "Except to hosts ending in: $ENV{'no_proxy'}\n"
- if $ENV{'no_proxy'} ;
- print "\n" ;
- } else {
- print "Not using any HTTP Proxy.\n" ;
- }
-
- print "Maximum HTTP redirections allowed for a URL: $MAX_REDIRECTS\n",
- "Maximum number of tries to get a single URL: $MAX_ATTEMPTS\n\n";
-
- print '-' x 70, "\n\n" ;
-
-}
-
-
-
-# print configuration, in a style more for debugging (mostly from srm.conf)
-sub print_debug_config {
- print <<EOF ;
-DOCUMENT_ROOT= [$DOCUMENT_ROOT]
-USER_DIR= [$USER_DIR]
-DIRECTORY_INDEX= [@DIRECTORY_INDEX]
-
-CGI_EXTENSIONS= [@CGI_EXTENSIONS]
-SHTML_EXTENSIONS= [@SHTML_EXTENSIONS]
-
-EOF
-
- foreach (sort keys %ALIAS)
- { print "ALIAS{$_}= [$ALIAS{$_}]\n" }
- foreach (sort keys %ALIAS_MATCH)
- { print "ALIAS_MATCH{$_}= [$ALIAS_MATCH{$_}]\n" }
- foreach (sort keys %SCRIPT_ALIAS)
- { print "SCRIPT_ALIAS{$_}= [$SCRIPT_ALIAS{$_}]\n" }
- foreach (sort keys %SCRIPT_ALIAS_MATCH)
- { print "SCRIPT_ALIAS_MATCH{$_}= [$SCRIPT_ALIAS_MATCH{$_}]\n" }
-
-}
-
-
-#----------------------------------------------------------------------
-#
-# SPARSE DOCUMENTATION ON PROGRAM INTERNALS:
-#
-#----------------------------------------------------------------------
-#
-# URLs are read directly from the local filesystem if possible, or
-# downloaded or checked with HTTP GET and HEAD methods if not. CGI
-# scripts are called through the HTTP server, even if local (since the
-# resource their URLs refer to are not files).
-#
-#
-# Global variables:
-#
-# %url holds all data regarding all URLs, using the text URL as the key:
-#
-# %url{$URL}{qw( URL filename referer depth
-# ishtml iscgi islocal dontfollow
-# status location numredirects numtries lasttried
-# ssierrs
-# hasbeenloaded)} <== only for testing
-# URL is same as hash key
-# ishtml means is type text/html; links MAY be extracted. (Used in
-# main loop.)
-# iscgi means is a CGI script; MUST NOT be read directly from
-# filesystem. (Used in verify_url() and load_url().)
-# islocal means served by local server:
-# a) MAY be read directly from filesystem
-# b) links MAY be extracted
-# dontfollow means links MUST NOT be extracted.
-# status begins with a number, but may have text afterward.
-#
-# islocal= (URL=~ m#^http://$LOCAL_HOST/#i) , i.e. redundant.
-# ishtml and iscgi are guesses, may be 0, 1, or '' for unset.
-# iscgi only matters for local URLs, but may safely be set for
-# remote URLs.
-# dontfollow is a hack to handle an obscure CGI-related situation.
-#
-# In addition to the standard HTTP status codes, 'status' may take one
-# of the following values:
-# 450 Can't read file: $!
-# 451 SSI Error(s) (__ total)
-# 600 Can't create socket: $@
-# 601 Connection timed out
-# 602 Incomplete response (%s of %s bytes)
-# 603 Incomplete chunked response
-#
-# Handling of 602 and 603 is somewhat hackish-- overwrites real status
-# line with artificial one.
-#
-# $url->{'ssierrs'} is a list of errors relating to SSI includes.
-# Each error has a list of filenames representing the include
-# chain. Each element in the chain stores the absolute
-# pathname, the <!--#include--> tag which called it, and
-# possibly an error message (usually only on the last file in
-# the include-chain). Thus, the entire structure is
-#
-# $url->{'ssierrs'}[$errid][$levelsdeep]{qw( path tag errmsg )}
-#
-# This is only a memory hog with many errors of deeply nested files.
-#
-#
-# @urlstoget: canonicalized list of URLs left to get, in order
-# of appearance. List elements are pointers to %url elements.
-# This array may grow from &extract_urls(), or be rearranged when
-# a URL needs to be retried.
-#
-# Note that $url is normally a pointer, and $URL is normally a string.
-#
-# Files/paths are canonicalized by removing unneeded "./" and "../"
-# segments.
-# Directories are canonicalized to always end in "/", including in URLs;
-# note that some system variables and local directory variables aren't so.
-# URLs that point to "/" end in "/", e.g. "http://www.foo.com/".
-#
-#
-# This program has a lot of unused functionality for possible extension,
-# so don't get confused by routines that do more than they are used for.
-#
-#----------------------------------------------------------------------
-#
-# To do:
-#
-# * If you want a different output format (like in HTML), it should
-# be easy enough to add.
-# * This could be extended to check remote sites without much trouble.
-# * Should probably support directories that don't have index.html.
-# * Check that pointed-to fragments exist in target files
-# * keep track of servers and don't hit them too often
-# * support robots.txt
-# * add option to read list of URLs from file
-# * support HTTP Basic Authentication somehow. Note that currently, this
-# reads local files even when they should be protected by .htaccess
-# (unless using -h option).
-# * Read list of local host names from gethostbyname() ?
-# * check read permissions on files?
-# * In the event multiple URLs redirect to the same URL, this could be a
-# little more efficient if it saved the redirected loads/downloads.
-#
-#----------------------------------------------------------------------
--- a/Admin/website/build/img.memo.txt Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-mogrify -interlace line -strip -trim screenshot_isabelle_macos.gif
-convert -interlace line -scale x55 univ_tum_proto.gif univ_tum.gif
-convert -interlace line -scale x55 univ_cambridge_proto.gif univ_cambridge.gif
-convert -interlace line -scale x100 isabelle.gif isabelle_logo.gif
-convert -interlace line -scale '16x16!' isabelle.gif favicon.gif
-convert -interlace line -scale x125 tutorial_cover_big.gif tutorial_cover_small.gif
-convert -interlace line -scale 250x isabelle_pg_screenshot_big.png isabelle_pg_screenshot_small.png
--- a/Admin/website/build/localconf.at.template.mak Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-# isaweb configuration
-# $Id$
-
-# build target (attention: ~ will not work!)
-OUTPUTROOT=$(HOME)/isabelle/website_test
-#~ OUTPUTROOT=/home/proj/isabelle/website
-
-# location of isabelle distribution packages
-ISABELLE_DIST=$(DISTBASE)
-
-# location of doc content file
-ISABELLE_DOC_CONTENT_FILE=$(DISTBASE)/$(DISTNAME)/doc/Contents
-
-# umask/group for target files
-TARGET_UMASK_FILE=u=rw,g=rw,o=r
-TARGET_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-TARGET_GROUP=isabelle
-LOCAL_UMASK_FILE=u=rw,g=rw,o=r
-LOCAL_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-LOCAL_GROUP=isabelle
-
-# python interpreter (>= 2.3)
-PYTHON=python
-
-# GNU find
-FIND=find
-
-# GNU copy
-COPY=cp
-
-# HTML tidy (needs not to be set if tidy usage is disabled, see below)
-TIDY=tidy
-
-# rsync (if not set, use dumb cp instead)
-RSYNC=rsync
-
-# set to a true value to use the "pypager iso-8859-1" hack
-# (may be neccessary for older versions of HTML tidy)
-FORCE_ISO_8859_1=
-
-# set to a true value to disable html tidy postprocessing
-DISABLE_TIDY=
--- a/Admin/website/build/localconf.sun.template.mak Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-# isaweb configuration
-# $Id$
-
-# build target (attention: ~ will not work!)
-OUTPUTROOT=$(HOME)/isabelle/website_test
-#~ OUTPUTROOT=/home/proj/isabelle/website
-
-# location of isabelle distribution packages
-ISABELLE_DIST=$(DISTBASE)
-
-# location of doc content file
-ISABELLE_DOC_CONTENT_FILE=$(DISTBASE)/$(DISTNAME)/doc/Contents
-
-# umask/group for target files
-TARGET_UMASK_FILE=u=rw,g=rw,o=r
-TARGET_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-TARGET_GROUP=isabelle
-LOCAL_UMASK_FILE=u=rw,g=rw,o=r
-LOCAL_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-LOCAL_GROUP=isabelle
-
-# python interpreter (>= 2.3)
-PYTHON=python2.3
-
-# GNU find
-FIND=gfind
-
-# GNU copy
-COPY=gcp
-
-# HTML tidy (needs not to be set if tidy usage is disabled, see below)
-TIDY=tidy
-
-# rsync (if not set, use dumb cp instead)
-RSYNC=rsync
-
-# set to a true value to use the "pypager iso-8859-1" hack
-# (may be neccessary for older versions of HTML tidy)
-FORCE_ISO_8859_1=
-
-# set to a true value to disable html tidy postprocessing
-DISABLE_TIDY=
--- a/Admin/website/build/main.mak Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-# isaweb makefile
-# $Id$
-
-# force shell
-SHELL=bash
-
-# some global variables
-CONF=conf/localconf.mak
-
-# configuration switch
-ifeq ($(phase), init)
-
-# allocate configuration
-init:
- mkdir -p conf
- case $$HOSTNAME in sunbroy*) ARCH=sun;; *) ARCH=at;; esac; \
- sed 's/# $$Id.*//g' build/localconf.$$ARCH.template.mak > $(CONF)
- $$EDITOR $(CONF)
- @false
-.PHONY: init
-
-else
-
-# default target
-default: project
-
-# check configuration
-include $(CONF)
-$(CONF):
- @if [ ! -e $(CONF) ]; \
- then \
- echo 'Framework not configured yet; set EDITOR environment variable'; \
- echo 'to your favorite editor and type'; \
- echo; \
- echo ' make phase=init'; \
- echo; \
- echo 'to configure it'; \
- false; \
- else \
- :; \
- fi
-
-# tidy handling
-ifeq ($(DISABLE_TIDY),)
-TIDYCMD=$(TIDY) -q -i -asxhtml --output-xhtml true \
- --doctype auto \
- --literal-attributes true \
- --wrap 0 \
- --indent auto --indent-spaces 2 \
- --input-encoding utf8 --output-encoding latin1 \
- --logical-emphasis yes --gnu-emacs yes --write-back yes
-else
-TIDYCMD=:
-endif
-
-# dependencies
-DEP_FILE=conf/depends.mak
-site: $(DEP_FILE) allsite
-.PHONY: site
-
-# import dependencies
-include $(DEP_FILE)
-endif
-
-# pypager iso-8859-1 hack
-ifneq ($(FORCE_ISO_8859_1),)
-FORCE_ENC_CMD=--encodinghtml "iso-8859-1"
-else
-FORCE_ENC_CMD=
-endif
-
-# import project-specific dependencies
-include build/project.mak
-
-# build dependencies
-$(DEP_FILE): $(CONF)
- build/make_dep.bash "$(FIND)" "$(OUTPUTROOT)" "$(DEP_FILE)" "$(STATICDIRS)" "$(STATICFILES)"
-
-# build dependencies explicitly
-depends:
- rm -f $(DEP_FILE)
- $(MAKE) $(DEP_FILE)
-.PHONY: depends
-
-# clean build files
-clean:
- rm -f $(DEP_FILE)
-.PHONY: clean
--- a/Admin/website/build/make_dep.bash Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-#!/usr/bin/env bash
-# $Id$
-
-# build make dependency file
-
-# parameters
-FIND="$1"
-OUTPUTROOT="$2"
-DEP_FILE="$3"
-STATICDIRS="$4"
-STATICFILES="$5"
-
-rm -f "$DEP_FILE"
-touch "$DEP_FILE"
-echo '# This is a generated file; do not edit' >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-allstatic=''
-for dir in $STATICDIRS
-do
- for file in $("$FIND" "$dir" -follow -type f -a ! -path "*/CVS/*" -a ! -path "*/.svn/*")
- do
- outputfile="\$(OUTPUTROOT)/$file"
- echo "$outputfile: $file" >> "$DEP_FILE"
- echo ' mkdir -p $(dir $@)' >> "$DEP_FILE"
- echo ' -chmod $(TARGET_UMASK_DIR) $(dir $@)' >> "$DEP_FILE"
- echo ' -chgrp $(TARGET_GROUP) $(dir $@)' >> "$DEP_FILE"
- echo ' -[ -e $@ ] && rm $@' >> "$DEP_FILE"
- echo ' cp $< $@' >> "$DEP_FILE"
- echo ' chmod $(TARGET_UMASK_FILE) $@' >> "$DEP_FILE"
- echo ' chgrp $(TARGET_GROUP) $@' >> "$DEP_FILE"
- allstatic="$allstatic$outputfile "
- echo >> "$DEP_FILE"
- done
-done
-echo "DEP_ALLSTATIC=$allstatic" >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-echo 'DEP_HTML=$(DEP_ALLSTATIC) $(STATICFILES) $(DEP_FILE) $(CONF)' >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-allhtml=''
-for html in $("$FIND" . -name "*.html" -a ! -name "*.include.html")
-do
- outputfile="\$(OUTPUTROOT)/$html"
- echo "$outputfile: $html \$(DEP_HTML)" >> "$DEP_FILE"
- echo ' mkdir -p $(dir $@)' >> "$DEP_FILE"
- echo ' -chmod $(TARGET_UMASK_DIR) $(dir $@)' >> "$DEP_FILE"
- echo ' -chgrp $(TARGET_GROUP) $(dir $@)' >> "$DEP_FILE"
- echo ' -[ -e $@ ] && rm $@' >> "$DEP_FILE"
- echo ' $(PYTHON) build/pypager.py --dtd="dtd/" $(FORCE_ENC_CMD) --srcroot="." --dstroot="$(OUTPUTROOT)" distname="$(DISTNAME)" $< $@' >> "$DEP_FILE"
- echo ' chmod $(TARGET_UMASK_FILE) $@' >> "$DEP_FILE"
- echo ' chgrp $(TARGET_GROUP) $@' >> "$DEP_FILE"
- echo ' $(PYTHON) build/obfusmail.py --dtd="dtd/" $@' >> "$DEP_FILE"
- echo ' -$(TIDYCMD) $@' >> "$DEP_FILE"
- allhtml="$allhtml$outputfile "
- echo >> "$DEP_FILE"
-done
-echo "DEP_ALLHTML=$allhtml" >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-echo 'allsite: $(DEP_ALLHTML) $(DEP_ALLSTATIC)' >> "$DEP_FILE"
-echo ".PHONY: allsite" >> "$DEP_FILE"
--- a/Admin/website/build/mkcontents.pl Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/usr/bin/perl
-
-# mkcontents.pl
-#
-# $Id$
-#
-# simple script to create a html version of the Contents file in the
-# Isabelle documentation directory.
-#
-# Nov/14/1999 Version 1.0 - Gerwin Klein <kleing@in.tum.de>
-#
-# command line:
-# mkcontent.pl [-p <url-path-prefix>] <Content-file> <output-file>
-#
-
-
-use Getopt::Long ;
-
-$opt_p="";
-$result = GetOptions ("p=s");
-
-$path=$opt_p;
-
-$infile = $ARGV[0];
-$outfile = $ARGV[1];
-
-$listHeader = "<ul>\n";
-$lineHeader = " <li>";
-$lineEnd = "</li>\n";
-$listFooter = "</ul>\n";
-
-$topicStart = "<h3>";
-$topicEnd = "</h3>\n";
-
-open(IN, "<$infile") || die "cannot read input file <$infile>";
-open(OUT, ">$outfile") || die "cannot write output file <$outfile>";
-
-$first = 1;
-
-print OUT '<?xml version="1.0" encoding="iso-8859-1" ?>' . "\n";
-print OUT '<dummy:wrapper xmlns:dummy="http://nowhere.no">' . "\n";
-
-while (<IN>) {
- if (/^([^ \t].*)\n/) {
- if ($first == 1) {
- $first = 0;
- }
- else {
- print OUT $listFooter;
- }
- print OUT $topicStart;
- print OUT $1;
- print OUT $topicEnd;
- print OUT $listHeader;
- }
- elsif (/^[ \t]+([^ \t]+)[ \t]+(.+)\n/) {
- print OUT $lineHeader;
- print OUT "<a target='_blank' href='$path$1.pdf'>$2</a>";
- print OUT $lineEnd;
- }
-}
-
-print OUT $listFooter;
-
-print OUT '</dummy:wrapper>' . "\n";
-
-close(OUT);
-close(IN);
-
-exit(0);
--- a/Admin/website/build/obfusmail.py Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
- Obfucatings mail adresses
-"""
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-import sys
-import os
-from os import path
-import posixpath
-import optparse
-from cStringIO import StringIO
-
-from xml.sax.saxutils import escape
-from xml.sax.saxutils import quoteattr
-
-from xhtmlparse import TransformerHandler, parseWithER
-
-# global configuration
-outputEncoding = 'UTF-8'
-
-def split_mail(mail):
-
- mail_arg = mail.split("?", 2)
- if len(mail_arg) == 2:
- mail, arg = mail_arg
- else:
- mail = mail_arg[0]
- arg = None
- name, host = mail.split("@", 2)
-
- return ((name, host), arg)
-
-class FindHandler(TransformerHandler):
-
- class DevZero(object):
-
- def write(self, s):
-
- pass
-
- def __init__(self, dtd, mails, enc):
-
- super(FindHandler, self).__init__(self.DevZero(), 'UTF-8', dtd)
- self.mails = mails
- self.enc = enc
- self.pending_mail = None
-
- def startElement(self, name, attrs):
-
- if name == u'a':
- href = attrs.get(u'href', u'')
- if href.startswith(u'mailto:'):
- self.pending_mail = href[7:]
- super(FindHandler, self).startElement(name, attrs)
- if name == u'meta' and attrs.get(u'http-equiv', u'').lower() == u'content-type':
- content = attrs.get(u'content', u'')
- if content.startswith(u'text/html; charset='):
- self.enc = content[19:]
-
- def endElement(self, name):
-
- if name == u'a':
- if self.pending_mail is not None:
- baremail = "%s@%s" % split_mail(self.pending_mail)[0]
- if self.currentContent() != baremail:
- raise Exception("Inconsistent mail address: '%s' vs. '%s'" % (self.currentContent(), baremail))
- self.mails[self.pending_mail] = True
- self.pending_mail = None
- super(FindHandler, self).endElement(name)
-
- def processingInstruction(self, target, data):
-
- pass
-
-class ReplaceHandler(TransformerHandler):
-
- def __init__(self, out, dtd, encoding, mails):
-
- super(ReplaceHandler, self).__init__(out, encoding, dtd)
- self.pending_mail = None
- self.mails = mails
-
- def startElement(self, name, attrs):
-
- if name == u'a':
- href = attrs.get(u'href', u'')
- if href.startswith(u'mailto:'):
- self.pending_mail = href[7:]
- return
-
- super(ReplaceHandler, self).startElement(name, attrs)
-
- def endElement(self, name):
-
- if name == u'a':
- if self.pending_mail is not None:
- self.flushCharacterBuffer()
- self._lastStart = False
- self._out.write(self.mails[self.pending_mail])
- self.pending_mail = None
- return
-
- super(ReplaceHandler, self).endElement(name)
-
- def characters(self, content):
-
- if self.pending_mail is None:
- super(ReplaceHandler, self).characters(content)
-
- def processingInstruction(self, target, data):
-
- pass
-
-def obfuscate(mailaddr, htmlfile):
-
- def mk_line(s):
- return u"document.write('%s');" % s.replace("'", "\\'")
- def mk_script(s):
- return u'<script type="text/javascript">/*<![CDATA[*/%s/*]]>*/</script>' % s
- def cmd(s):
- print "[shell cmd] %s" % s
- n = os.system(s)
- if n != 0:
- raise Exception("shell cmd error: %s" % n)
-
- ((name, host), arg) = split_mail(mailaddr)
- baremail = "%s@%s" % (name, host)
- imgname = (name + "_" + host).replace(".", "_") + ".png"
- imgfile = path.join(path.split(htmlfile)[0], imgname)
- mod = os.stat(htmlfile).st_mode
- gid = os.stat(htmlfile).st_gid
- cmd("convert label:'%s' '%s'" % (baremail, imgfile))
- try:
- os.chmod(imgfile, mod)
- except OSError:
- pass
- try:
- os.chown(imgfile, -1, gid)
- except OSError:
- pass
- if arg is not None:
- mailsimple = u"{%s} AT [%s] WITH (%s)" % (name, host, arg)
- mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, "?", arg, '">']));
- else:
- mailsimple = u"{%s} AT [%s]" % (name, host)
- mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, '">']));
- mailimg = '<img src=%s style="vertical-align:middle" alt=%s />' % (quoteattr(imgname), quoteattr(mailsimple))
-
- result = (mk_script(mailscript) + mailimg + mk_script(mk_line("</a>")))
- return result
-
-def main():
-
- # parse command line
- cmdlineparser = optparse.OptionParser(
- usage = '%prog [options] htmlfile',
- conflict_handler = "error",
- description = '''Protecting mail adresses in html files by obfuscating''',
- add_help_option = True,
- )
- cmdlineparser.add_option("-t", "--dtd",
- action="store", dest="dtd",
- type="string", default=".",
- help="local mirror of XHTML DTDs", metavar='location')
-
- options, (filename,) = cmdlineparser.parse_args(sys.argv[1:])
-
- # find mails
- mails = {}
- enc = outputEncoding
- istream = open(filename, 'r')
- findhandler = FindHandler(options.dtd, mails, enc)
- parseWithER(istream, findhandler)
- enc = findhandler.enc
- istream.close()
-
- if mails:
- # transform mails
- mails_subst = {}
- for mail in mails.iterkeys():
- mails_subst[mail] = obfuscate(mail, filename)
-
- # transform pages
- istream = StringIO(open(filename, 'r').read())
- ostream = open(filename, 'wb')
- print "writing %s with %s" % (filename, enc)
- replacehandler = ReplaceHandler(ostream, options.dtd, enc, mails_subst)
- parseWithER(istream, replacehandler)
- ostream.close()
- istream.close()
-
-if __name__ == '__main__':
- main()
-
-__todo__ = '''
-'''
--- a/Admin/website/build/project.mak Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-# isaweb makefile - project-specific dependencies
-# $Id$
-
-include conf/distinfo.mak
-conf/distinfo.mak:
- @echo 'There is no $@ file; it should have been allocated by makedist.'; \
- @echo 'If you have no makedist at hand, check out default $@ from CVS'; \
- @false; \
-
-STATICDIRS=css img media misc js
-STATICFILES=include/documentationdist.include.html
-OUTPUTDIST_REL=dist-$(DISTNAME)
-OUTPUTDIST=$(OUTPUTROOT)/$(OUTPUTDIST_REL)
-
-project: $(OUTPUTDIST) site
-.PHONY: project
-
-cleanproject:
- rm -rf $(OUTPUTDIST)
-.PHONY: cleanproject
-
-ifeq ($(RSYNC),)
-
-$(OUTPUTDIST): $(ISABELLE_DIST)
- mkdir -p $@
- $(COPY) -vRud $</[^w]* $@
- -chgrp -hR $(TARGET_GROUP) $@
- -chmod -R u+w,g-w,o-w $@
- ( cd $@ && rm -f Isabelle && ln -s $(DISTNAME) Isabelle )
- -chgrp -h $(TARGET_GROUP) $@/Isabelle
- -chmod u+w,g-w,o-w $@/Isabelle
- ( cd $(OUTPUTROOT) && rm -f dist && ln -s $(OUTPUTDIST_REL) dist )
-
-else
-
-$(OUTPUTDIST): $(ISABELLE_DIST) SYNC_ALWAYS
- mkdir -p $@
- $(RSYNC) -v --exclude='/website/' -rlt --delete --delete-after $</ $@
- -chgrp -hR $(TARGET_GROUP) $@
- -chmod -R u+w,g-w,o-w $@
- ( cd $@ && rm -f Isabelle && ln -s $(DISTNAME) Isabelle )
- -chgrp -h $(TARGET_GROUP) $@/Isabelle
- -chmod u+w,g-w,o-w $@/Isabelle
- ( cd $(OUTPUTROOT) && rm -f dist && ln -s $(OUTPUTDIST_REL) dist )
-
-SYNC_ALWAYS:
-
-endif
-
-include/documentationdist.include.html: $(ISABELLE_DOC_CONTENT_FILE)
- perl build/mkcontents.pl -p '//dist/Isabelle/doc/' $< $@
-
-perms:
- build/set_perm.bash $(FIND) $(LOCAL_UMASK_FILE) $(LOCAL_UMASK_DIR) $(LOCAL_GROUP)
-.PHONY: perms
\ No newline at end of file
--- a/Admin/website/build/pypager.py Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,389 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
- (on available processing instructions, see the Functions class)
-"""
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-# generic imports
-import sys
-import os
-from os import path
-import posixpath
-import shlex
-import optparse
-import time
-
-# xhtml parsing
-from xhtmlparse import TransformerHandler, parseWithER
-
-nbsp = unichr(160)
-
-# global configuration
-outputEncoding = 'UTF-8'
-
-# implement your own functions for PIs here
-class Functions(object):
-
- def __init__(self, pc, valdict, modtime, encodingMeta):
-
- self._pc = pc
- self._valdict = valdict
- self._modtime = modtime
- self._encodingMeta = encodingMeta
-
- def value(self, handler, key):
-
- """<?value key="..."?> - inserts a property value given on the command line"""
-
- value = self._valdict[key]
- handler.characters(value)
-
- def title(self, handler):
-
- """<?title?> - inserts the document's title as glimpsed from the <title> tag"""
-
- handler.characters(handler._title)
-
- def contentType(self, handler):
-
- """<?contentType?> - inserts the document's content type/encoding"""
-
- encoding = self._encodingMeta or handler._encoding
- attr = {
- u"http-equiv": u"Content-Type",
- u"content": u"text/html; charset=%s" % encoding
- }
- handler.startElement(u"meta", attr)
- handler.endElement(u"meta")
-
- def currentDate(self, handler):
-
- """<?currentDate?> - inserts the current date"""
-
- handler.characters(unicode(time.strftime('%Y-%m-%d %H:%M:%S')))
-
- def modificationDate(self, handler):
-
- """<?modificationDate?> - inserts the modification date of this file"""
-
- handler.characters(unicode(time.strftime('%Y-%m-%d %H:%M:%S',
- time.localtime(self._modtime))))
-
- def relativeRoot(self, handler, href):
-
- """<?relativeRoot href="..."?> - inserts the relative path specified by href"""
-
- handler.characters(self._pc.relDstPathOf('//'+href.encode("latin-1")))
-
- def include(self, handler, file):
-
- """<?include file="..."?> - includes an XML file"""
-
- filename = self._pc.absSrcPathOf(file.encode("latin-1"))
- self._modtime = max(self._modtime, os.stat(filename).st_mtime)
- istream = open(filename, "r")
- parseWithER(istream, handler)
- istream.close()
-
- def navitem(self, handler, target, title):
-
- """<?navitem target="..." title="..."?> - inserts an item in a navigation list,
- targeting to <target> and entitled <title>"""
-
- target = self._pc.relDstPathOf(target.encode("latin-1"))
- if self._pc.isSrc(target):
- wrapTagname = u"strong"
- else:
- wrapTagname = u"span"
- attr = {}
- handler.startElement(u"li", attr)
- handler.startElement(wrapTagname, {})
- handler.startElement(u"a", {
- u"href": unicode(target, 'latin-1')
- })
- handler.characters(title)
- handler.endElement(u"a")
- handler.endElement(wrapTagname)
- handler.endElement(u"li")
-
- def downloadLink(self, handler, target, title = None):
-
- """<?downloadLink target="..." [title="..."]?> - inserts a link to a file
- to download; if the title is omitted, it is the bare filename itself"""
-
- targetReal = self._pc.absDstPathOf(target.encode("latin-1"))
- if not title:
- title = unicode(posixpath.split(targetReal)[1], 'latin-1')
- size = os.stat(targetReal).st_size
- handler.startElement(u"a", {
- u"href": target
- })
- handler.characters(title)
- handler.endElement(u"a")
-
- def downloadCells(self, handler, target, title = None):
-
- """<?downloadCells target="..." [title="..."]?> - like downloadLink, but
- puts the link into a table cell and appends a table cell displaying the
- size of the linked file"""
-
- targetReal = self._pc.absDstPathOf(target.encode("latin-1"))
- if not title:
- title = unicode(posixpath.split(targetReal)[1], 'latin-1')
- size = os.stat(targetReal).st_size
- handler.startElement(u"td", {})
- handler.startElement(u"a", {
- u"href": target
- })
- handler.characters(title)
- handler.endElement(u"a")
- handler.endElement(u"td")
- handler.startElement(u"td", {})
- handler.characters(u"%.1f%sMB" % (size / (1024.0 * 1024), unichr(160)))
- handler.endElement(u"td")
-
- def mirror(self, handler, prefix, title, stripprefix = u""):
-
- """<?mirror prefix="..." title="..." [stripprefix="..."] ?> - generates a mirror switch link,
- where prefix denotes the base root url of the mirror location
- and title the visible description"""
-
- title = title.replace(u" ", unichr(160))
- thisloc = self._pc.relLocOfThis()
- if thisloc.startswith(stripprefix):
- thisloc = thisloc[len(stripprefix):]
- else:
- raise Exception("Incompatible mirror (prefix to strip not found): %s" % title.encode("latin-1"))
- handler.startElement(u"a", {u"href": posixpath.join(prefix, thisloc)})
- handler.characters(title)
- handler.endElement(u"a")
-
- def getPc(self):
-
- return self._pc
-
-# a notion of paths
-class PathCalculator:
-
- def __init__(self, srcLoc, srcRoot, dstRoot):
-
- self._src = path.normpath(path.abspath(srcLoc))
- srcPath, self._srcName = path.split(self._src)
- self._srcRoot = path.normpath(path.abspath(srcRoot))
- self._dstRoot = path.normpath(path.abspath(dstRoot))
- self._relRoot = ""
- relLocChain = []
- diffRoot = srcPath
- while diffRoot != self._srcRoot:
- self._relRoot = path.join(self._relRoot, os.pardir)
- diffRoot, chainPiece = path.split(diffRoot)
- relLocChain.insert(0, chainPiece)
- self._relRoot = self._relRoot and self._relRoot + '/'
- self._relLoc = relLocChain and path.join(*relLocChain) or ""
-
- def isSrc(self, loc):
-
- return self.absSrcPathOf(loc) == self._src
-
- def relRootPath(self):
-
- return self._relRoot
-
- def absSrcPathOf(self, loc):
-
- if loc.startswith("//"):
- return path.normpath(path.abspath(loc[2:]))
- else:
- return path.normpath(path.abspath(path.join(self._relLoc, loc)))
-
- def absDstPathOf(self, loc):
-
- if loc.startswith("//"):
- return path.join(self._dstRoot, loc[2:])
- elif loc.startswith("http:") or loc.startswith("https:"):
- return loc
- else:
- return path.join(self._dstRoot, self._relLoc, loc)
-
- def relSrcPathOf(self, loc):
-
- loc = self.absSrcPathOf(loc)
- loc = self.stripCommonPrefix(loc, self._srcRoot)
- loc = self.stripCommonPrefix(loc, self._relLoc)
- return loc
-
- def relDstPathOf(self, loc):
-
- if loc.startswith("http:") or loc.startswith("https:"):
- return loc
- else:
- loc = self.absDstPathOf(loc)
- loc = self.stripCommonPrefix(loc, self._dstRoot)
- loc = posixpath.join(self._relRoot, loc)
- return loc
-
- def relLocOfThis(self):
-
- return posixpath.join(self._relLoc, self._srcName)
-
- def stripCommonPrefix(self, loc, prefix):
-
- common = self.commonPrefix((loc, prefix))
- if common:
- loc = loc[len(common):]
- if loc and loc[0] == '/':
- loc = loc[1:]
- return loc
-
- def commonPrefix(self, locs):
-
- common = path.commonprefix(locs)
- # commonprefix bugs
- if [ loc for loc in locs if len(loc) != common ] and \
- [ loc for loc in locs if len(common) < len(loc) and loc[len(common)] != path.sep ]:
- common = path.split(common)[0]
- if common and common[-1] == path.sep:
- common = common[:-1]
-
- return common or ""
-
-class FunctionsHandler(TransformerHandler):
-
- def __init__(self, out, encoding, dtd, func):
-
- super(FunctionsHandler, self).__init__(out, encoding, dtd)
- self._func = func
- self._title = None
-
- def transformAbsPath(self, attrs, attrname):
-
- pathval = attrs.get(attrname, None)
- if pathval and pathval.startswith(u"//"):
- attrs = dict(attrs)
- pathRel = self._func.getPc().relDstPathOf(pathval)
- pathDst = self._func.getPc().absDstPathOf(pathval)
- if not path.exists(pathDst):
- raise Exception("Path does not exist: %s" % pathDst)
- attrs[attrname] = pathRel
- return attrs
- else:
- return attrs
-
- def startElement(self, name, attrs):
-
- if name == u"dummy:wrapper":
- return
- # this list is not exhaustive
- for tagname, attrname in ((u"a", u"href"), (u"img", u"src"), (u"link", u"href"), (u"script", u"src")):
- if name == tagname:
- attrs = self.transformAbsPath(attrs, attrname)
- super(FunctionsHandler, self).startElement(name, attrs)
-
- def endElement(self, name):
-
- if name == u"dummy:wrapper":
- return
- elif name == u'title':
- self._title = u"".join(self._characterBuffer)
- super(FunctionsHandler, self).endElement(name)
-
- def processingInstruction(self, target, data):
-
- self.closeLastStart()
- self.flushCharacterBuffer()
- func = getattr(self._func, target)
- args = {}
- for keyval in shlex.split(data.encode("utf-8")):
- key, val = keyval.split("=", 1)
- args[key] = val
- func(self, **args)
-
-
-def main():
-
- # parse command line
- cmdlineparser = optparse.OptionParser(
- usage = '%prog [options] [key=value]* src [dst]',
- conflict_handler = "error",
- description = '''Leightweight HTML page generation tool''',
- add_help_option = True,
- )
- cmdlineparser.add_option("-s", "--srcroot",
- action="store", dest="srcroot",
- type="string", default=".",
- help="source tree root", metavar='location')
- cmdlineparser.add_option("-d", "--dstroot",
- action="store", dest="dstroot",
- type="string", default=".",
- help="destination tree root", metavar='location')
- cmdlineparser.add_option("-t", "--dtd",
- action="store", dest="dtd",
- type="string", default=".",
- help="local mirror of XHTML DTDs", metavar='location')
- cmdlineparser.add_option("-m", "--encodinghtml",
- action="store", dest="encodinghtml",
- type="string", default="",
- help="force value of html content encoding meta tag", metavar='encoding')
-
- options, args = cmdlineparser.parse_args(sys.argv[1:])
-
- # check source
- if len(args) < 1:
- cmdlineparser.error("Exactly one soure file must be given")
-
- # read arguments
- valdict = {}
- if len(args) == 1:
- src = args[0]
- dst = None
- else:
- if "=" in args[-2]:
- src = args[-1]
- dst = None
- vallist = args[:-1]
- else:
- src = args[-2]
- dst = args[-1]
- if dst == "-":
- dst = None
- vallist = args[:-2]
- for keyval in vallist:
- key, val = keyval.split("=", 1)
- valdict[unicode(key, 'latin-1')] = unicode(val, 'latin-1')
-
- # path calculator
- pc = PathCalculator(src, options.srcroot, options.dstroot)
-
- # function space
- modtime = os.stat(src).st_mtime
- func = Functions(pc, valdict, modtime, options.encodinghtml)
-
- # allocate file handles
- istream = open(src, 'r')
- if dst is not None:
- ostream = open(dst, 'wb')
- else:
- ostream = sys.stdout
-
- # process file
- try:
- transformer = FunctionsHandler(ostream, outputEncoding, options.dtd, func)
- parseWithER(istream, transformer)
- except Exception:
- if dst is not None:
- os.unlink(dst)
- raise
-
- # close handles
- ostream.close()
- istream.close()
-
-if __name__ == '__main__':
- main()
-
-__todo__ = '''
-'''
--- a/Admin/website/build/set_perm.bash Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-# $Id$
-
-# set permissions for local files
-
-# parameters
-FIND="$1"
-LOCAL_UMASK_FILE="$2"
-LOCAL_UMASK_DIR="$3"
-LOCAL_GROUP="$4"
-
-for file in $("$FIND" .)
-do
- if [ -O "$file" ]
- then
- echo "$file..."
- if [ -d "$file" ]
- then
- chmod "$LOCAL_UMASK_DIR" "$file"
- else
- if [ -x "$file" ]
- then
- chmod "$LOCAL_UMASK_FILE",u+x,g+x "$file"
- else
- chmod "$LOCAL_UMASK_FILE" "$file"
- fi
- fi
- chgrp "$LOCAL_GROUP" "$file"
- fi
-done
--- a/Admin/website/build/xhtmlparse.py Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
- Common services for parsing xhtml.
-"""
-
-__all__ = ['TransformerHandler']
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-from os import path
-import codecs
-import posixpath
-from xml.sax.saxutils import escape
-from xml.sax.saxutils import quoteattr
-from xml.sax import make_parser as makeParser
-from xml.sax.handler import ContentHandler
-from xml.sax.handler import EntityResolver
-from xml.sax.xmlreader import AttributesImpl as Attributes
-from xml.sax import SAXException
-from xml.sax import SAXParseException
-
-nbsp = unichr(160)
-
-class TransformerHandler(object, ContentHandler, EntityResolver):
-
- def __init__(self, out, encoding, dtd):
-
- ContentHandler.__init__(self)
- self._out = codecs.getwriter(encoding)(out)
- self._encoding = encoding
- self._dtd = dtd
- self._ns_contexts = [{}] # contains uri -> prefix dicts
- self._current_context = self._ns_contexts[-1]
- self._undeclared_ns_maps = []
- self._characterBuffer = {}
- self._lastStart = False
- self._currentXPath = []
- self._init = False
-
- def closeLastStart(self):
-
- if self._lastStart:
- self._out.write(u'>')
- self._lastStart = False
-
- def currentContent(self):
-
- return u"".join(self._characterBuffer)
-
- def flushCharacterBuffer(self):
-
- content = escape(self.currentContent())
- self._out.write(content)
- self._characterBuffer = []
-
- def startDocument(self):
-
- if not self._init:
- if self._encoding.upper() != 'UTF-8':
- self._out.write(u'<?xml version="1.0" encoding="%s"?>\n' %
- self._encoding)
- else:
- self._out.write(u'<?xml version="1.0"?>\n')
- self._init = True
-
- def startPrefixMapping(self, prefix, uri):
-
- self._ns_contexts.append(self._current_context.copy())
- self._current_context[uri] = prefix
- self._undeclared_ns_maps.append((prefix, uri))
-
- def endPrefixMapping(self, prefix):
-
- self._current_context = self._ns_contexts[-1]
- del self._ns_contexts[-1]
-
- def startElement(self, name, attrs):
-
- self.closeLastStart()
- self.flushCharacterBuffer()
- self._out.write(u'<' + name)
- for (key, value) in attrs.items():
- self._out.write(u' %s=%s' % (key, quoteattr(value)))
- self._currentXPath.append(name)
- self._lastStart = True
-
- def endElement(self, name):
-
- self.flushCharacterBuffer()
- if self._lastStart:
- self._out.write(u'/>')
- self._lastStart = False
- else:
- self._out.write('</%s>' % name)
- self._currentXPath.pop()
-
- def startElementNS(self, name, qname, attrs):
-
- self.closeLastStart()
- self.flushCharacterBuffer()
- if name[0] is None:
- # if the name was not namespace-scoped, use the unqualified part
- name = name[1]
- else:
- # else try to restore the original prefix from the namespace
- name = self._current_context[name[0]] + u":" + name[1]
- self._out.write(u'<' + name)
-
- for pair in self._undeclared_ns_maps:
- self._out.write(u' xmlns:%s="%s"' % pair)
- self._undeclared_ns_maps = []
-
- for (name, value) in attrs.items():
- name = self._current_context[name[0]] + ":" + name[1]
- self._out.write(' %s=%s' % (name, quoteattr(value)))
- self._out.write('>')
- self._currentXPath.append(name)
-
- def endElementNS(self, name, qname):
-
- self.flushCharacterBuffer()
- if name[0] is None:
- name = name[1]
- else:
- name = self._current_context[name[0]] + u":" + name[1]
- if self._lastStart:
- self._out.write(u'/>')
- self._lastStart = False
- else:
- self._out.write(u'</%s>' % name)
- self._currentXPath.pop()
-
- def characters(self, content):
-
- self.closeLastStart()
- self._characterBuffer.append(content)
-
- def ignorableWhitespace(self, content):
-
- self.closeLastStart()
- self.flushCharacterBuffer()
- self._out.write(content)
-
- def resolveEntity(self, publicId, systemId):
-
- loc, name = posixpath.split(systemId)
- if loc == u"http://www.w3.org/TR/xhtml1/DTD" or loc == u"":
- systemId = path.abspath(path.join(self._dtd, name))
- return EntityResolver.resolveEntity(self, publicId, systemId)
-
- def processingInstruction(self, target, data):
-
- raise Exception("no handler defined for processing instructions")
-
-def parseWithER(istream, handler):
-
- parser = makeParser()
- parser.setContentHandler(handler)
- parser.setEntityResolver(handler)
- parser.parse(istream)
--- a/Admin/website/community.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <title>Community</title>
- <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
- <?include file="//include/header.include.html"?>
- <div class="hr"><hr/></div>
- <?include file="//include/navigation.include.html"?>
- <div class="hr"><hr/></div>
- <div id="content">
-
- <h2>Project partners</h2>
-
- <p>Isabelle is a joint project between
- <a href="http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>
- (<a href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html">University of Cambridge</a>, UK) and
- <a href="http://www.in.tum.de/~nipkow/">Tobias Nipkow</a>
- (<a href="http://www4.in.tum.de/proj/theoremprov/group.html">Technical University of Munich</a>, Germany).</p>
-
- <p>There is an (incomplete) list of past and present <a href=
- "http://www.cl.cam.ac.uk/Research/HVG/Isabelle/projects.html">projects</a>
- undertaken using Isabelle.</p>
-
- <h2>Isabelle in your neighbourhood</h2>
-
- <p>Find out on the <a href="//world_map.html">world map</a>!</p>
-
- <h2>Mailing list</h2>
-
- <p>You may use the mailing list <a href=
- "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
- <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
- problems and results.
- Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-
- <h2>Contributing theorems</h2>
-
- <p>Did you have to prove a lemma that should have been part
- of the Isabelle distribution? Send it to us!</p>
-
- <p>We will collect theorems sent to <a href=
- "mailto:isabelle-lemmas@cl.cam.ac.uk">isabelle-lemmas@cl.cam.ac.uk</a>.
- Accepted material will be included in the Isabelle sources, with credit given
- to the author. Note that the Isabelle sources are distributed under the BSD
- license. Lemmas should be general, useful, and not too large. For larger
- developments you might want to consider a submission to the
- <a href="http://afp.sf.net">Archive of Formal Proofs</a>.</p>
-
- <h2 id="afp">The Archive of Formal Proofs (AFP)</h2>
-
- <p>The <a href="http://afp.sf.net">Archive of Formal Proofs</a> is a collection of proof
- libraries, examples, and larger scientific developments, mechanically checked
- in Isabelle. It is organized in the way of a scientific journal. Submissions
- are refereed.</p>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/conf/.cvsignore Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-depends.mak
-localconf.mak
--- a/Admin/website/conf/distinfo.mak Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# this is a default file
-
-DISTNAME=Isabelle2005
-DISTIDENT=Isabelle2005
-DISTBASE=/home/proj/isabelle/dist/dist-Isabelle2005
--- a/Admin/website/css/aelfwine.css Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,725 +0,0 @@
-/************************************************************
- * Stylesheet AElfwine *
- ************************************************************
- * *
- * This has been collected from various sources. *
- * *
- * Version 1.0 - 2005/05/01 - f.h. *
- * *
- * ...aiming for perfection ;-) *
- * *
- ************************************************************/
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* base paragraph and heading types */
-h1 {
- display: block;
-
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: normal;
- font-variant: normal;
- font-size: 2.20em;
- font-weight: bold;
- font-stretch: normal;
- text-decoration: none;
- text-transform: none;
- color: #000000;
- text-shadow: none;
-
- text-indent: 0.00px;
- text-align: center;
- white-space: normal;
-
- margin-top: 0.62em;
- margin-bottom: 0.31em;
- margin-left: 0.00px;
- margin-right: 0.00px;
-}
-
-h2 {
- display: block;
-
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: normal;
- font-variant: normal;
- font-size: 1.77em;
- font-weight: bold;
- font-stretch: normal;
- text-decoration: none;
- text-transform: none;
- color: #000000;
- text-shadow: none;
-
- text-indent: 0.00px;
- text-align: center;
- white-space: normal;
-
- margin-top: 0.40em;
- margin-bottom: 0.20em;
- margin-left: 0.00px;
- margin-right: 0.00px;
-}
-
-h3 {
- display: block;
-
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: normal;
- font-variant: normal;
- font-size: 1.57em;
- font-weight: bold;
- font-stretch: normal;
- text-decoration: none;
- text-transform: none;
- color: #000000;
- text-shadow: none;
-
- text-indent: 0.00px;
- text-align: left;
- white-space: normal;
-
- margin-top: 0.32em;
- margin-bottom: 0.10em;
- margin-left: 0.00px;
- margin-right: 0.00px;
-}
-
-h4 {
- display: block;
-
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: normal;
- font-variant: normal;
- font-size: 1.47em;
- font-weight: bold;
- font-stretch: normal;
- text-decoration: none;
- text-transform: none;
- color: #000000;
- text-shadow: none;
-
- text-indent: 0.00px;
- text-align: left;
- white-space: normal;
-
- margin-top: 0.29em;
- margin-bottom: 0.05em;
- margin-left: 0.00px;
- margin-right: 0.00px;
-}
-
-h5 {
- display: block;
-
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: normal;
- font-variant: normal;
- font-size: 1.18em;
- font-weight: bold;
- font-stretch: normal;
- text-decoration: none;
- text-transform: none;
- color: #000000;
- text-shadow: none;
-
- text-indent: 0.00px;
- text-align: left;
- white-space: normal;
-
- margin-top: 0.27em;
- margin-bottom: 0.03em;
- margin-left: 0.00px;
- margin-right: 0.00px;
-}
-
-h6 {
- display: block;
-
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: normal;
- font-variant: normal;
- font-size: 1em;
- font-weight: bold;
- font-stretch: normal;
- text-decoration: none;
- text-transform: none;
- color: #000000;
- text-shadow: none;
-
- text-indent: 0.00px;
- text-align: left;
- white-space: normal;
-
- margin-top: 0.25em;
- margin-bottom: 0.00em;
- margin-left: 0.00px;
- margin-right: 0.00px;
-}
-
-p, body, th, td {
- display: block;
-
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: normal;
- font-variant: normal;
- font-size: 1.00em;
- font-weight: normal;
- font-stretch: normal;
- text-decoration: none;
- text-transform: none;
- color: #000000;
- text-shadow: none;
-
- text-indent: 0.00px;
- white-space: normal;
-
-}
-
-p {
- text-align: justify;
- margin-top: 0.20em;
- margin-bottom: 0.20em;
-}
-
-/* text markup */
-
-em {
- font-style: italic;
-}
-
-strong {
- font-weight: bold;
-}
-
-del {
- text-decoration: line-through;
-}
-
-ins {
- text-decoration: underline;
-}
-
-/* text format */
-
-sub {
- vertical-align: sub;
- font-size: smaller;
- line-height: normal;
-}
-
-sup {
- vertical-align: super;
- font-size: smaller;
- line-height: normal;
-}
-
-big {
- font-size: larger;
-}
-
-small {
- font-size: smaller;
-}
-
-tt {
- font-family: Courier New,monospace;
-}
-
-pre {
- display: block;
- font-family: Courier New,monospace;
- white-space: pre;
- margin: 1em 1em;
-}
-
-/* ruler */
-
-hr {
- display: block;
- margin: 0 auto 0 auto;
-}
-
-/* document */
-
-html {
- display: block;
-}
-
-body {
- display: block;
- /* KHTML background: #FFFFEE; */
- margin: 8px;
-}
-
-/* blocks */
-
-div {
- display: block;
-}
-
-address {
- display: block;
- font-style: italic;
-}
-
-blockquote {
- display: block;
- margin: 1em 40px;
-}
-
-blockquote[type=cite] {
- display: block;
- margin: 1em 0em;
- padding-left: 1em;
- border-left: solid;
- border-color: blue;
- border-width: thin;
-}
-
-/* spans */
-
-span {
- display: inline;
-}
-
-abbr, acronym {
- display: inline;
-}
-
-cite, q {
- display: inline;
- font-style: italic;
-}
-
-code, var, kbd {
- font-family: Courier New,monospace;
- display: inline;
-}
-
-dfn {
- display: inline;
- font-style: italic;
- font-weight: bold;
-}
-
-samp {
- display: inline;
-}
-
-/* tables */
-
-table {
- display: table;
- margin: 0px;
- padding: 0px;
- border-spacing: 1px;
- border-collapse: separate;
-}
-
-table[align="left"] {
- float: left;
-}
-
-table[align="right"] {
- float: right;
-}
-
-caption {
- display: table-caption;
-}
-
-colgroup {
- display: table-column-group;
-}
-
-col {
- display: table-column;
-}
-
-thead {
- display: table-header-group;
- vertical-align: middle;
-}
-
-tbody {
- display: table-row-group;
-}
-
-tfoot {
- display: table-footer-group;
- vertical-align: middle;
-}
-
-tr {
- display: table-row;
-}
-
-th {
- display: table-cell;
- font-weight: bold;
- padding: 1px;
-}
-
-td {
- display: table-cell;
- padding: 1px;
-}
-
-/* lists */
-
-ul {
- display: block;
- list-style-type: disc;
- margin: 1em 0em;
- padding-left: 40px;
-}
-
-ol {
- display: block;
- list-style-type: decimal;
- margin: 1em 0em;
- padding-left: 40px;
-}
-
-dl {
- display: block;
- margin: 1em 0em;
-}
-
-dt {
- display: block;
- margin-left: 1em;
-}
-
-dd {
- display: block;
- margin-left: 3em;
-}
-
-li {
- display: list-item;
-}
-
-/* nested lists have no top/bottom margins */
-ul ul, ul ol, ul dl,
-ol ul, ol ol, ol dl,
-dl ul, dl ol, dl dl {
- margin-top: 0;
- margin-bottom: 0;
-}
-
-/* 2 deep unordered lists use a circle */
-ol ul, ul ul {
- list-style-type: circle;
-}
-
-/* 3 deep (or more) unordered lists use a square */
-ol ol ul, ol ul ul,
-ul ol ul, ul ul ul {
- list-style-type: square;
-}
-
-/* hyperlinks */
-
-a:link {
- color: #FF0000;
-}
-
-a:visited {
- color: #FF6600;
-}
-
-a:hover {
- color: #FF0000;
-}
-
-a:active {
- color: #FF0000;
-}
-
-a:focus {
- color: #FF0000;
-}
-
-a[name]:link, a[id]:link:not([href]) {
- color: #000000;
-}
-
-a[name]:hover, a[id]:hover:not([href]) {
- color: #000000;
-}
-
-a[name]:active, a[id]:active:not([href]) {
- color: #000000;
-}
-
-a[name]:focus, a[id]:focus:not([href]) {
- color: #000000;
-}
-
-a img {
- border: none;
-}
-
-/* hidden elements */
-area, base, basefont, head, meta, script, style, title,
-noembed, noframes, noscript, param {
- display: none;
-}
-
-/* forms */
-
-/* misc */
-legend {
- padding-left: 2px;
- padding-right: 2px;
- border: none;
-}
-
-fieldset {
- display: block;
- margin-left: 2px;
- margin-right: 2px;
- padding: 0.75em 0.625em;
- border: 2px groove ThreeDFace;
-}
-
-label {
- cursor: default;
-}
-
-/* default inputs, text inputs, and selects */
-input [type=""], input[type="text"], input[type="password"] {
- padding: 1px 0px 1px 0px;
- border: 2px inset ThreeDFace;
- text-transform: none;
- vertical-align: text-bottom;
- cursor: text;
-}
-
-textarea {
- margin: 1px 0px 1px 0px;
- border: 2px inset ThreeDFace;
- font-size: medium;
- text-transform: none;
- vertical-align: text-bottom;
- cursor: text;
-}
-
-select {
- margin: 0;
- border-color: ThreeDFace;
- white-space: nowrap;
- vertical-align: text-bottom;
- cursor: default;
- border-width: 2px;
- border-style: inset;
-}
-
-select[size] {
- padding: 1px 0px 1px 0px;
-}
-
-select[size="1"] {
- padding: 0px;
-}
-
-option {
- display: block;
-}
-
-option :checked {
- background-color: Highlight;
- color: HighlightText;
-}
-
-optgroup {
- display: block;
- font-style: italic;
- font-weight: bold;
-}
-
-optgroup > option {
- padding-left: 20px;
- font-style: normal;
- font-weight: normal;
-}
-
-optgroup :before {
- display: block;
- content: attr(label);
-}
-
-option[disabled],
-optgroup[disabled] {
- background-color: transparent;
-}
-
-/* hidden inputs */
-input[type="hidden"] {
- display: none;
- padding: 0em;
- border: 0em;
- cursor: auto;
-}
-
-/* image buttons */
-input[type="image"] {
- padding: 0em;
- border: none;
- background-color: transparent;
- vertical-align: baseline;
- font-family: sans-serif;
- font-size: small;
- cursor: pointer;
-}
-
-input[type="image"][disabled] {
- cursor: default;
-}
-
-/* file selector */
-input[type="file"] {
- white-space: nowrap;
- cursor: default;
- padding: 0px;
- border-style: none;
-}
-
-/* radio buttons and check boxes*/
-input[type="radio"] {
- width: 13px;
- height: 13px;
- margin: 3px 3px 0px 5px;
- padding: 0px;
- vertical-align: baseline;
- cursor: default;
-}
-
-/* check boxes */
-input[type="checkbox"] {
- width: 13px;
- height: 13px;
- margin: 3px 3px 3px 4px;
- padding: 0px;
- vertical-align: text-bottom;
- cursor: default;
-}
-
-input[type="checkbox"]:focus,
-input[type="radio"]:focus {
- border-style: groove;
-}
-
-input[type="checkbox"]:hover:active,
-input[type="radio"]:hover:active {
- background-color: ThreeDFace;
- border-style: inset;
-}
-
-/* buttons */
-button,
-input[type="reset"],
-input[type="button"],
-input[type="submit"] {
- text-transform: none;
- padding: 2px 0 2px 0;
- border: 2px outset ButtonFace;
- background-color: ButtonFace;
- color: ButtonText;
- white-space: pre;
- vertical-align: text-bottom;
- cursor: default;
-}
-
-button:active:hover,
-input[type="reset"]:active:hover,
-input[type="button"]:active:hover,
-input[type="submit"]:active:hover {
- padding: 3px 0 1px 0;
- border-style: inset;
-}
-
-/* disables inputs */
-
-input[disabled],
-textarea[disabled],
-option[disabled],
-optgroup[disabled],
-select[disabled] {
- color: GrayText;
- background-color: ThreeDFace;
- cursor: default;
-}
-
-input[type="radio"][disabled],
-input[type="radio"][disabled]:active,
-input[type="radio"][disabled]:hover,
-input[type="radio"][disabled]:hover:active,
-input[type="checkbox"][disabled],
-input[type="checkbox"][disabled]:active,
-input[type="checkbox"][disabled]:hover,
-input[type="checkbox"][disabled]:hover:active {
- padding: 1px;
- border: 1px inset ThreeDShadow;
- color: GrayText;
- background-color: ThreeDFace;
-}
-
-button[disabled]:active, button[disabled],
-input[type="reset"][disabled]:active,
-input[type="reset"][disabled],
-input[type="button"][disabled]:active,
-input[type="button"][disabled],
-select[disabled] > input[type="button"],
-select[disabled] > input[type="button"]:active,
-input[type="submit"][disabled]:active,
-input[type="submit"][disabled] {
- padding: 3px 1px 3px 1px;
- border: 1px outset ButtonShadow;
- color: GrayText;
-}
-
-/* DocBook-XSLT-specific extensions */
-
-div.figure {
- margin-top: 1.9ex;
-}
-
-div.note {
- margin-top: 1.0ex;
- margin-bottom: 1.0ex;
-}
-
-div.tip {
- margin-top: 1.0ex;
- margin-bottom: 1.0ex;
-}
-
-div.warning {
- margin-top: 1.0ex;
- margin-bottom: 1.0ex;
-}
-
-div.caution {
- margin-top: 1.0ex;
- margin-bottom: 1.0ex;
-}
-
-div.important {
- margin-top: 1.0ex;
- margin-bottom: 1.0ex;
-}
-
-div.figure {
- margin-bottom: 0.8ex;
-}
-
-div.example {
- margin-bottom: 0.8ex;
-}
-
-div.equation {
- margin-bottom: 0.8ex;
-}
--- a/Admin/website/css/isabelle_base.css Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (all-media basics) *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* generic color settings */
-body {
- background-color: #FFFFFF;
-}
-
-a:link {
- color: #0000A0;
-}
-
-a:visited {
- color: #5050A0;
-}
-
-a:hover {
- color: #FFFFFF;
- background-color: #0000FF;
-}
-
-a:hover img {
- /* gets rid of some of hover highlight */
- background-color: #FFFFFF;
-}
-
-a:active {
- color: #00DDFF;
-}
-
-a:focus {
- color: #00DDFF;
-}
-
-img {
- border: none;
-}
-
-/* generic formatting */
-h1 {
- margin-top: 2em;
- font-size: 230%;
-}
-
-h2 {
- margin-top: 1em;
- font-size: x-large;
- text-align: left;
- background-color: #8080F0;
-}
-
-h3 {
- margin-top: 0.7em;
- font-size: medium;
- text-align: left;
- background-color: #8080F0;
-}
-
-p {
- margin-top: 0.3em;
- margin-bottom: 0.4em;
-}
-
-/* indendation of following paragraphs */
-/* p + p {
- text-indent: 0.8em;
-} */
-
-/* navigation layout */
-div#navigation ul {
- list-style-type: none;
- margin: 0em;
- padding: 0em;
- width: 100%;
-}
-
-div#navigation ul li {
- margin: 0em;
- padding: 0em;
-}
-
-div#navigation ul li span {
- display: block;
- margin: 1ex 0em;
- padding: 1ex 0em;
- text-align: center;
- vertical-align: middle;
- background-color: #E0E0F0;
- border-left: 7px solid #FFFFFF;
-}
-
-div#navigation ul li strong {
- display: block;
- font-weight: normal;
- margin: 1ex 0em;
- padding: 1ex 0em;
- text-align: center;
- vertical-align: middle;
- background-color: #E0E0F0;
- border-left: 7px solid #0000A0;
-}
-
-/* footer layout */
-div#footer p {
- text-align: right;
- font-size: x-small;
-}
-
-/* embedded images */
-img.left {
- margin-right: 8pt;
- float: left;
-}
-
-img.right {
- margin-left: 8pt;
- float: right;
-}
-
-/* shell commands */
-tt.shellcmd {
- font-family: monospace;
-}
-
-ul.shellcmd {
- background-color: #C0C0E0;
- font-family: monospace;
- list-style-type: none;
- margin-top: 1ex;
- margin-bottom: 1ex;
- margin-left: 4em;
- margin-right: 4em;
- padding-left: 0pt;
-}
-
-ul.shellcmd li:before {
- content: "$ ";
- font-weight: bold;
-}
-
-/* faqs */
-dl.faq dt {
- background-color: #8080F0;
- padding: 3px;
- margin-top: 12px;
- font-weight: bold;
-}
-
-dl.faq dd {
- padding: 3px;
- margin-top: 3px;
-}
-
-/* faked columns */
-table.column {
- margin: 0px;
- padding: 0px;
- width: 100%;
- border-collapse: collapse;
-}
-
-table.column tr td.column {
- width: 50%;
- vertical-align: top;
- padding: 1em;
-}
-
-/* centered areas */
-div.center {
- position: relative;
- text-align: center;
- width: 100%;
-}
-
-/* generic celled tables */
-table.celled {
- margin-top: 2ex;
- margin-left: auto;
- margin-right: auto;
- text-align: center;
- border-spacing: 4px;
-}
-
-table.celled tr td {
- text-align: left;
- background-color: #C0C0E0;
- padding: 0.4ex 1em 0.4ex 1em;
-}
-
-/* download tables */
-table.download {
- margin-top: 2ex;
- margin-left: auto;
- margin-right: auto;
- text-align: center;
- border-spacing: 4px;
-}
-
-table.download tr td {
- text-align: left;
- background-color: #C0C0E0;
- padding: 0.4ex 1em 0.4ex 1em;
-}
-
-table.download tr td.downloadheader {
- text-align: left;
- font-weight: bold;
- background-color: #8080F0;
- /* margin-top doesn't seem to work */
- border-top: 1ex solid #E0E0F0;
-}
-
-table.download tr td + td + td {
- text-align: right;
-}
-
-table.download tr.rowspan td + td {
- text-align: right;
-}
--- a/Admin/website/css/isabelle_print.css Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (print media) *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* use times font for floating text */
-p, body, th, td {
- font-family: Times New Roman,times,serif;
-}
-
-/* body margin */
-body {
- margin: 4pt;
-}
-
-/* no rulers (they are just a supplemental for non-css browsers) */
-hr {
- display: none;
- visibility: hidden;
- height: 0pt;
- width: 0pt;
-}
-
-/* header layout */
-div#header {
- position: relative;
- height: 94px;
- background-color: #FFFFFF;
-}
-
-div#header h1 {
- position: absolute;
- top: 0px;
- left: 0px;
- margin: 0px;
-}
-
-div#header a#isabelle_logo {
- position: absolute;
- right: 0px;
-}
-
-div#header a#univ_tum {
- display: none;
-}
-
-div#header a#univ_cambridge {
- display: none;
-}
-
-div#header span.headersep {
- display: none;
-}
-
-/* navigation layout */
-div#navigation {
- display: none;
-}
-
-/* footer layout */
-div#footer {
- position: relative;
- top: 8px;
- clear: both;
- border-top: 2px solid #000000;
-}
-
-/* mirrorlist layout */
-div.mirrorlist {
- display: none;
-}
-
-/* thesis announcement */
-body.thesis {
- margin: 0cm;
- padding: 0cm;
-}
-
-body.thesis div#header {
- height: 108px;
-}
-
-body.thesis div#header p {
- font-family: Arial,Helvetica,Verdana,sans-serif;
- font-style: italic;
- font-size: 10px;
- position: absolute;
- top: 0px;
- left: 115px;
- right: 115px;
- margin: 0px;
-}
-
-body.thesis div#header h1 {
- position: absolute;
- top: 20px;
- left: 115px;
- right: 115px;
- margin: 0px;
- font-size: 2.8ex;
-}
-
-body.thesis div#header a#info_logo {
- position: absolute;
- left: 0px;
-}
-
-body.thesis h2 {
- font-size: 2.4ex;
-}
-
-body.thesis dl dt {
- font-weight: bold;
-}
--- a/Admin/website/css/isabelle_screen.css Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (screen media) *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* no rulers (they are just a supplemental for non-css browsers) */
-hr {
- display: none;
- visibility: hidden;
- height: 0pt;
- width: 0pt;
-}
-
-div.hr {
- /* a special for KHTML */
- display: none;
-}
-
-/* header layout */
-div#header {
- position: relative;
- height: 90pt;
- background-color: #FFFFFF;
-}
-
-div#header h1 {
- /* center between logos */
- position: absolute;
- top: 27px;
- left: 200px;
- right: 270px;
- margin: 0px;
-}
-
-div#header a#isabelle_logo {
- position: absolute;
- top: 10px;
- left: 3.2ex;
-}
-
-div#header a#univ_tum {
- position: absolute;
- top: 25px;
- right: 40px;
-}
-
-body.thesis div#header a#info_logo {
- position: absolute;
- top: 25px;
- right: 40px;
-}
-
-div#header a#univ_cambridge {
- position: absolute;
- top: 25px;
- right: 130px;
-}
-
-div#header span.headersep {
- display: none;
-}
-
-/* navigation layout */
-div#navigation {
- position: relative;
- top: 2em;
- left: 1ex;
- bottom: 4px;
- padding: 0.5em 0.5em;
- float: left;
- width: 17ex;
- background-color: #FFFFFF;
- border-top: 2px solid #0000A0;
- border-bottom: 2px solid #0000A0;
-}
-
-div#navigation h2 {
- display: none;
-}
-
-/* footer layout */
-div#footer {
- margin-top: 2em;
-}
-
-/* content layout */
-div#content {
- position: static;
- left: 4px;
- margin-left: 23ex;
- margin-right: 3%;
- background-color: #E0E0F0;
- padding-left: 20px;
- padding-right: 20px;
- padding-bottom: 20px;
-}
-
-div#content h2 {
- margin-left: -20px;
- margin-right: -20px;
- padding-left: 20px;
- padding-top: 0.2ex;
- padding-bottom: 0.2ex;
- border-bottom: 1ex solid #E0E0F0;
-}
-
-div#content h3 {
- margin-right: -20px;
- padding-top: 0.4ex;
- padding-bottom: 0.2ex;
- padding-left: 10px;
-}
-
-/* mirror switch layout */
-div.mirrorlist {
- margin: 1ex 0em;
- padding: 2pt;
- background-color: #E0E0F0;
- text-align: left;
- border-left: 7px solid #FFFFFF;
-}
-
-div.mirrorlist h3 {
- margin: 1pt;
- padding: 1pt;
- border: none;
- background-color: #FFFFFF;
- color: #0000A0;
- font-size: 11pt;
- text-align: left;
-}
-
-div.mirrorlist ul {
- margin: 1pt 1pt 1pt 1em;
- padding: 0pt;
-}
-
-div.mirrorlist ul li {
- font-size: 8pt;
- font-style: italic;
- padding: 0pt 12pt 0pt 0pt;
-}
-
-/* people list */
-dl.people dt {
- background-color: #EEEEEE;
- padding: 2px;
- margin-top: 8px;
- height: 50px;
-}
-
-dl.people dd img {
- float: right;
- position: relative;
- margin-right: 3px;
- top: -52px;
-}
--- a/Admin/website/documentation.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <title>Documentation</title>
- <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body>
- <?include file="//include/header.include.html"?>
- <div class="hr"><hr/></div>
- <?include file="//include/navigation.include.html"?>
- <div class="hr"><hr/></div>
-
- <div id="content">
-
- <h2>Getting started</h2>
-
- <a href="//img/tutorial_cover_big.gif">
- <img class="right" src="//img/tutorial_cover_small.gif" alt="Cover "
- width="83" height="125"/>
- </a>
- <p>For getting started with Isabelle quickly, we recommend the <a href=
- "//dist/Isabelle/doc/tutorial.pdf">Tutorial on
- Isabelle/HOL</a> (published by Springer Verlag as <a href=
- "http://www4.in.tum.de/~nipkow/LNCS2283/">LNCS 2283</a>) and the <a href=
- "#course_material">course material</a>.</p>
- <br clear="right" />
-
- <h2>Mailing list and FAQ</h2>
-
- <p>You may use the mailing list <a href=
- "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
- <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
- problems and results.
- Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
- <p>Please consult the <a href="http://isabelle.in.tum.de/faq.html">FAQ</a> for answers to frequent
- problems.</p>
-
- <h2>Isabelle Documentation</h2>
-
- <p><?value key="distname"?> documentation is
- included here as browsable PDF for convenience. These documents are also part
- of the standard Isabelle distribution.</p>
-
- <?include file="//include/documentationdist.include.html"?>
-
- <h3>Release notes</h3>
-
- <ul>
- <li><a href="//dist/Isabelle/ANNOUNCE">ANNOUNCE</a></li>
- <li><a href="//dist/Isabelle/README.html">README</a></li>
- <li><a href="//dist/Isabelle/INSTALL">INSTALL</a></li>
- <li><a href="//dist/Isabelle/NEWS">NEWS</a></li>
- <li><a href="//dist/Isabelle/COPYRIGHT">COPYRIGHT</a></li>
- <li><a href="//dist/Isabelle/CONTRIBUTORS">CONTRIBUTORS</a></li>
- </ul>
-
- <h2 id="course_material">Course Material and Exercises</h2>
- <p>The <a href=
- "http://isabelle.in.tum.de/coursematerial/">course material</a> page makes
- slides, demos, and exercises of a growing number of Isabelle courses
- available. It is meant as a resource for people who would like to learn
- Isabelle as well as for those who would like to teach it.</p>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/download.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <title>Download</title>
- <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body>
- <?include file="//include/header.include.html"?>
- <div class="hr"><hr/></div>
- <?include file="//include/navigation.include.html"?>
- <div class="hr"><hr/></div>
-
- <div id="content">
-
- <h2><?value key="distname"?></h2>
-
- <p>The following source and binary packages of <?value key="distname"?>
- provide everything required for easy installation of the full Isabelle
- working environment on common Unix platforms (e.g. Linux, MacOS X,
- Solaris). We provide a complete set of packages for Isabelle, Proof
- General, and PolyML.</p>
-
- <p>While XEmacs 21 is not included here, most operating system
- distributions already provide a suitable package. Some of the
- packages below are platform dependent; we include binaries for
- Linux/x86, Solaris/Sparc, and Darwin/PPC (MacOS X).</p>
-
- <p>Please see the <a href="installation.html">installation instructions</a>
- for which packages to download and for more information.</p>
-
- <?include file="//include/downloadtable.include.html"?>
-
- <h2>Development snapshot</h2>
-
- <p>For the curious we provide a nightly generated
- CVS <a href="http://isabelle.in.tum.de/devel/">development snapshot</a> of
- Isabelle. <em>Use at your own risk!</em></p>
-
- <h2>Past releases</h2>
-
- <p>Past releases are available from the <a href="download_past.html">archive</a>.</p>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/download_past.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <title>Older Isabelle Releases</title>
- <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="dist">
- <?include file="//include/header.include.html"?>
- <div class="hr"><hr/></div>
- <?include file="//include/navigation.include.html"?>
- <div class="hr"><hr/></div>
-
- <div id="content">
-
- <h2>Archive</h2>
-
- Past releases of Isabelle are available from the Cambridge
- archive:
- <ul>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2004.tar.gz">Isabelle2004</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2003.tar.gz">Isabelle2003</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2002.tar.gz">Isabelle2002</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99-2.tar.gz">Isabelle99-2</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99-1.tar.gz">Isabelle99-1</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99.tar.gz">Isabelle99</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle98-1.tar.gz">Isabelle98-1</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle98.tar.gz">Isabelle98</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-8.tar.gz">Isabelle94-8</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-7.tar.gz">Isabelle94-7</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-6.tar.gz">Isabelle94-6</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94.tar.gz">Isabelle94</a></li>
- <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle93.tar.gz">Isabelle93</a></li>
- </ul>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/dtd/xhtml-lat1.ent Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
- <!ENTITY % HTMLlat1 PUBLIC
- "-//W3C//ENTITIES Latin 1 for XHTML//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
- %HTMLlat1;
--->
-
-<!ENTITY nbsp " "> <!-- no-break space = non-breaking space,
- U+00A0 ISOnum -->
-<!ENTITY iexcl "¡"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent "¢"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound "£"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "¤"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen "¥"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "¦"> <!-- broken bar = broken vertical bar,
- U+00A6 ISOnum -->
-<!ENTITY sect "§"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml "¨"> <!-- diaeresis = spacing diaeresis,
- U+00A8 ISOdia -->
-<!ENTITY copy "©"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf "ª"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo "«"> <!-- left-pointing double angle quotation mark
- = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not "¬"> <!-- not sign = angled dash,
- U+00AC ISOnum -->
-<!ENTITY shy "­"> <!-- soft hyphen = discretionary hyphen,
- U+00AD ISOnum -->
-<!ENTITY reg "®"> <!-- registered sign = registered trade mark sign,
- U+00AE ISOnum -->
-<!ENTITY macr "¯"> <!-- macron = spacing macron = overline
- = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg "°"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "±"> <!-- plus-minus sign = plus-or-minus sign,
- U+00B1 ISOnum -->
-<!ENTITY sup2 "²"> <!-- superscript two = superscript digit two
- = squared, U+00B2 ISOnum -->
-<!ENTITY sup3 "³"> <!-- superscript three = superscript digit three
- = cubed, U+00B3 ISOnum -->
-<!ENTITY acute "´"> <!-- acute accent = spacing acute,
- U+00B4 ISOdia -->
-<!ENTITY micro "µ"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para "¶"> <!-- pilcrow sign = paragraph sign,
- U+00B6 ISOnum -->
-<!ENTITY middot "·"> <!-- middle dot = Georgian comma
- = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil "¸"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1 "¹"> <!-- superscript one = superscript digit one,
- U+00B9 ISOnum -->
-<!ENTITY ordm "º"> <!-- masculine ordinal indicator,
- U+00BA ISOnum -->
-<!ENTITY raquo "»"> <!-- right-pointing double angle quotation mark
- = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "¼"> <!-- vulgar fraction one quarter
- = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "½"> <!-- vulgar fraction one half
- = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "¾"> <!-- vulgar fraction three quarters
- = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "¿"> <!-- inverted question mark
- = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "À"> <!-- latin capital letter A with grave
- = latin capital letter A grave,
- U+00C0 ISOlat1 -->
-<!ENTITY Aacute "Á"> <!-- latin capital letter A with acute,
- U+00C1 ISOlat1 -->
-<!ENTITY Acirc "Â"> <!-- latin capital letter A with circumflex,
- U+00C2 ISOlat1 -->
-<!ENTITY Atilde "Ã"> <!-- latin capital letter A with tilde,
- U+00C3 ISOlat1 -->
-<!ENTITY Auml "Ä"> <!-- latin capital letter A with diaeresis,
- U+00C4 ISOlat1 -->
-<!ENTITY Aring "Å"> <!-- latin capital letter A with ring above
- = latin capital letter A ring,
- U+00C5 ISOlat1 -->
-<!ENTITY AElig "Æ"> <!-- latin capital letter AE
- = latin capital ligature AE,
- U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "Ç"> <!-- latin capital letter C with cedilla,
- U+00C7 ISOlat1 -->
-<!ENTITY Egrave "È"> <!-- latin capital letter E with grave,
- U+00C8 ISOlat1 -->
-<!ENTITY Eacute "É"> <!-- latin capital letter E with acute,
- U+00C9 ISOlat1 -->
-<!ENTITY Ecirc "Ê"> <!-- latin capital letter E with circumflex,
- U+00CA ISOlat1 -->
-<!ENTITY Euml "Ë"> <!-- latin capital letter E with diaeresis,
- U+00CB ISOlat1 -->
-<!ENTITY Igrave "Ì"> <!-- latin capital letter I with grave,
- U+00CC ISOlat1 -->
-<!ENTITY Iacute "Í"> <!-- latin capital letter I with acute,
- U+00CD ISOlat1 -->
-<!ENTITY Icirc "Î"> <!-- latin capital letter I with circumflex,
- U+00CE ISOlat1 -->
-<!ENTITY Iuml "Ï"> <!-- latin capital letter I with diaeresis,
- U+00CF ISOlat1 -->
-<!ENTITY ETH "Ð"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "Ñ"> <!-- latin capital letter N with tilde,
- U+00D1 ISOlat1 -->
-<!ENTITY Ograve "Ò"> <!-- latin capital letter O with grave,
- U+00D2 ISOlat1 -->
-<!ENTITY Oacute "Ó"> <!-- latin capital letter O with acute,
- U+00D3 ISOlat1 -->
-<!ENTITY Ocirc "Ô"> <!-- latin capital letter O with circumflex,
- U+00D4 ISOlat1 -->
-<!ENTITY Otilde "Õ"> <!-- latin capital letter O with tilde,
- U+00D5 ISOlat1 -->
-<!ENTITY Ouml "Ö"> <!-- latin capital letter O with diaeresis,
- U+00D6 ISOlat1 -->
-<!ENTITY times "×"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "Ø"> <!-- latin capital letter O with stroke
- = latin capital letter O slash,
- U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "Ù"> <!-- latin capital letter U with grave,
- U+00D9 ISOlat1 -->
-<!ENTITY Uacute "Ú"> <!-- latin capital letter U with acute,
- U+00DA ISOlat1 -->
-<!ENTITY Ucirc "Û"> <!-- latin capital letter U with circumflex,
- U+00DB ISOlat1 -->
-<!ENTITY Uuml "Ü"> <!-- latin capital letter U with diaeresis,
- U+00DC ISOlat1 -->
-<!ENTITY Yacute "Ý"> <!-- latin capital letter Y with acute,
- U+00DD ISOlat1 -->
-<!ENTITY THORN "Þ"> <!-- latin capital letter THORN,
- U+00DE ISOlat1 -->
-<!ENTITY szlig "ß"> <!-- latin small letter sharp s = ess-zed,
- U+00DF ISOlat1 -->
-<!ENTITY agrave "à"> <!-- latin small letter a with grave
- = latin small letter a grave,
- U+00E0 ISOlat1 -->
-<!ENTITY aacute "á"> <!-- latin small letter a with acute,
- U+00E1 ISOlat1 -->
-<!ENTITY acirc "â"> <!-- latin small letter a with circumflex,
- U+00E2 ISOlat1 -->
-<!ENTITY atilde "ã"> <!-- latin small letter a with tilde,
- U+00E3 ISOlat1 -->
-<!ENTITY auml "ä"> <!-- latin small letter a with diaeresis,
- U+00E4 ISOlat1 -->
-<!ENTITY aring "å"> <!-- latin small letter a with ring above
- = latin small letter a ring,
- U+00E5 ISOlat1 -->
-<!ENTITY aelig "æ"> <!-- latin small letter ae
- = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "ç"> <!-- latin small letter c with cedilla,
- U+00E7 ISOlat1 -->
-<!ENTITY egrave "è"> <!-- latin small letter e with grave,
- U+00E8 ISOlat1 -->
-<!ENTITY eacute "é"> <!-- latin small letter e with acute,
- U+00E9 ISOlat1 -->
-<!ENTITY ecirc "ê"> <!-- latin small letter e with circumflex,
- U+00EA ISOlat1 -->
-<!ENTITY euml "ë"> <!-- latin small letter e with diaeresis,
- U+00EB ISOlat1 -->
-<!ENTITY igrave "ì"> <!-- latin small letter i with grave,
- U+00EC ISOlat1 -->
-<!ENTITY iacute "í"> <!-- latin small letter i with acute,
- U+00ED ISOlat1 -->
-<!ENTITY icirc "î"> <!-- latin small letter i with circumflex,
- U+00EE ISOlat1 -->
-<!ENTITY iuml "ï"> <!-- latin small letter i with diaeresis,
- U+00EF ISOlat1 -->
-<!ENTITY eth "ð"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "ñ"> <!-- latin small letter n with tilde,
- U+00F1 ISOlat1 -->
-<!ENTITY ograve "ò"> <!-- latin small letter o with grave,
- U+00F2 ISOlat1 -->
-<!ENTITY oacute "ó"> <!-- latin small letter o with acute,
- U+00F3 ISOlat1 -->
-<!ENTITY ocirc "ô"> <!-- latin small letter o with circumflex,
- U+00F4 ISOlat1 -->
-<!ENTITY otilde "õ"> <!-- latin small letter o with tilde,
- U+00F5 ISOlat1 -->
-<!ENTITY ouml "ö"> <!-- latin small letter o with diaeresis,
- U+00F6 ISOlat1 -->
-<!ENTITY divide "÷"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "ø"> <!-- latin small letter o with stroke,
- = latin small letter o slash,
- U+00F8 ISOlat1 -->
-<!ENTITY ugrave "ù"> <!-- latin small letter u with grave,
- U+00F9 ISOlat1 -->
-<!ENTITY uacute "ú"> <!-- latin small letter u with acute,
- U+00FA ISOlat1 -->
-<!ENTITY ucirc "û"> <!-- latin small letter u with circumflex,
- U+00FB ISOlat1 -->
-<!ENTITY uuml "ü"> <!-- latin small letter u with diaeresis,
- U+00FC ISOlat1 -->
-<!ENTITY yacute "ý"> <!-- latin small letter y with acute,
- U+00FD ISOlat1 -->
-<!ENTITY thorn "þ"> <!-- latin small letter thorn,
- U+00FE ISOlat1 -->
-<!ENTITY yuml "ÿ"> <!-- latin small letter y with diaeresis,
- U+00FF ISOlat1 -->
--- a/Admin/website/dtd/xhtml-special.ent Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
- <!ENTITY % HTMLspecial PUBLIC
- "-//W3C//ENTITIES Special for XHTML//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
- %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
- New names (i.e., not in ISO 8879 list) do not clash with any
- existing ISO 8879 entity names. ISO 10646 character numbers
- are given for each character, in hex. values are decimal
- conversions of the ISO 10646 values and refer to the document
- character set. Names are Unicode names.
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot """> <!-- quotation mark, U+0022 ISOnum -->
-<!ENTITY amp "&#38;"> <!-- ampersand, U+0026 ISOnum -->
-<!ENTITY lt "&#60;"> <!-- less-than sign, U+003C ISOnum -->
-<!ENTITY gt ">"> <!-- greater-than sign, U+003E ISOnum -->
-<!ENTITY apos "'"> <!-- apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig "Œ"> <!-- latin capital ligature OE,
- U+0152 ISOlat2 -->
-<!ENTITY oelig "œ"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron "Š"> <!-- latin capital letter S with caron,
- U+0160 ISOlat2 -->
-<!ENTITY scaron "š"> <!-- latin small letter s with caron,
- U+0161 ISOlat2 -->
-<!ENTITY Yuml "Ÿ"> <!-- latin capital letter Y with diaeresis,
- U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ "ˆ"> <!-- modifier letter circumflex accent,
- U+02C6 ISOpub -->
-<!ENTITY tilde "˜"> <!-- small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp " "> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp " "> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp " "> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj "‌"> <!-- zero width non-joiner,
- U+200C NEW RFC 2070 -->
-<!ENTITY zwj "‍"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm "‎"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm "‏"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash "–"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash "—"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo "‘"> <!-- left single quotation mark,
- U+2018 ISOnum -->
-<!ENTITY rsquo "’"> <!-- right single quotation mark,
- U+2019 ISOnum -->
-<!ENTITY sbquo "‚"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo "“"> <!-- left double quotation mark,
- U+201C ISOnum -->
-<!ENTITY rdquo "”"> <!-- right double quotation mark,
- U+201D ISOnum -->
-<!ENTITY bdquo "„"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger "†"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger "‡"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil "‰"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo "‹"> <!-- single left-pointing angle quotation mark,
- U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo "›"> <!-- single right-pointing angle quotation mark,
- U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro "€"> <!-- euro sign, U+20AC NEW -->
--- a/Admin/website/dtd/xhtml-symbol.ent Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
- <!ENTITY % HTMLsymbol PUBLIC
- "-//W3C//ENTITIES Symbols for XHTML//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
- %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
- Permission to copy in any form is granted for use with
- conforming SGML systems and applications as defined in
- ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
- New names (i.e., not in ISO 8879 list) do not clash with any
- existing ISO 8879 entity names. ISO 10646 character numbers
- are given for each character, in hex. values are decimal
- conversions of the ISO 10646 values and refer to the document
- character set. Names are Unicode names.
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof "ƒ"> <!-- latin small letter f with hook = function
- = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha "Α"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta "Β"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma "Γ"> <!-- greek capital letter gamma,
- U+0393 ISOgrk3 -->
-<!ENTITY Delta "Δ"> <!-- greek capital letter delta,
- U+0394 ISOgrk3 -->
-<!ENTITY Epsilon "Ε"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta "Ζ"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta "Η"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta "Θ"> <!-- greek capital letter theta,
- U+0398 ISOgrk3 -->
-<!ENTITY Iota "Ι"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa "Κ"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda "Λ"> <!-- greek capital letter lamda,
- U+039B ISOgrk3 -->
-<!ENTITY Mu "Μ"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu "Ν"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi "Ξ"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron "Ο"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi "Π"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho "Ρ"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma "Σ"> <!-- greek capital letter sigma,
- U+03A3 ISOgrk3 -->
-<!ENTITY Tau "Τ"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon "Υ"> <!-- greek capital letter upsilon,
- U+03A5 ISOgrk3 -->
-<!ENTITY Phi "Φ"> <!-- greek capital letter phi,
- U+03A6 ISOgrk3 -->
-<!ENTITY Chi "Χ"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi "Ψ"> <!-- greek capital letter psi,
- U+03A8 ISOgrk3 -->
-<!ENTITY Omega "Ω"> <!-- greek capital letter omega,
- U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha "α"> <!-- greek small letter alpha,
- U+03B1 ISOgrk3 -->
-<!ENTITY beta "β"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma "γ"> <!-- greek small letter gamma,
- U+03B3 ISOgrk3 -->
-<!ENTITY delta "δ"> <!-- greek small letter delta,
- U+03B4 ISOgrk3 -->
-<!ENTITY epsilon "ε"> <!-- greek small letter epsilon,
- U+03B5 ISOgrk3 -->
-<!ENTITY zeta "ζ"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta "η"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta "θ"> <!-- greek small letter theta,
- U+03B8 ISOgrk3 -->
-<!ENTITY iota "ι"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa "κ"> <!-- greek small letter kappa,
- U+03BA ISOgrk3 -->
-<!ENTITY lambda "λ"> <!-- greek small letter lamda,
- U+03BB ISOgrk3 -->
-<!ENTITY mu "μ"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu "ν"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi "ξ"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron "ο"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi "π"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho "ρ"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf "ς"> <!-- greek small letter final sigma,
- U+03C2 ISOgrk3 -->
-<!ENTITY sigma "σ"> <!-- greek small letter sigma,
- U+03C3 ISOgrk3 -->
-<!ENTITY tau "τ"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon "υ"> <!-- greek small letter upsilon,
- U+03C5 ISOgrk3 -->
-<!ENTITY phi "φ"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi "χ"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi "ψ"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega "ω"> <!-- greek small letter omega,
- U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "ϑ"> <!-- greek theta symbol,
- U+03D1 NEW -->
-<!ENTITY upsih "ϒ"> <!-- greek upsilon with hook symbol,
- U+03D2 NEW -->
-<!ENTITY piv "ϖ"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull "•"> <!-- bullet = black small circle,
- U+2022 ISOpub -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip "…"> <!-- horizontal ellipsis = three dot leader,
- U+2026 ISOpub -->
-<!ENTITY prime "′"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime "″"> <!-- double prime = seconds = inches,
- U+2033 ISOtech -->
-<!ENTITY oline "‾"> <!-- overline = spacing overscore,
- U+203E NEW -->
-<!ENTITY frasl "⁄"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp "℘"> <!-- script capital P = power set
- = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image "ℑ"> <!-- black-letter capital I = imaginary part,
- U+2111 ISOamso -->
-<!ENTITY real "ℜ"> <!-- black-letter capital R = real part symbol,
- U+211C ISOamso -->
-<!ENTITY trade "™"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym "ℵ"> <!-- alef symbol = first transfinite cardinal,
- U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
- U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr "←"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr "↑"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr "→"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr "↓"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr "↔"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr "↵"> <!-- downwards arrow with corner leftwards
- = carriage return, U+21B5 NEW -->
-<!ENTITY lArr "⇐"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
- but also does not have any other character for that function. So lArr can
- be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr "⇑"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr "⇒"> <!-- rightwards double arrow,
- U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have
- another character with this function so rArr can be used for 'implies'
- as ISOtech suggests -->
-<!ENTITY dArr "⇓"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr "⇔"> <!-- left right double arrow,
- U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall "∀"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part "∂"> <!-- partial differential, U+2202 ISOtech -->
-<!ENTITY exist "∃"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty "∅"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla "∇"> <!-- nabla = backward difference,
- U+2207 ISOtech -->
-<!ENTITY isin "∈"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin "∉"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni "∋"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod "∏"> <!-- n-ary product = product sign,
- U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
- the same glyph might be used for both -->
-<!ENTITY sum "∑"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
- though the same glyph might be used for both -->
-<!ENTITY minus "−"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast "∗"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic "√"> <!-- square root = radical sign,
- U+221A ISOtech -->
-<!ENTITY prop "∝"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin "∞"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang "∠"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and "∧"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or "∨"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap "∩"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup "∪"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int "∫"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4 "∴"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim "∼"> <!-- tilde operator = varies with = similar to,
- U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
- although the same glyph might be used to represent both -->
-<!ENTITY cong "≅"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp "≈"> <!-- almost equal to = asymptotic to,
- U+2248 ISOamsr -->
-<!ENTITY ne "≠"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv "≡"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le "≤"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge "≥"> <!-- greater-than or equal to,
- U+2265 ISOtech -->
-<!ENTITY sub "⊂"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup "⊃"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub "⊄"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube "⊆"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe "⊇"> <!-- superset of or equal to,
- U+2287 ISOtech -->
-<!ENTITY oplus "⊕"> <!-- circled plus = direct sum,
- U+2295 ISOamsb -->
-<!ENTITY otimes "⊗"> <!-- circled times = vector product,
- U+2297 ISOamsb -->
-<!ENTITY perp "⊥"> <!-- up tack = orthogonal to = perpendicular,
- U+22A5 ISOtech -->
-<!ENTITY sdot "⋅"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil "⌈"> <!-- left ceiling = APL upstile,
- U+2308 ISOamsc -->
-<!ENTITY rceil "⌉"> <!-- right ceiling, U+2309 ISOamsc -->
-<!ENTITY lfloor "⌊"> <!-- left floor = APL downstile,
- U+230A ISOamsc -->
-<!ENTITY rfloor "⌋"> <!-- right floor, U+230B ISOamsc -->
-<!ENTITY lang "〈"> <!-- left-pointing angle bracket = bra,
- U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign'
- or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang "〉"> <!-- right-pointing angle bracket = ket,
- U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign'
- or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz "◊"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades "♠"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs "♣"> <!-- black club suit = shamrock,
- U+2663 ISOpub -->
-<!ENTITY hearts "♥"> <!-- black heart suit = valentine,
- U+2665 ISOpub -->
-<!ENTITY diams "♦"> <!-- black diamond suit, U+2666 ISOpub -->
--- a/Admin/website/dtd/xhtml1-frameset.dtd Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1235 +0,0 @@
-<!--
- Extensible HTML version 1.0 Frameset DTD
-
- This is the same as HTML 4 Frameset except for
- changes due to the differences between XML and SGML.
-
- Namespace = http://www.w3.org/1999/xhtml
-
- For further information, see: http://www.w3.org/TR/xhtml1
-
- Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
- All Rights Reserved.
-
- This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
- SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
-
- $Revision$
- $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
- "-//W3C//ENTITIES Latin 1 for XHTML//EN"
- "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
- "-//W3C//ENTITIES Symbols for XHTML//EN"
- "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
- "-//W3C//ENTITIES Special for XHTML//EN"
- "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
- <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
- <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
- <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
- <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
- <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
- <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
- <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
- <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
- <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
- <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
- <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
- <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
- <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
- <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
- <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
- <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
- <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
- <!-- pixel, percentage, or relative -->
-
-<!ENTITY % MultiLengths "CDATA">
- <!-- comma-separated list of MultiLength -->
-
-<!ENTITY % Pixels "CDATA">
- <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
- <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
- Black = #000000 Green = #008000
- Silver = #C0C0C0 Lime = #00FF00
- Gray = #808080 Olive = #808000
- White = #FFFFFF Yellow = #FFFF00
- Maroon = #800000 Navy = #000080
- Red = #FF0000 Blue = #0000FF
- Purple = #800080 Teal = #008080
- Fuchsia= #FF00FF Aqua = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
- id document-wide unique id
- class space separated list of classes
- style associated style info
- title advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id ID #IMPLIED
- class CDATA #IMPLIED
- style %StyleSheet; #IMPLIED
- title %Text; #IMPLIED"
- >
-
-<!-- internationalization attributes
- lang language code (backwards compatible)
- xml:lang language code (as per XML 1.0 spec)
- dir direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang %LanguageCode; #IMPLIED
- xml:lang %LanguageCode; #IMPLIED
- dir (ltr|rtl) #IMPLIED"
- >
-
-<!-- attributes for common UI events
- onclick a pointer button was clicked
- ondblclick a pointer button was double clicked
- onmousedown a pointer button was pressed down
- onmouseup a pointer button was released
- onmousemove a pointer was moved onto the element
- onmouseout a pointer was moved away from the element
- onkeypress a key was pressed and released
- onkeydown a key was pressed down
- onkeyup a key was released
--->
-<!ENTITY % events
- "onclick %Script; #IMPLIED
- ondblclick %Script; #IMPLIED
- onmousedown %Script; #IMPLIED
- onmouseup %Script; #IMPLIED
- onmouseover %Script; #IMPLIED
- onmousemove %Script; #IMPLIED
- onmouseout %Script; #IMPLIED
- onkeypress %Script; #IMPLIED
- onkeydown %Script; #IMPLIED
- onkeyup %Script; #IMPLIED"
- >
-
-<!-- attributes for elements that can get the focus
- accesskey accessibility key character
- tabindex position in tabbing order
- onfocus the element got the focus
- onblur the element lost the focus
--->
-<!ENTITY % focus
- "accesskey %Character; #IMPLIED
- tabindex %Number; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED"
- >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
- align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
- "object | applet | img | map | iframe">
-
-<!ENTITY % special.basic
- "br | span | bdo">
-
-<!ENTITY % special
- "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
- | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
- samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center">
-
-<!ENTITY % block
- "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
- "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
- sub, sup, font, or basefont -->
-
-<!ENTITY % pre.content
- "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
- %inline.forms; | %misc.inline;)*">
-
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
- "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
- table | br | span | bdo | object | applet | img | map |
- %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, frameset)>
-<!ATTLIST html
- %i18n;
- id ID #IMPLIED
- xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
- >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
- title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
- ((title, %head.misc;, (base, %head.misc;)?) |
- (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
- %i18n;
- id ID #IMPLIED
- profile %URI; #IMPLIED
- >
-
-<!-- The title element is not considered part of the flow of text.
- It should be displayed, for example as the page header or
- window title. Exactly one title is required per document.
- -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title
- %i18n;
- id ID #IMPLIED
- >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
- id ID #IMPLIED
- href %URI; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
- %i18n;
- id ID #IMPLIED
- http-equiv CDATA #IMPLIED
- name CDATA #IMPLIED
- content CDATA #REQUIRED
- scheme CDATA #IMPLIED
- >
-
-<!--
- Relationship values can be used in principle:
-
- a) for document specific toolbars/menus when used
- with the link element in document head e.g.
- start, contents, previous, next, index, end, help
- b) to link to a separate style sheet (rel="stylesheet")
- c) to make a link to a script (rel="script")
- d) by stylesheets to control how collections of
- html nodes are rendered into printed documents
- e) to make a link to a printable version of this document
- e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
- %attrs;
- charset %Charset; #IMPLIED
- href %URI; #IMPLIED
- hreflang %LanguageCode; #IMPLIED
- type %ContentType; #IMPLIED
- rel %LinkTypes; #IMPLIED
- rev %LinkTypes; #IMPLIED
- media %MediaDesc; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
- %i18n;
- id ID #IMPLIED
- type %ContentType; #REQUIRED
- media %MediaDesc; #IMPLIED
- title %Text; #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
- id ID #IMPLIED
- charset %Charset; #IMPLIED
- type %ContentType; #REQUIRED
- language CDATA #IMPLIED
- src %URI; #IMPLIED
- defer (defer) #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
- %attrs;
- >
-
-<!--======================= Frames =======================================-->
-
-<!-- only one noframes element permitted per document -->
-
-<!ELEMENT frameset (frameset|frame|noframes)*>
-<!ATTLIST frameset
- %coreattrs;
- rows %MultiLengths; #IMPLIED
- cols %MultiLengths; #IMPLIED
- onload %Script; #IMPLIED
- onunload %Script; #IMPLIED
- >
-
-<!-- reserved frame names start with "_" otherwise starts with letter -->
-
-<!-- tiled window within frameset -->
-
-<!ELEMENT frame EMPTY>
-<!ATTLIST frame
- %coreattrs;
- longdesc %URI; #IMPLIED
- name NMTOKEN #IMPLIED
- src %URI; #IMPLIED
- frameborder (1|0) "1"
- marginwidth %Pixels; #IMPLIED
- marginheight %Pixels; #IMPLIED
- noresize (noresize) #IMPLIED
- scrolling (yes|no|auto) "auto"
- >
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
- %coreattrs;
- longdesc %URI; #IMPLIED
- name NMTOKEN #IMPLIED
- src %URI; #IMPLIED
- frameborder (1|0) "1"
- marginwidth %Pixels; #IMPLIED
- marginheight %Pixels; #IMPLIED
- scrolling (yes|no|auto) "auto"
- align %ImgAlign; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes (body)>
-<!ATTLIST noframes
- %attrs;
- >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
- %attrs;
- onload %Script; #IMPLIED
- onunload %Script; #IMPLIED
- background %URI; #IMPLIED
- bgcolor %Color; #IMPLIED
- text %Color; #IMPLIED
- link %Color; #IMPLIED
- vlink %Color; #IMPLIED
- alink %Color; #IMPLIED
- >
-
-<!ELEMENT div %Flow;> <!-- generic language/style container -->
-<!ATTLIST div
- %attrs;
- %TextAlign;
- >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
- %attrs;
- %TextAlign;
- >
-
-<!--=================== Headings =========================================-->
-
-<!--
- There are six levels of headings from h1 (the most important)
- to h6 (the least important).
--->
-
-<!ELEMENT h1 %Inline;>
-<!ATTLIST h1
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
- %attrs;
- %TextAlign;
- >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
- %attrs;
- type %ULStyle; #IMPLIED
- compact (compact) #IMPLIED
- >
-
-<!-- Ordered list numbering style
-
- 1 arabic numbers 1, 2, 3, ...
- a lower alpha a, b, c, ...
- A upper alpha A, B, C, ...
- i lower roman i, ii, iii, ...
- I upper roman I, II, III, ...
-
- The style is applied to the sequence number which by default
- is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
- %attrs;
- type %OLStyle; #IMPLIED
- compact (compact) #IMPLIED
- start %Number; #IMPLIED
- >
-
-<!-- single column list (DEPRECATED) -->
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
- %attrs;
- compact (compact) #IMPLIED
- >
-
-<!-- multiple column list (DEPRECATED) -->
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
- %attrs;
- compact (compact) #IMPLIED
- >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
- %attrs;
- type %LIStyle; #IMPLIED
- value %Number; #IMPLIED
- >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
- %attrs;
- compact (compact) #IMPLIED
- >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
- %attrs;
- >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
- %attrs;
- >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
- %attrs;
- >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
- %attrs;
- align (left|center|right) #IMPLIED
- noshade (noshade) #IMPLIED
- size %Pixels; #IMPLIED
- width %Length; #IMPLIED
- >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding
- "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
- %attrs;
- width %Number; #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
- %attrs;
- cite %URI; #IMPLIED
- >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
- %attrs;
- >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-
-<!--
- ins/del are allowed in block and inline content, but its
- inappropriate to include block content within an ins element
- occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
- %attrs;
- cite %URI; #IMPLIED
- datetime %Datetime; #IMPLIED
- >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
- %attrs;
- cite %URI; #IMPLIED
- datetime %Datetime; #IMPLIED
- >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
- %attrs;
- %focus;
- charset %Charset; #IMPLIED
- type %ContentType; #IMPLIED
- name NMTOKEN #IMPLIED
- href %URI; #IMPLIED
- hreflang %LanguageCode; #IMPLIED
- rel %LinkTypes; #IMPLIED
- rev %LinkTypes; #IMPLIED
- shape %Shape; "rect"
- coords %Coords; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
- %attrs;
- >
-
-<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
- %coreattrs;
- %events;
- lang %LanguageCode; #IMPLIED
- xml:lang %LanguageCode; #IMPLIED
- dir (ltr|rtl) #REQUIRED
- >
-
-<!ELEMENT br EMPTY> <!-- forced line break -->
-<!ATTLIST br
- %coreattrs;
- clear (left|all|right|none) "none"
- >
-
-<!ELEMENT em %Inline;> <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;> <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;> <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;> <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;> <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;> <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;> <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;> <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;> <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;> <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;> <!-- inlined quote -->
-<!ATTLIST q
- %attrs;
- cite %URI; #IMPLIED
- >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;> <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;> <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;> <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;> <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;> <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;> <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;> <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY> <!-- base font size -->
-<!ATTLIST basefont
- id ID #IMPLIED
- size CDATA #REQUIRED
- color %Color; #IMPLIED
- face CDATA #IMPLIED
- >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
- %coreattrs;
- %i18n;
- size CDATA #IMPLIED
- color %Color; #IMPLIED
- face CDATA #IMPLIED
- >
-
-<!--==================== Object ======================================-->
-<!--
- object is used to embed objects as part of HTML pages.
- param elements should precede other content. Parameters
- can also be expressed as attribute/value pairs on the
- object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
-<!ATTLIST object
- %attrs;
- declare (declare) #IMPLIED
- classid %URI; #IMPLIED
- codebase %URI; #IMPLIED
- data %URI; #IMPLIED
- type %ContentType; #IMPLIED
- codetype %ContentType; #IMPLIED
- archive %UriList; #IMPLIED
- standby %Text; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- usemap %URI; #IMPLIED
- name NMTOKEN #IMPLIED
- tabindex %Number; #IMPLIED
- align %ImgAlign; #IMPLIED
- border %Pixels; #IMPLIED
- hspace %Pixels; #IMPLIED
- vspace %Pixels; #IMPLIED
- >
-
-<!--
- param is used to supply a named property value.
- In XML it would seem natural to follow RDF and support an
- abbreviated syntax where the param elements are replaced
- by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
- id ID #IMPLIED
- name CDATA #REQUIRED
- value CDATA #IMPLIED
- valuetype (data|ref|object) "data"
- type %ContentType; #IMPLIED
- >
-
-<!--=================== Java applet ==================================-->
-<!--
- One of code or object attributes must be present.
- Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
- %coreattrs;
- codebase %URI; #IMPLIED
- archive CDATA #IMPLIED
- code CDATA #IMPLIED
- object CDATA #IMPLIED
- alt %Text; #IMPLIED
- name NMTOKEN #IMPLIED
- width %Length; #REQUIRED
- height %Length; #REQUIRED
- align %ImgAlign; #IMPLIED
- hspace %Pixels; #IMPLIED
- vspace %Pixels; #IMPLIED
- >
-
-<!--=================== Images ===========================================-->
-
-<!--
- To avoid accessibility problems for people who aren't
- able to see the image, you should provide a text
- description using the alt and longdesc attributes.
- In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
- %attrs;
- src %URI; #REQUIRED
- alt %Text; #REQUIRED
- name NMTOKEN #IMPLIED
- longdesc %URI; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- usemap %URI; #IMPLIED
- ismap (ismap) #IMPLIED
- align %ImgAlign; #IMPLIED
- border %Pixels; #IMPLIED
- hspace %Pixels; #IMPLIED
- vspace %Pixels; #IMPLIED
- >
-
-<!-- usemap points to a map element which may be in this document
- or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
- separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
- %i18n;
- %events;
- id ID #REQUIRED
- class CDATA #IMPLIED
- style %StyleSheet; #IMPLIED
- title %Text; #IMPLIED
- name NMTOKEN #IMPLIED
- >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
- %attrs;
- %focus;
- shape %Shape; "rect"
- coords %Coords; #IMPLIED
- href %URI; #IMPLIED
- nohref (nohref) #IMPLIED
- alt %Text; #REQUIRED
- target %FrameTarget; #IMPLIED
- >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
- %attrs;
- action %URI; #REQUIRED
- method (get|post) "get"
- name NMTOKEN #IMPLIED
- enctype %ContentType; "application/x-www-form-urlencoded"
- onsubmit %Script; #IMPLIED
- onreset %Script; #IMPLIED
- accept %ContentTypes; #IMPLIED
- accept-charset %Charsets; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!--
- Each label must not contain more than ONE field
- Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
- %attrs;
- for IDREF #IMPLIED
- accesskey %Character; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED
- >
-
-<!ENTITY % InputType
- "(text | password | checkbox |
- radio | submit | reset |
- file | hidden | image | button)"
- >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY> <!-- form control -->
-<!ATTLIST input
- %attrs;
- %focus;
- type %InputType; "text"
- name CDATA #IMPLIED
- value CDATA #IMPLIED
- checked (checked) #IMPLIED
- disabled (disabled) #IMPLIED
- readonly (readonly) #IMPLIED
- size CDATA #IMPLIED
- maxlength %Number; #IMPLIED
- src %URI; #IMPLIED
- alt CDATA #IMPLIED
- usemap %URI; #IMPLIED
- onselect %Script; #IMPLIED
- onchange %Script; #IMPLIED
- accept %ContentTypes; #IMPLIED
- align %ImgAlign; #IMPLIED
- >
-
-<!ELEMENT select (optgroup|option)+> <!-- option selector -->
-<!ATTLIST select
- %attrs;
- name CDATA #IMPLIED
- size %Number; #IMPLIED
- multiple (multiple) #IMPLIED
- disabled (disabled) #IMPLIED
- tabindex %Number; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED
- onchange %Script; #IMPLIED
- >
-
-<!ELEMENT optgroup (option)+> <!-- option group -->
-<!ATTLIST optgroup
- %attrs;
- disabled (disabled) #IMPLIED
- label %Text; #REQUIRED
- >
-
-<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
-<!ATTLIST option
- %attrs;
- selected (selected) #IMPLIED
- disabled (disabled) #IMPLIED
- label %Text; #IMPLIED
- value CDATA #IMPLIED
- >
-
-<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
-<!ATTLIST textarea
- %attrs;
- %focus;
- name CDATA #IMPLIED
- rows %Number; #REQUIRED
- cols %Number; #REQUIRED
- disabled (disabled) #IMPLIED
- readonly (readonly) #IMPLIED
- onselect %Script; #IMPLIED
- onchange %Script; #IMPLIED
- >
-
-<!--
- The fieldset element is used to group form fields.
- Only one legend element should occur in the content
- and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
- %attrs;
- >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;> <!-- fieldset label -->
-<!ATTLIST legend
- %attrs;
- accesskey %Character; #IMPLIED
- align %LAlign; #IMPLIED
- >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
--->
-<!ELEMENT button %button.content;> <!-- push button -->
-<!ATTLIST button
- %attrs;
- %focus;
- name CDATA #IMPLIED
- value CDATA #IMPLIED
- type (button|submit|reset) "submit"
- disabled (disabled) #IMPLIED
- >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
- %coreattrs;
- %i18n;
- prompt %Text; #IMPLIED
- >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
- "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
- char alignment char, e.g. char=":"
- charoff offset for alignment char
--->
-<!ENTITY % cellhalign
- "align (left|center|right|justify|char) #IMPLIED
- char %Character; #IMPLIED
- charoff %Length; #IMPLIED"
- >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
- "valign (top|middle|bottom|baseline) #IMPLIED"
- >
-
-<!ELEMENT table
- (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption %Inline;>
-<!ELEMENT thead (tr)+>
-<!ELEMENT tfoot (tr)+>
-<!ELEMENT tbody (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col EMPTY>
-<!ELEMENT tr (th|td)+>
-<!ELEMENT th %Flow;>
-<!ELEMENT td %Flow;>
-
-<!ATTLIST table
- %attrs;
- summary %Text; #IMPLIED
- width %Length; #IMPLIED
- border %Pixels; #IMPLIED
- frame %TFrame; #IMPLIED
- rules %TRules; #IMPLIED
- cellspacing %Length; #IMPLIED
- cellpadding %Length; #IMPLIED
- align %TAlign; #IMPLIED
- bgcolor %Color; #IMPLIED
- >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
- %attrs;
- align %CAlign; #IMPLIED
- >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
- %attrs;
- span %Number; "1"
- width %MultiLength; #IMPLIED
- %cellhalign;
- %cellvalign;
- >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
- width=64 width in screen pixels
- width=0.5* relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
- %attrs;
- span %Number; "1"
- width %MultiLength; #IMPLIED
- %cellhalign;
- %cellvalign;
- >
-
-<!--
- Use thead to duplicate headers when breaking table
- across page boundaries, or for static headers when
- tbody sections are rendered in scrolling panel.
-
- Use tfoot to duplicate footers when breaking table
- across page boundaries, or for static footers when
- tbody sections are rendered in scrolling panel.
-
- Use multiple tbody sections when rules are needed
- between groups of table rows.
--->
-<!ATTLIST thead
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tfoot
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tbody
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tr
- %attrs;
- %cellhalign;
- %cellvalign;
- bgcolor %Color; #IMPLIED
- >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
- %attrs;
- abbr %Text; #IMPLIED
- axis CDATA #IMPLIED
- headers IDREFS #IMPLIED
- scope %Scope; #IMPLIED
- rowspan %Number; "1"
- colspan %Number; "1"
- %cellhalign;
- %cellvalign;
- nowrap (nowrap) #IMPLIED
- bgcolor %Color; #IMPLIED
- width %Pixels; #IMPLIED
- height %Pixels; #IMPLIED
- >
-
-<!ATTLIST td
- %attrs;
- abbr %Text; #IMPLIED
- axis CDATA #IMPLIED
- headers IDREFS #IMPLIED
- scope %Scope; #IMPLIED
- rowspan %Number; "1"
- colspan %Number; "1"
- %cellhalign;
- %cellvalign;
- nowrap (nowrap) #IMPLIED
- bgcolor %Color; #IMPLIED
- width %Pixels; #IMPLIED
- height %Pixels; #IMPLIED
- >
-
--- a/Admin/website/dtd/xhtml1-strict.dtd Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,978 +0,0 @@
-<!--
- Extensible HTML version 1.0 Strict DTD
-
- This is the same as HTML 4 Strict except for
- changes due to the differences between XML and SGML.
-
- Namespace = http://www.w3.org/1999/xhtml
-
- For further information, see: http://www.w3.org/TR/xhtml1
-
- Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
- All Rights Reserved.
-
- This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
- $Revision$
- $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
- "-//W3C//ENTITIES Latin 1 for XHTML//EN"
- "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
- "-//W3C//ENTITIES Symbols for XHTML//EN"
- "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
- "-//W3C//ENTITIES Special for XHTML//EN"
- "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
- <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
- <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
- <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
- <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
- <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
- <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
- <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
- <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
- <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
- <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
- <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
- <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
- <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
- <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
- <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
- <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
- <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
- <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
- <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
- id document-wide unique id
- class space separated list of classes
- style associated style info
- title advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id ID #IMPLIED
- class CDATA #IMPLIED
- style %StyleSheet; #IMPLIED
- title %Text; #IMPLIED"
- >
-
-<!-- internationalization attributes
- lang language code (backwards compatible)
- xml:lang language code (as per XML 1.0 spec)
- dir direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang %LanguageCode; #IMPLIED
- xml:lang %LanguageCode; #IMPLIED
- dir (ltr|rtl) #IMPLIED"
- >
-
-<!-- attributes for common UI events
- onclick a pointer button was clicked
- ondblclick a pointer button was double clicked
- onmousedown a pointer button was pressed down
- onmouseup a pointer button was released
- onmousemove a pointer was moved onto the element
- onmouseout a pointer was moved away from the element
- onkeypress a key was pressed and released
- onkeydown a key was pressed down
- onkeyup a key was released
--->
-<!ENTITY % events
- "onclick %Script; #IMPLIED
- ondblclick %Script; #IMPLIED
- onmousedown %Script; #IMPLIED
- onmouseup %Script; #IMPLIED
- onmouseover %Script; #IMPLIED
- onmousemove %Script; #IMPLIED
- onmouseout %Script; #IMPLIED
- onkeypress %Script; #IMPLIED
- onkeydown %Script; #IMPLIED
- onkeyup %Script; #IMPLIED"
- >
-
-<!-- attributes for elements that can get the focus
- accesskey accessibility key character
- tabindex position in tabbing order
- onfocus the element got the focus
- onblur the element lost the focus
--->
-<!ENTITY % focus
- "accesskey %Character; #IMPLIED
- tabindex %Number; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED"
- >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
- "br | span | bdo | map">
-
-
-<!ENTITY % special
- "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
- samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
- "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
- "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
- "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
- | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
- "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
- table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
- %i18n;
- id ID #IMPLIED
- xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
- >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
- title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
- ((title, %head.misc;, (base, %head.misc;)?) |
- (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
- %i18n;
- id ID #IMPLIED
- profile %URI; #IMPLIED
- >
-
-<!-- The title element is not considered part of the flow of text.
- It should be displayed, for example as the page header or
- window title. Exactly one title is required per document.
- -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title
- %i18n;
- id ID #IMPLIED
- >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
- href %URI; #REQUIRED
- id ID #IMPLIED
- >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
- %i18n;
- id ID #IMPLIED
- http-equiv CDATA #IMPLIED
- name CDATA #IMPLIED
- content CDATA #REQUIRED
- scheme CDATA #IMPLIED
- >
-
-<!--
- Relationship values can be used in principle:
-
- a) for document specific toolbars/menus when used
- with the link element in document head e.g.
- start, contents, previous, next, index, end, help
- b) to link to a separate style sheet (rel="stylesheet")
- c) to make a link to a script (rel="script")
- d) by stylesheets to control how collections of
- html nodes are rendered into printed documents
- e) to make a link to a printable version of this document
- e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
- %attrs;
- charset %Charset; #IMPLIED
- href %URI; #IMPLIED
- hreflang %LanguageCode; #IMPLIED
- type %ContentType; #IMPLIED
- rel %LinkTypes; #IMPLIED
- rev %LinkTypes; #IMPLIED
- media %MediaDesc; #IMPLIED
- >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
- %i18n;
- id ID #IMPLIED
- type %ContentType; #REQUIRED
- media %MediaDesc; #IMPLIED
- title %Text; #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
- id ID #IMPLIED
- charset %Charset; #IMPLIED
- type %ContentType; #REQUIRED
- src %URI; #IMPLIED
- defer (defer) #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
- %attrs;
- >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
- %attrs;
- onload %Script; #IMPLIED
- onunload %Script; #IMPLIED
- >
-
-<!ELEMENT div %Flow;> <!-- generic language/style container -->
-<!ATTLIST div
- %attrs;
- >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
- %attrs;
- >
-
-<!--=================== Headings =========================================-->
-
-<!--
- There are six levels of headings from h1 (the most important)
- to h6 (the least important).
--->
-
-<!ELEMENT h1 %Inline;>
-<!ATTLIST h1
- %attrs;
- >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
- %attrs;
- >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
- %attrs;
- >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
- %attrs;
- >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
- %attrs;
- >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
- %attrs;
- >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
- %attrs;
- >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
- %attrs;
- >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
- %attrs;
- >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
- %attrs;
- >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
- %attrs;
- >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
- %attrs;
- >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
- %attrs;
- >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
- %attrs;
- >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
- %attrs;
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
- %attrs;
- cite %URI; #IMPLIED
- >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
- ins/del are allowed in block and inline content, but its
- inappropriate to include block content within an ins element
- occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
- %attrs;
- cite %URI; #IMPLIED
- datetime %Datetime; #IMPLIED
- >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
- %attrs;
- cite %URI; #IMPLIED
- datetime %Datetime; #IMPLIED
- >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
- %attrs;
- %focus;
- charset %Charset; #IMPLIED
- type %ContentType; #IMPLIED
- name NMTOKEN #IMPLIED
- href %URI; #IMPLIED
- hreflang %LanguageCode; #IMPLIED
- rel %LinkTypes; #IMPLIED
- rev %LinkTypes; #IMPLIED
- shape %Shape; "rect"
- coords %Coords; #IMPLIED
- >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
- %attrs;
- >
-
-<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
- %coreattrs;
- %events;
- lang %LanguageCode; #IMPLIED
- xml:lang %LanguageCode; #IMPLIED
- dir (ltr|rtl) #REQUIRED
- >
-
-<!ELEMENT br EMPTY> <!-- forced line break -->
-<!ATTLIST br
- %coreattrs;
- >
-
-<!ELEMENT em %Inline;> <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;> <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;> <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;> <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;> <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;> <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;> <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;> <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;> <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;> <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;> <!-- inlined quote -->
-<!ATTLIST q
- %attrs;
- cite %URI; #IMPLIED
- >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;> <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;> <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;> <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;> <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
- object is used to embed objects as part of HTML pages.
- param elements should precede other content. Parameters
- can also be expressed as attribute/value pairs on the
- object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
- %attrs;
- declare (declare) #IMPLIED
- classid %URI; #IMPLIED
- codebase %URI; #IMPLIED
- data %URI; #IMPLIED
- type %ContentType; #IMPLIED
- codetype %ContentType; #IMPLIED
- archive %UriList; #IMPLIED
- standby %Text; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- usemap %URI; #IMPLIED
- name NMTOKEN #IMPLIED
- tabindex %Number; #IMPLIED
- >
-
-<!--
- param is used to supply a named property value.
- In XML it would seem natural to follow RDF and support an
- abbreviated syntax where the param elements are replaced
- by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
- id ID #IMPLIED
- name CDATA #IMPLIED
- value CDATA #IMPLIED
- valuetype (data|ref|object) "data"
- type %ContentType; #IMPLIED
- >
-
-<!--=================== Images ===========================================-->
-
-<!--
- To avoid accessibility problems for people who aren't
- able to see the image, you should provide a text
- description using the alt and longdesc attributes.
- In addition, avoid the use of server-side image maps.
- Note that in this DTD there is no name attribute. That
- is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
- %attrs;
- src %URI; #REQUIRED
- alt %Text; #REQUIRED
- longdesc %URI; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- usemap %URI; #IMPLIED
- ismap (ismap) #IMPLIED
- >
-
-<!-- usemap points to a map element which may be in this document
- or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
- separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
- %i18n;
- %events;
- id ID #REQUIRED
- class CDATA #IMPLIED
- style %StyleSheet; #IMPLIED
- title %Text; #IMPLIED
- name NMTOKEN #IMPLIED
- >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
- %attrs;
- %focus;
- shape %Shape; "rect"
- coords %Coords; #IMPLIED
- href %URI; #IMPLIED
- nohref (nohref) #IMPLIED
- alt %Text; #REQUIRED
- >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
- %attrs;
- action %URI; #REQUIRED
- method (get|post) "get"
- enctype %ContentType; "application/x-www-form-urlencoded"
- onsubmit %Script; #IMPLIED
- onreset %Script; #IMPLIED
- accept %ContentTypes; #IMPLIED
- accept-charset %Charsets; #IMPLIED
- >
-
-<!--
- Each label must not contain more than ONE field
- Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
- %attrs;
- for IDREF #IMPLIED
- accesskey %Character; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED
- >
-
-<!ENTITY % InputType
- "(text | password | checkbox |
- radio | submit | reset |
- file | hidden | image | button)"
- >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY> <!-- form control -->
-<!ATTLIST input
- %attrs;
- %focus;
- type %InputType; "text"
- name CDATA #IMPLIED
- value CDATA #IMPLIED
- checked (checked) #IMPLIED
- disabled (disabled) #IMPLIED
- readonly (readonly) #IMPLIED
- size CDATA #IMPLIED
- maxlength %Number; #IMPLIED
- src %URI; #IMPLIED
- alt CDATA #IMPLIED
- usemap %URI; #IMPLIED
- onselect %Script; #IMPLIED
- onchange %Script; #IMPLIED
- accept %ContentTypes; #IMPLIED
- >
-
-<!ELEMENT select (optgroup|option)+> <!-- option selector -->
-<!ATTLIST select
- %attrs;
- name CDATA #IMPLIED
- size %Number; #IMPLIED
- multiple (multiple) #IMPLIED
- disabled (disabled) #IMPLIED
- tabindex %Number; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED
- onchange %Script; #IMPLIED
- >
-
-<!ELEMENT optgroup (option)+> <!-- option group -->
-<!ATTLIST optgroup
- %attrs;
- disabled (disabled) #IMPLIED
- label %Text; #REQUIRED
- >
-
-<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
-<!ATTLIST option
- %attrs;
- selected (selected) #IMPLIED
- disabled (disabled) #IMPLIED
- label %Text; #IMPLIED
- value CDATA #IMPLIED
- >
-
-<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
-<!ATTLIST textarea
- %attrs;
- %focus;
- name CDATA #IMPLIED
- rows %Number; #REQUIRED
- cols %Number; #REQUIRED
- disabled (disabled) #IMPLIED
- readonly (readonly) #IMPLIED
- onselect %Script; #IMPLIED
- onchange %Script; #IMPLIED
- >
-
-<!--
- The fieldset element is used to group form fields.
- Only one legend element should occur in the content
- and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
- %attrs;
- >
-
-<!ELEMENT legend %Inline;> <!-- fieldset label -->
-<!ATTLIST legend
- %attrs;
- accesskey %Character; #IMPLIED
- >
-
-<!--
- Content is %Flow; excluding a, form and form controls
--->
-<!ELEMENT button %button.content;> <!-- push button -->
-<!ATTLIST button
- %attrs;
- %focus;
- name CDATA #IMPLIED
- value CDATA #IMPLIED
- type (button|submit|reset) "submit"
- disabled (disabled) #IMPLIED
- >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
- "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-
-<!-- horizontal alignment attributes for cell contents
-
- char alignment char, e.g. char=':'
- charoff offset for alignment char
--->
-<!ENTITY % cellhalign
- "align (left|center|right|justify|char) #IMPLIED
- char %Character; #IMPLIED
- charoff %Length; #IMPLIED"
- >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
- "valign (top|middle|bottom|baseline) #IMPLIED"
- >
-
-<!ELEMENT table
- (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption %Inline;>
-<!ELEMENT thead (tr)+>
-<!ELEMENT tfoot (tr)+>
-<!ELEMENT tbody (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col EMPTY>
-<!ELEMENT tr (th|td)+>
-<!ELEMENT th %Flow;>
-<!ELEMENT td %Flow;>
-
-<!ATTLIST table
- %attrs;
- summary %Text; #IMPLIED
- width %Length; #IMPLIED
- border %Pixels; #IMPLIED
- frame %TFrame; #IMPLIED
- rules %TRules; #IMPLIED
- cellspacing %Length; #IMPLIED
- cellpadding %Length; #IMPLIED
- >
-
-<!ATTLIST caption
- %attrs;
- >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
- %attrs;
- span %Number; "1"
- width %MultiLength; #IMPLIED
- %cellhalign;
- %cellvalign;
- >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
- width=64 width in screen pixels
- width=0.5* relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
- %attrs;
- span %Number; "1"
- width %MultiLength; #IMPLIED
- %cellhalign;
- %cellvalign;
- >
-
-<!--
- Use thead to duplicate headers when breaking table
- across page boundaries, or for static headers when
- tbody sections are rendered in scrolling panel.
-
- Use tfoot to duplicate footers when breaking table
- across page boundaries, or for static footers when
- tbody sections are rendered in scrolling panel.
-
- Use multiple tbody sections when rules are needed
- between groups of table rows.
--->
-<!ATTLIST thead
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tfoot
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tbody
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tr
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
- %attrs;
- abbr %Text; #IMPLIED
- axis CDATA #IMPLIED
- headers IDREFS #IMPLIED
- scope %Scope; #IMPLIED
- rowspan %Number; "1"
- colspan %Number; "1"
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST td
- %attrs;
- abbr %Text; #IMPLIED
- axis CDATA #IMPLIED
- headers IDREFS #IMPLIED
- scope %Scope; #IMPLIED
- rowspan %Number; "1"
- colspan %Number; "1"
- %cellhalign;
- %cellvalign;
- >
-
--- a/Admin/website/dtd/xhtml1-transitional.dtd Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1201 +0,0 @@
-<!--
- Extensible HTML version 1.0 Transitional DTD
-
- This is the same as HTML 4 Transitional except for
- changes due to the differences between XML and SGML.
-
- Namespace = http://www.w3.org/1999/xhtml
-
- For further information, see: http://www.w3.org/TR/xhtml1
-
- Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
- All Rights Reserved.
-
- This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-
- $Revision$
- $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
- "-//W3C//ENTITIES Latin 1 for XHTML//EN"
- "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
- "-//W3C//ENTITIES Symbols for XHTML//EN"
- "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
- "-//W3C//ENTITIES Special for XHTML//EN"
- "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
- <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
- <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
- <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
- <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
- <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
- <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
- <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
- <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
- <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
- <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
- <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
- <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
- <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
- <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
- <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
- <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
- <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
- <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
- <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
- <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
- Black = #000000 Green = #008000
- Silver = #C0C0C0 Lime = #00FF00
- Gray = #808080 Olive = #808000
- White = #FFFFFF Yellow = #FFFF00
- Maroon = #800000 Navy = #000080
- Red = #FF0000 Blue = #0000FF
- Purple = #800080 Teal = #008080
- Fuchsia= #FF00FF Aqua = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
- id document-wide unique id
- class space separated list of classes
- style associated style info
- title advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id ID #IMPLIED
- class CDATA #IMPLIED
- style %StyleSheet; #IMPLIED
- title %Text; #IMPLIED"
- >
-
-<!-- internationalization attributes
- lang language code (backwards compatible)
- xml:lang language code (as per XML 1.0 spec)
- dir direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang %LanguageCode; #IMPLIED
- xml:lang %LanguageCode; #IMPLIED
- dir (ltr|rtl) #IMPLIED"
- >
-
-<!-- attributes for common UI events
- onclick a pointer button was clicked
- ondblclick a pointer button was double clicked
- onmousedown a pointer button was pressed down
- onmouseup a pointer button was released
- onmousemove a pointer was moved onto the element
- onmouseout a pointer was moved away from the element
- onkeypress a key was pressed and released
- onkeydown a key was pressed down
- onkeyup a key was released
--->
-<!ENTITY % events
- "onclick %Script; #IMPLIED
- ondblclick %Script; #IMPLIED
- onmousedown %Script; #IMPLIED
- onmouseup %Script; #IMPLIED
- onmouseover %Script; #IMPLIED
- onmousemove %Script; #IMPLIED
- onmouseout %Script; #IMPLIED
- onkeypress %Script; #IMPLIED
- onkeydown %Script; #IMPLIED
- onkeyup %Script; #IMPLIED"
- >
-
-<!-- attributes for elements that can get the focus
- accesskey accessibility key character
- tabindex position in tabbing order
- onfocus the element got the focus
- onblur the element lost the focus
--->
-<!ENTITY % focus
- "accesskey %Character; #IMPLIED
- tabindex %Number; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED"
- >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
- align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
- "object | applet | img | map | iframe">
-
-<!ENTITY % special.basic
- "br | span | bdo">
-
-<!ENTITY % special
- "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
- | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
- samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
-
-<!ENTITY % block
- "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
- "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
- font, or basefont -->
-
-<!ENTITY % pre.content
- "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
- %inline.forms; | %misc.inline;)*">
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
- "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
- table | br | span | bdo | object | applet | img | map |
- %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
- %i18n;
- id ID #IMPLIED
- xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
- >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
- title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
- ((title, %head.misc;, (base, %head.misc;)?) |
- (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
- %i18n;
- id ID #IMPLIED
- profile %URI; #IMPLIED
- >
-
-<!-- The title element is not considered part of the flow of text.
- It should be displayed, for example as the page header or
- window title. Exactly one title is required per document.
- -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title
- %i18n;
- id ID #IMPLIED
- >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
- id ID #IMPLIED
- href %URI; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
- %i18n;
- id ID #IMPLIED
- http-equiv CDATA #IMPLIED
- name CDATA #IMPLIED
- content CDATA #REQUIRED
- scheme CDATA #IMPLIED
- >
-
-<!--
- Relationship values can be used in principle:
-
- a) for document specific toolbars/menus when used
- with the link element in document head e.g.
- start, contents, previous, next, index, end, help
- b) to link to a separate style sheet (rel="stylesheet")
- c) to make a link to a script (rel="script")
- d) by stylesheets to control how collections of
- html nodes are rendered into printed documents
- e) to make a link to a printable version of this document
- e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
- %attrs;
- charset %Charset; #IMPLIED
- href %URI; #IMPLIED
- hreflang %LanguageCode; #IMPLIED
- type %ContentType; #IMPLIED
- rel %LinkTypes; #IMPLIED
- rev %LinkTypes; #IMPLIED
- media %MediaDesc; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
- %i18n;
- id ID #IMPLIED
- type %ContentType; #REQUIRED
- media %MediaDesc; #IMPLIED
- title %Text; #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
- id ID #IMPLIED
- charset %Charset; #IMPLIED
- type %ContentType; #REQUIRED
- language CDATA #IMPLIED
- src %URI; #IMPLIED
- defer (defer) #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
- %attrs;
- >
-
-<!--======================= Frames =======================================-->
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
- %coreattrs;
- longdesc %URI; #IMPLIED
- name NMTOKEN #IMPLIED
- src %URI; #IMPLIED
- frameborder (1|0) "1"
- marginwidth %Pixels; #IMPLIED
- marginheight %Pixels; #IMPLIED
- scrolling (yes|no|auto) "auto"
- align %ImgAlign; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes %Flow;>
-<!ATTLIST noframes
- %attrs;
- >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
- %attrs;
- onload %Script; #IMPLIED
- onunload %Script; #IMPLIED
- background %URI; #IMPLIED
- bgcolor %Color; #IMPLIED
- text %Color; #IMPLIED
- link %Color; #IMPLIED
- vlink %Color; #IMPLIED
- alink %Color; #IMPLIED
- >
-
-<!ELEMENT div %Flow;> <!-- generic language/style container -->
-<!ATTLIST div
- %attrs;
- %TextAlign;
- >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
- %attrs;
- %TextAlign;
- >
-
-<!--=================== Headings =========================================-->
-
-<!--
- There are six levels of headings from h1 (the most important)
- to h6 (the least important).
--->
-
-<!ELEMENT h1 %Inline;>
-<!ATTLIST h1
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
- %attrs;
- %TextAlign;
- >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
- %attrs;
- %TextAlign;
- >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
- %attrs;
- type %ULStyle; #IMPLIED
- compact (compact) #IMPLIED
- >
-
-<!-- Ordered list numbering style
-
- 1 arabic numbers 1, 2, 3, ...
- a lower alpha a, b, c, ...
- A upper alpha A, B, C, ...
- i lower roman i, ii, iii, ...
- I upper roman I, II, III, ...
-
- The style is applied to the sequence number which by default
- is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
- %attrs;
- type %OLStyle; #IMPLIED
- compact (compact) #IMPLIED
- start %Number; #IMPLIED
- >
-
-<!-- single column list (DEPRECATED) -->
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
- %attrs;
- compact (compact) #IMPLIED
- >
-
-<!-- multiple column list (DEPRECATED) -->
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
- %attrs;
- compact (compact) #IMPLIED
- >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
- %attrs;
- type %LIStyle; #IMPLIED
- value %Number; #IMPLIED
- >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
- %attrs;
- compact (compact) #IMPLIED
- >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
- %attrs;
- >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
- %attrs;
- >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
- %attrs;
- >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
- %attrs;
- align (left|center|right) #IMPLIED
- noshade (noshade) #IMPLIED
- size %Pixels; #IMPLIED
- width %Length; #IMPLIED
- >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding
- "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
- %attrs;
- width %Number; #IMPLIED
- xml:space (preserve) #FIXED 'preserve'
- >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
- %attrs;
- cite %URI; #IMPLIED
- >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
- %attrs;
- >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
- ins/del are allowed in block and inline content, but its
- inappropriate to include block content within an ins element
- occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
- %attrs;
- cite %URI; #IMPLIED
- datetime %Datetime; #IMPLIED
- >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
- %attrs;
- cite %URI; #IMPLIED
- datetime %Datetime; #IMPLIED
- >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
- %attrs;
- %focus;
- charset %Charset; #IMPLIED
- type %ContentType; #IMPLIED
- name NMTOKEN #IMPLIED
- href %URI; #IMPLIED
- hreflang %LanguageCode; #IMPLIED
- rel %LinkTypes; #IMPLIED
- rev %LinkTypes; #IMPLIED
- shape %Shape; "rect"
- coords %Coords; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
- %attrs;
- >
-
-<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
- %coreattrs;
- %events;
- lang %LanguageCode; #IMPLIED
- xml:lang %LanguageCode; #IMPLIED
- dir (ltr|rtl) #REQUIRED
- >
-
-<!ELEMENT br EMPTY> <!-- forced line break -->
-<!ATTLIST br
- %coreattrs;
- clear (left|all|right|none) "none"
- >
-
-<!ELEMENT em %Inline;> <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;> <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;> <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;> <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;> <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;> <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;> <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;> <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;> <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;> <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;> <!-- inlined quote -->
-<!ATTLIST q
- %attrs;
- cite %URI; #IMPLIED
- >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;> <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;> <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;> <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;> <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;> <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;> <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;> <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY> <!-- base font size -->
-<!ATTLIST basefont
- id ID #IMPLIED
- size CDATA #REQUIRED
- color %Color; #IMPLIED
- face CDATA #IMPLIED
- >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
- %coreattrs;
- %i18n;
- size CDATA #IMPLIED
- color %Color; #IMPLIED
- face CDATA #IMPLIED
- >
-
-<!--==================== Object ======================================-->
-<!--
- object is used to embed objects as part of HTML pages.
- param elements should precede other content. Parameters
- can also be expressed as attribute/value pairs on the
- object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
- %attrs;
- declare (declare) #IMPLIED
- classid %URI; #IMPLIED
- codebase %URI; #IMPLIED
- data %URI; #IMPLIED
- type %ContentType; #IMPLIED
- codetype %ContentType; #IMPLIED
- archive %UriList; #IMPLIED
- standby %Text; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- usemap %URI; #IMPLIED
- name NMTOKEN #IMPLIED
- tabindex %Number; #IMPLIED
- align %ImgAlign; #IMPLIED
- border %Pixels; #IMPLIED
- hspace %Pixels; #IMPLIED
- vspace %Pixels; #IMPLIED
- >
-
-<!--
- param is used to supply a named property value.
- In XML it would seem natural to follow RDF and support an
- abbreviated syntax where the param elements are replaced
- by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
- id ID #IMPLIED
- name CDATA #REQUIRED
- value CDATA #IMPLIED
- valuetype (data|ref|object) "data"
- type %ContentType; #IMPLIED
- >
-
-<!--=================== Java applet ==================================-->
-<!--
- One of code or object attributes must be present.
- Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
- %coreattrs;
- codebase %URI; #IMPLIED
- archive CDATA #IMPLIED
- code CDATA #IMPLIED
- object CDATA #IMPLIED
- alt %Text; #IMPLIED
- name NMTOKEN #IMPLIED
- width %Length; #REQUIRED
- height %Length; #REQUIRED
- align %ImgAlign; #IMPLIED
- hspace %Pixels; #IMPLIED
- vspace %Pixels; #IMPLIED
- >
-
-<!--=================== Images ===========================================-->
-
-<!--
- To avoid accessibility problems for people who aren't
- able to see the image, you should provide a text
- description using the alt and longdesc attributes.
- In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
- %attrs;
- src %URI; #REQUIRED
- alt %Text; #REQUIRED
- name NMTOKEN #IMPLIED
- longdesc %URI; #IMPLIED
- height %Length; #IMPLIED
- width %Length; #IMPLIED
- usemap %URI; #IMPLIED
- ismap (ismap) #IMPLIED
- align %ImgAlign; #IMPLIED
- border %Length; #IMPLIED
- hspace %Pixels; #IMPLIED
- vspace %Pixels; #IMPLIED
- >
-
-<!-- usemap points to a map element which may be in this document
- or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
- separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
- %i18n;
- %events;
- id ID #REQUIRED
- class CDATA #IMPLIED
- style %StyleSheet; #IMPLIED
- title %Text; #IMPLIED
- name CDATA #IMPLIED
- >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
- %attrs;
- %focus;
- shape %Shape; "rect"
- coords %Coords; #IMPLIED
- href %URI; #IMPLIED
- nohref (nohref) #IMPLIED
- alt %Text; #REQUIRED
- target %FrameTarget; #IMPLIED
- >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
- %attrs;
- action %URI; #REQUIRED
- method (get|post) "get"
- name NMTOKEN #IMPLIED
- enctype %ContentType; "application/x-www-form-urlencoded"
- onsubmit %Script; #IMPLIED
- onreset %Script; #IMPLIED
- accept %ContentTypes; #IMPLIED
- accept-charset %Charsets; #IMPLIED
- target %FrameTarget; #IMPLIED
- >
-
-<!--
- Each label must not contain more than ONE field
- Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
- %attrs;
- for IDREF #IMPLIED
- accesskey %Character; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED
- >
-
-<!ENTITY % InputType
- "(text | password | checkbox |
- radio | submit | reset |
- file | hidden | image | button)"
- >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY> <!-- form control -->
-<!ATTLIST input
- %attrs;
- %focus;
- type %InputType; "text"
- name CDATA #IMPLIED
- value CDATA #IMPLIED
- checked (checked) #IMPLIED
- disabled (disabled) #IMPLIED
- readonly (readonly) #IMPLIED
- size CDATA #IMPLIED
- maxlength %Number; #IMPLIED
- src %URI; #IMPLIED
- alt CDATA #IMPLIED
- usemap %URI; #IMPLIED
- onselect %Script; #IMPLIED
- onchange %Script; #IMPLIED
- accept %ContentTypes; #IMPLIED
- align %ImgAlign; #IMPLIED
- >
-
-<!ELEMENT select (optgroup|option)+> <!-- option selector -->
-<!ATTLIST select
- %attrs;
- name CDATA #IMPLIED
- size %Number; #IMPLIED
- multiple (multiple) #IMPLIED
- disabled (disabled) #IMPLIED
- tabindex %Number; #IMPLIED
- onfocus %Script; #IMPLIED
- onblur %Script; #IMPLIED
- onchange %Script; #IMPLIED
- >
-
-<!ELEMENT optgroup (option)+> <!-- option group -->
-<!ATTLIST optgroup
- %attrs;
- disabled (disabled) #IMPLIED
- label %Text; #REQUIRED
- >
-
-<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
-<!ATTLIST option
- %attrs;
- selected (selected) #IMPLIED
- disabled (disabled) #IMPLIED
- label %Text; #IMPLIED
- value CDATA #IMPLIED
- >
-
-<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
-<!ATTLIST textarea
- %attrs;
- %focus;
- name CDATA #IMPLIED
- rows %Number; #REQUIRED
- cols %Number; #REQUIRED
- disabled (disabled) #IMPLIED
- readonly (readonly) #IMPLIED
- onselect %Script; #IMPLIED
- onchange %Script; #IMPLIED
- >
-
-<!--
- The fieldset element is used to group form fields.
- Only one legend element should occur in the content
- and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
- %attrs;
- >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;> <!-- fieldset label -->
-<!ATTLIST legend
- %attrs;
- accesskey %Character; #IMPLIED
- align %LAlign; #IMPLIED
- >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
--->
-<!ELEMENT button %button.content;> <!-- push button -->
-<!ATTLIST button
- %attrs;
- %focus;
- name CDATA #IMPLIED
- value CDATA #IMPLIED
- type (button|submit|reset) "submit"
- disabled (disabled) #IMPLIED
- >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
- %coreattrs;
- %i18n;
- prompt %Text; #IMPLIED
- >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
- "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
- char alignment char, e.g. char=':'
- charoff offset for alignment char
--->
-<!ENTITY % cellhalign
- "align (left|center|right|justify|char) #IMPLIED
- char %Character; #IMPLIED
- charoff %Length; #IMPLIED"
- >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
- "valign (top|middle|bottom|baseline) #IMPLIED"
- >
-
-<!ELEMENT table
- (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption %Inline;>
-<!ELEMENT thead (tr)+>
-<!ELEMENT tfoot (tr)+>
-<!ELEMENT tbody (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col EMPTY>
-<!ELEMENT tr (th|td)+>
-<!ELEMENT th %Flow;>
-<!ELEMENT td %Flow;>
-
-<!ATTLIST table
- %attrs;
- summary %Text; #IMPLIED
- width %Length; #IMPLIED
- border %Pixels; #IMPLIED
- frame %TFrame; #IMPLIED
- rules %TRules; #IMPLIED
- cellspacing %Length; #IMPLIED
- cellpadding %Length; #IMPLIED
- align %TAlign; #IMPLIED
- bgcolor %Color; #IMPLIED
- >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
- %attrs;
- align %CAlign; #IMPLIED
- >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
- %attrs;
- span %Number; "1"
- width %MultiLength; #IMPLIED
- %cellhalign;
- %cellvalign;
- >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
- width=64 width in screen pixels
- width=0.5* relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
- %attrs;
- span %Number; "1"
- width %MultiLength; #IMPLIED
- %cellhalign;
- %cellvalign;
- >
-
-<!--
- Use thead to duplicate headers when breaking table
- across page boundaries, or for static headers when
- tbody sections are rendered in scrolling panel.
-
- Use tfoot to duplicate footers when breaking table
- across page boundaries, or for static footers when
- tbody sections are rendered in scrolling panel.
-
- Use multiple tbody sections when rules are needed
- between groups of table rows.
--->
-<!ATTLIST thead
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tfoot
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tbody
- %attrs;
- %cellhalign;
- %cellvalign;
- >
-
-<!ATTLIST tr
- %attrs;
- %cellhalign;
- %cellvalign;
- bgcolor %Color; #IMPLIED
- >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
- %attrs;
- abbr %Text; #IMPLIED
- axis CDATA #IMPLIED
- headers IDREFS #IMPLIED
- scope %Scope; #IMPLIED
- rowspan %Number; "1"
- colspan %Number; "1"
- %cellhalign;
- %cellvalign;
- nowrap (nowrap) #IMPLIED
- bgcolor %Color; #IMPLIED
- width %Length; #IMPLIED
- height %Length; #IMPLIED
- >
-
-<!ATTLIST td
- %attrs;
- abbr %Text; #IMPLIED
- axis CDATA #IMPLIED
- headers IDREFS #IMPLIED
- scope %Scope; #IMPLIED
- rowspan %Number; "1"
- colspan %Number; "1"
- %cellhalign;
- %cellvalign;
- nowrap (nowrap) #IMPLIED
- bgcolor %Color; #IMPLIED
- width %Length; #IMPLIED
- height %Length; #IMPLIED
- >
-
--- a/Admin/website/faq.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <title>Isabelle FAQ</title>
- <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
- <?include file="//include/header.include.html"?>
- <div class="hr"><hr/></div>
- <?include file="//include/navigation.include.html"?>
- <div class="hr"><hr/></div>
- <div id="content">
-
- <h2>General Questions</h2>
-
- <dl class="faq">
-
- <dt>What is Isabelle?</dt>
-
- <dd>Isabelle is a popular generic theorem proving environment developed
- at Cambridge University (<a href=
- "http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>) and TU Munich
- (<a href="http://www.in.tum.de/~nipkow/">Tobias Nipkow</a>). See the
- <a href="http://isabelle.in.tum.de/">Isabelle homepage</a> for more
- information.</dd>
-
- <dt>Where can I find documentation?</dt>
-
- <dd><a href="http://isabelle.in.tum.de/documentation.html">This way, please</a>.
- Also have a look at the <a href=
- "http://isabelle.in.tum.de/dist/library/">theory library</a>.</dd>
-
- <dt>Is it available for download?</dt>
-
- <dd>Yes, it is available from several mirror sites, e. g. from
- <a href="http://isabelle.in.tum.de">Munich</a>. It runs on common
- Unix systems (Linux, MacOS X, Solaris, etc.).</dd>
-
-</dl>
- <h2>Syntax</h2>
-
- <dl class="faq">
-
- <dt>There are lots of arrows in Isabelle/HOL. What's the difference between
- <tt>-></tt>, <tt>=></tt>, <tt>--></tt>, and <tt>==></tt>
- ?</dt>
-
- <dd>Isabelle uses the <tt>=></tt> arrow for the function type
- (contrary to most functional languages which use <tt>-></tt>). So
- <tt>a => b</tt> is the type of a function that takes an element of
- <tt>a</tt> as input and gives you an element of <tt>b</tt> as output. The
- long arrow <tt>--></tt> and <tt>==></tt> are object and meta level
- implication. Roughly speaking, the meta level implication should only be
- used when stating theorems where it separates the assumptions from the
- conclusion. Whenever you need an implication inside a HOL formula, use
- <code>--></code>.</dd>
-
- <dt>Where do I have to put those double quotes?</dt>
-
- <dd>Isabelle distinguishes between <em>inner</em> and <em>outer</em>
- syntax. The outer syntax comes from the Isabelle framework, the inner
- syntax is the one in between quotation marks and comes from the object
- logic (in this case HOL). With time the distinction between the two
- becomes obvious, but in the beginning the following rules of thumb may
- work: types should be inside quotation marks, formulas and lemmas should
- be inside quotation marks, rules and equations (e.g. for definitions)
- should be inside quotation marks, commands like <tt>lemma</tt>,
- <tt>consts</tt>, <tt>primrec</tt>, <tt>constdefs</tt>, <tt>apply</tt>,
- <tt>done</tt> are without quotation marks, as are the names of constants
- in constant definitions (<tt>consts</tt> and <tt>constdefs</tt>)</dd>
-
- <dt>What is <tt>"No such constant: _case_syntax"</tt> supposed to tell
- me?</dt>
-
- <dd>You get this message if you use a case construct on a datatype and
- have a typo in the names of the constructor patterns or if the order of
- the constructors in the case pattern is different from the order in which
- they where defined (in the datatype definition).</dd>
-
- <dt>Why doesn't Isabelle/HOL understand my equation?</dt>
-
- <dd>Isabelle's equality <tt>=</tt> binds relatively strongly, so an
- equation like <tt>a = b & c</tt> might not be what you intend.
- Isabelle parses it as <tt>(a = b) & c</tt>. If you want it the other
- way around, you must set explicit parentheses as in <tt>a = (b &
- c)</tt>. This also applies to e.g. <tt>primrec</tt> definitions (see
- below).</dd>
-
- <dt>What does it mean "not a proper equation"?</dt>
-
- <dd>Most commonly this is an instance of the question above. The
- <tt>primrec</tt> command (and others) expect equations as input, and
- since equality binds strongly in Isabelle/HOL, something like <tt>f x = b
- & c</tt> is not what you might expect it to be: Isabelle parses it as
- <tt>(f x = b) & c</tt> (which is indeed not a proper equation). To
- turn it into an equation you must set explicit parentheses: <tt>f x = (b
- & c)</tt>.</dd>
-
- <dt>What does it mean "<tt>Not a meta-equality (==)</tt>"?</dt>
-
- <dd>This usually occurs if you use <tt>=</tt> for <tt>constdefs</tt>. The
- <tt>constdefs</tt> and <tt>defs</tt> commands expect not equations, but
- meta equivalences. Just use the <tt>\<equiv></tt> or <tt>==</tt>
- signs instead of <tt>=</tt>.</dd>
-
-</dl>
- <h2>Proving</h2>
-
- <dl class="faq">
-
- <dt>What does "empty result sequence" mean?</dt>
-
- <dd>It means that the applied proof method (or tactic) was unsuccessful.
- It did not transform the goal in any way, or simply just failed to do
- anything. You must try another tactic (or give the one you used more
- hints or lemmas to work with)</dd>
-
- <dt>The Simplifier doesn't want to apply my rule, what's wrong?</dt>
-
- <dd>Most commonly this is a typing problem. The rule you want to apply
- may require a more special (or just plain different) type from what you
- have in the current goal. Use the ProofGeneral menu <tt>Isabelle/Isar
- -> Settings -> Show Types</tt> and the <tt>thm</tt> command on the
- rule you want to apply to find out if the types are what you expect them
- to be (also take a look at the types in your goal). <tt>Show Sorts</tt>,
- <tt>Show Constants</tt>, and <tt>Trace Simplifier</tt> in the same menu
- may also be helpful.</dd>
-
- <dt>If I do <tt>auto</tt>, it leaves me a goal <tt>False</tt>. Is my
- theorem wrong?</dt>
-
- <dd>Not necessarily. It just means that <tt>auto</tt> transformed the
- goal into something that is not provable any more. That could be due to
- <tt>auto</tt> doing something stupid, or e.g. due to some earlier step in
- the proof that lost important information. It is of course also possible
- that the goal was never provable in the first place.</dd>
-
- <dt>Why does <tt>lemma "1+1=2"</tt> fail?</dt>
-
- <dd>Because it is not necessarily true. Isabelle/HOL does not assume that 1
- and 2 are natural numbers. Try <tt>"(1::nat)+1=2"</tt> instead.</dd>
-
- <dt>Can Isabelle/HOL find counterexamples?</dt>
-
- <dd>
- <p>For arithmetic goals, <code>arith</code> finds counterexamples. For
- executable goals, <code>quickcheck</code> tries to find a
- counterexample. For goals of a more logical nature (including
- quantifiers, sets and inductive definitions) <code>refute</code>
- searches for a countermodel.</p>
-
- <p>Otherwise, negate the proposition and instantiate (some) variables
- with concrete values. You may also need additional assumptions about
- these values. For example, <tt>True & False ~= True | False</tt> is
- a counterexample of <tt>A & B = A | B</tt>, and <tt>A = ~B ==> A
- & B ~= A | B</tt> is another one. Sometimes Isabelle can help you
- to find the counterexample: just negate the proposition and do
- <tt>auto</tt> or <tt>simp</tt>. If lucky, you are left with the
- assumptions you need for the counterexample to work.</p>
- </dd>
-
-</dl>
- <h2>Interface</h2>
-
- <dl class="faq">
-
- <dt>X-Symbol doesn't seem to work. What can I do?</dt>
-
- <dd>The most common reason why X-Symbol doesn't work is: it's not
- switched on yet. Assuming you are using ProofGeneral and have installed
- the X-Symbol package, you still need to turn X-Symbol on in ProofGeneral:
- select the menu items <tt>Proof-General -> Options -> X-Symbol</tt>
- and (if you want to save the setting for future sessions) select
- <tt>Options -> Save Options</tt> in XEmacs.</dd>
-
- <dt>How do I input those X-Symbols anyway?</dt>
-
- <dd>There are lots of ways to input x-symbols. The one that always works
- is writing it out in plain text (e.g. for the 'and' symbol type
- <tt>\<and></tt>). For common symbols you can try to "paint them in
- ASCII" and if the xsymbol package recognizes them it will automatically
- convert them into their graphical representation. Examples:
- <tt>--></tt> is converted into the long single arrow, <tt>/\</tt> is
- converted into the 'and' symbol, the sequence <tt>=_</tt> into the
- equivalence sign, <tt><_</tt> into less-or-equal, <tt>[|</tt> into
- opening semantic brackets, and so on. For greek characters, the
- <code>rotate</code> command works well: to input α type
- <code>a</code> and then <code>C-.</code> (control and <code>.</code>).
- You can also display the grid-of-characters in the x-symbol menu to get
- an overview of the available graphical representations (not all of them
- already have a meaning in Isabelle, though).</dd>
-
-</dl>
- <h2>System</h2>
-
- <dl class="faq">
-
- <dt>I want to generate one of those flashy LaTeX documents. How?</dt>
-
- <dd>You will need to work with the <tt class="shellcmd">isatool</tt> command for this (in
- a Unix shell). The easiest way to get to a document is the following: use
- <tt class="shellcmd">isatool mkdir</tt> to set up a new directory. The command will also
- create a file called <tt class="shellcmd">IsaMakefile</tt> in the current directory. Put
- your theory file(s) into the new directory and edit the file
- <tt class="shellcmd">ROOT.ML</tt> in there (following the comments) to tell Isabelle which
- of the theories to load (and in which order). Go back to the parent
- directory (where the <tt class="shellcmd">IsaMakefile</tt> is) and type <tt class="shellcmd">isatool
- make</tt>. Isabelle should then process your theories and tell you where
- to find the finished document. For more information on generating
- documents see the Isabelle Tutorial, Chapter 4.</dd>
-
- <dt>I have a large formalization with many theories. Must I process all
- of them all of the time?</dt>
-
- <dd>No, you can tell Isabelle to build a so-called heap image. This heap
- image can contain your preloaded theories. To get one, set up a directory
- with a <tt class="shellcmd">ROOT.ML</tt> file (as for generating a document) and use the
- command <tt class="shellcmd">isatool usedir -b HOL MyImage</tt> in that directory to
- create an image <tt class="shellcmd">MyImage</tt> using the parent logic <tt class="shellcmd">HOL</tt>. You
- should then be able to invoke Isabelle with <tt class="shellcmd">Isabelle -l MyImage</tt>
- and have everything that is loaded in ROOT.ML instantly available.</dd>
-
- <dt>Can I run Isabelle on Windows?</dt>
-
- <dd>Not really. The Cygwin environment provides a Unixoid
- look-and-feel that is sufficient for very basic Isabelle
- functionality. See also <a
- href="installation_notes_cygwin.html">Installation notes for
- Cygwin/Windows.</a>
-
- To try out Isabelle it might be much easier to use a Linux boot
- CD, such as <a href="http://www.knoppix.org/">Knoppix</a>.</dd>
-
- </dl>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
Binary file Admin/website/img/favicon.ico has changed
Binary file Admin/website/img/isabelle.gif has changed
Binary file Admin/website/img/isabelle_logo.gif has changed
Binary file Admin/website/img/screenshot_isabelle_macos.gif has changed
Binary file Admin/website/img/screenshot_isabelle_pg.png has changed
Binary file Admin/website/img/tutorial_cover_big.gif has changed
Binary file Admin/website/img/tutorial_cover_small.gif has changed
Binary file Admin/website/img/univ_cambridge.gif has changed
Binary file Admin/website/img/univ_tum.gif has changed
Binary file Admin/website/img/world_map.gif has changed
Binary file Admin/website/img/world_map_large.gif has changed
--- a/Admin/website/include/documentationdist.include.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1" ?>
-<dummy:wrapper xmlns:dummy="http://nowhere.no">
-<h3>Learning Isabelle</h3>
-<ul>
- <li><a target='_blank' href='//dist/Isabelle/doc/tutorial.pdf'>Tutorial on Isabelle/HOL</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/isar-overview.pdf'>Tutorial on Isar</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/locales.pdf'>Tutorial on Locales</a></li>
-</ul>
-<h3>Reference Manuals</h3>
-<ul>
- <li><a target='_blank' href='//dist/Isabelle/doc/isar-ref.pdf'>The Isabelle/Isar Reference Manual</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/ref.pdf'>The Isabelle Reference Manual</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/system.pdf'>The Isabelle System Manual</a></li>
-</ul>
-<h3>Logics</h3>
-<ul>
- <li><a target='_blank' href='//dist/Isabelle/doc/logics.pdf'>Isabelle's Logics: overview and misc logics</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/logics-HOL.pdf'>Isabelle's Logics: HOL</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/logics-ZF.pdf'>Isabelle's Logics: FOL and ZF</a></li>
-</ul>
-<h3>Specific Topics</h3>
-<ul>
- <li><a target='_blank' href='//dist/Isabelle/doc/sugar.pdf'>LaTeX sugar for proof documents</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/axclass.pdf'>Tutorial on Axiomatic Type Classes</a></li>
- <li><a target='_blank' href='//dist/Isabelle/doc/ind-defs.pdf'>(Co)Inductive Definitions in ZF</a></li>
-</ul>
-</dummy:wrapper>
--- a/Admin/website/include/downloadtable.include.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE table PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<table class="download">
- <tr><td colspan="3" class="downloadheader">Isabelle</td></tr>
- <tr>
- <td>
- Sources and documentation
- </td>
- <?downloadCells target="//dist/Isabelle2005.tar.gz" title="Isabelle2005.tar.gz"?>
- </tr>
- <tr>
- <td>
- Documentation in PDF
- </td>
- <?downloadCells target="//dist/Isabelle2005_pdf.tar.gz" title="Isabelle2005_pdf.tar.gz"?>
- </tr>
- <tr>
- <td>
- Theory library in PDF and HTML
- </td>
- <?downloadCells target="//dist/Isabelle2005_library.tar.gz" title="Isabelle2005_library.tar.gz"?>
- </tr>
- <tr><td colspan="3" class="downloadheader">Proof General</td></tr>
- <tr>
- <td>
- Proof General
- </td>
- <?downloadCells target="//dist/contrib/ProofGeneral.tar.gz" title="ProofGeneral.tar.gz"?>
- </tr>
- <tr><td colspan="3" class="downloadheader">Poly/ML compiler and runtime system</td></tr>
- <tr>
- <td rowspan="3">
- Poly/ML
- </td>
- <?downloadCells target="//dist/contrib/polyml_x86-linux.tar.gz" title="polyml_x86-linux.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/contrib/polyml_sparc-solaris.tar.gz" title="polyml_sparc-solaris.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/contrib/polyml_ppc-darwin.tar.gz" title="polyml_ppc-darwin.tar.gz"?>
- </tr>
- <tr><td colspan="3" class="downloadheader">Precompiled logics</td></tr>
- <tr>
- <td rowspan="3">
- HOL
- </td>
- <?downloadCells target="//dist/HOL_x86-linux.tar.gz" title="HOL_x86-linux.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/HOL_sparc-solaris.tar.gz" title="HOL_sparc-solaris.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/HOL_ppc-darwin.tar.gz" title="HOL_ppc-darwin.tar.gz"?>
- </tr>
- <tr>
- <td rowspan="3">
- HOL-Complex
- </td>
- <?downloadCells target="//dist/HOL-Complex_x86-linux.tar.gz" title="HOL-Complex_x86-linux.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/HOL-Complex_sparc-solaris.tar.gz" title="HOL-Complex_sparc-solaris.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/HOL-Complex_ppc-darwin.tar.gz" title="HOL-Complex_ppc-darwin.tar.gz"?>
- </tr>
- <tr>
- <td rowspan="3">
- HOL4
- </td>
- <?downloadCells target="//dist/HOL4_x86-linux.tar.gz" title="HOL4_x86-linux.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/HOL4_sparc-solaris.tar.gz" title="HOL4_sparc-solaris.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/HOL4_ppc-darwin.tar.gz" title="HOL4_ppc-darwin.tar.gz"?>
- </tr>
- <tr>
- <td rowspan="3">
- ZF
- </td>
- <?downloadCells target="//dist/ZF_x86-linux.tar.gz" title="ZF_x86-linux.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/ZF_sparc-solaris.tar.gz" title="ZF_sparc-solaris.tar.gz"?>
- </tr>
- <tr class="rowspan">
- <?downloadCells target="//dist/ZF_ppc-darwin.tar.gz" title="ZF_ppc-darwin.tar.gz"?>
- </tr>
- <tr><td colspan="3" class="downloadheader">HOL4 proof terms</td></tr>
- <tr>
- <td>
- HOL4 proof terms
- </td>
- <?downloadCells target="//dist/contrib/HOL4-proofs.tar.gz" title="HOL4-proofs.tar.gz"?>
-</tr>
-</table>
--- a/Admin/website/include/footer.include.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="footer">
- <p>Last updated: <?modificationDate?></p>
-</div>
--- a/Admin/website/include/header.include.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="header">
- <h1><?title?></h1>
- <a id="isabelle_logo" href="http://isabelle.in.tum.de/index.html">
- <img src="//img/isabelle_logo.gif" width="114" height="100" alt="Isabelle home" />
- </a>
- <span class="headersep">·</span>
- <a id="univ_tum" target="_blank" href="http://www4.in.tum.de/proj/theoremprov/group.html">
- <img src="//img/univ_tum.gif" width="45" height="55" alt="Isabelle in Munich" />
- </a>
- <span class="headersep">·</span>
- <a id="univ_cambridge" target="_blank" href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html">
- <img src="//img/univ_cambridge.gif" width="169" height="55" alt="Isabelle in Cambridge" />
- </a>
-</div>
--- a/Admin/website/include/htmlheader.include.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<dummy:wrapper xmlns:dummy="http://nowhere.no">
- <?contentType?>
- <!-- the very base - here all elements are fixed to a certain base style -->
- <link rel="stylesheet" type="text/css" media="all" href="//css/aelfwine.css"/>
- <!-- basic isabelle site-specific styles -->
- <link rel="stylesheet" type="text/css" media="all" href="//css/isabelle_base.css"/>
- <!-- advanced sceen styles - they are imported such that they are ignored by old-fashioned browsers -->
- <style type="text/css" media="screen">
- @import url(<?relativeRoot href="css/isabelle_screen.css"?>);
- </style>
- <!-- advanced print styles -->
- <link rel="stylesheet" type="text/css" media="print" href="//css/isabelle_print.css"/>
- <link rel="icon" href="//img/favicon.ico" type="image/icon"/>
- <meta name="language" content="en"/>
- <meta name="robots" content="index follow"/>
- <meta name="author" content="Tobias Nipkow, Lawrence Paulson, Markus Wenzel, Gerwin Klein, Florian Haftmann, Tjark Weber" />
-</dummy:wrapper>
\ No newline at end of file
--- a/Admin/website/include/mirrorlist.include.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div class="mirrorlist">
- <h3>Site Mirrors:</h3>
- <ul>
- <li><?mirror prefix="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/" title="Cambridge (.uk)" ?></li>
- <li><?mirror prefix="http://isabelle.in.tum.de/" title="Munich (.de)" ?></li>
- <li><?mirror prefix="http://mirror.cse.unsw.edu.au/pub/isabelle/" title="Sydney (.au)" ?></li>
- </ul>
-</div>
--- a/Admin/website/include/navigation.include.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="navigation">
- <h2>Navigation</h2>
- <ul>
- <?navitem target="index.html" title="Home" ?>
- <?navitem target="overview.html" title="Overview" ?>
- <?navitem target="logics.html" title="Logics" ?>
- <?navitem target="installation.html" title="Installation" ?>
- <?navitem target="download.html" title="Download" ?>
- <?navitem target="documentation.html" title="Documentation" ?>
- <?navitem target="community.html" title="Community" ?>
- </ul>
- <div class="hr"><hr/></div>
- <ul>
- <li><?include file="//include/mirrorlist.include.html"?></li>
- </ul>
-</div>
--- a/Admin/website/index.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <title>Isabelle</title>
- <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
- <?include file="//include/header.include.html"?>
- <div class="hr"><hr/></div>
- <?include file="//include/navigation.include.html"?>
- <div class="hr"><hr/></div>
- <div id="content">
- <h2>What is Isabelle?</h2>
- <p>
- Isabelle is a popular generic theorem proving environment
- developed at Cambridge University (<a
- href="http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>)
- and TU Munich (<a href="http://www.in.tum.de/~nipkow/">Tobias
- Nipkow</a>). See the <a href="overview.html">Isabelle
- overview</a>.
- </p>
- <p>
- This site provides general information on Isabelle, more
- specific information is available from the local sites
- </p>
-
- <ul>
-
- <li><a href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html"><strong>Isabelle
- at Cambridge</strong></a></li>
-
- <li><a href="http://www4.in.tum.de/proj/theoremprov/group.html"><strong>Isabelle
- at Munich</strong></a></li>
-
- </ul>
-
- <p>
- See there for information on projects done with Isabelle,
- mailing list archives, research papers, the Isabelle
- bibliography, and Isabelle workshops and courses.
- </p>
-
- <h2>Now available: Isabelle2005</h2>
- <p>Some highlights:</p>
- <ul>
- <li>Interpretation of locale expressions in theories, locales, and proof contexts.</li>
- <li>Substantial library improvements (HOL, HOL-Complex, HOLCF).</li>
- <li>Proof tools for transitivity reasoning.</li>
- <li>General <code>find_theorems</code> command (by term patterns, as intro/elim/simp rules etc.).</li>
- <li>Commands for generating adhoc draft documents.</li>
- <li>Support for Unicode proof documents (UTF-8).</li>
- <li>Major internal reorganizations and performance improvements.</li>
- </ul>
-
-<p><a href="//dist/Isabelle/NEWS">[Cumulative NEWS]</a></p>
-
-<h2>Download</h2>
-
-<p>
-Isabelle is distributed for free under the BSD license. It includes
-source and binary packages and browsable documentation, see the <a
-href="installation.html">installation instructions</a>. You can also
-browse the <a href="//dist/library/index.html">Isabelle theory
-library</a> online.
-</p>
-
-<p>
-Use the mailing list <a href=
- "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
- <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to
-discuss problems and results.
- Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/installation.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//