--- 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//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>Installation instructions</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>General</h2>
-
- <p>
- Isabelle runs on common Unix platforms. We provide
- ready-to-use binary packages for Linux/x86, MaxOS X /
- Darwin, and Solaris. For other platforms, Isabelle logics
- need to be compiled separately (see also <a
- href="//dist/Isabelle/INSTALL">INSTALL</a>).
- </p>
-
- <p>
- A practically usable Isabelle system consists of the
- following components:
- </p>
-
- <ul>
- <li>a suitable ML environment for Standard ML</li>
- <li>the Isabelle system itself, including the desired object logics
- (e. g. HOL, HOL-Complex)</li>
- <li>the ProofGeneral user interface</li>
- </ul>
-
- <p>Optionally, theory graph browsing may be used if a Java JRE 1.1 or above
- is installed.</p>
-
- <p>For operating-system-specific instructions:</p>
-
- <ul>
- <li><a href="#install_linux">Linux (x86)</a></li>
- <li><a href="#install_darwin">MacOS X / Darwin (ppc)</a></li>
- <li><a href="#install_solaris">Solaris (sparc)</a></li>
- </ul>
-
- <h2 id="install_linux">Linux</h2>
-
- <p>Installation of Isabelle/HOL on common Linux/x86 platforms
- works as follows:</p>
-
- <ul>
- <li>For ProofGeneral, ensure that your system has a
- working installation of XEmacs 21, or Emacs 21 with
- mule support. The XEmacs 21.1.x and 21.4.x versions
- are known to work reasonably well, but the beta branch
- of XEmacs 21.5.x usually fails!</li>
-
- <li>Get the packages for <a
- href="http://www.polyml.org">Poly/ML</a>, <a
- href="http://proofgeneral.inf.ed.ac.uk/">ProofGeneral</a>
- and Isabelle – all of this is available from the
- Isabelle <a href="download.html">download</a> page.
- When you download ProofGeneral for the first time,
- please <a
- href="http://proofgeneral.inf.ed.ac.uk/register">register</a>.</li>
-
- <li>Likewise download the compiled images of the desired
- Isabelle object logics.</li>
-
- <li>Unpack the archives to an appropriate location, e. g.
- <tt class="shellcmd">/usr/local</tt>:
- <ul class="shellcmd">
- <li>tar -C /usr/local -xzf <?downloadLink target="//dist/Isabelle2005.tar.gz"?></li>
- <li>tar -C /usr/local -xzf <?downloadLink target="//dist/contrib/ProofGeneral.tar.gz"?></li>
- <li>tar -C /usr/local -xzf <?downloadLink target="//dist/contrib/polyml_x86-linux.tar.gz"?></li>
- <li>tar -C /usr/local -xzf <?downloadLink target="//dist/HOL_x86-linux.tar.gz"?></li>
- </ul>
- </li>
-
- <li>Under most circumstances, the default settings of
- Isabelle should be reasonable for invoking
- Isabelle/ProofGeneral without further ado:
- <ul class="shellcmd">
- <li>/usr/local/Isabelle/bin/Isabelle</li>
- </ul>
-
- Failure on this is typically a problem with unstable
- XEmacs versions; consider command line option
- <code>-p</code> to specify a different xemacs
- executable.
-
- The X-Symbol package is already included in Proof
- General, but needs to be enabled separately; use the
- <code>-x</code> command line option, or the
- <em>Options</em> menu.
- </li>
-
- <li>Isabelle may also be run without ProofGeneral, as a
- plain shell process as follows:
- <ul class="shellcmd">
- <li>/usr/local/Isabelle/bin/isabelle-process -I</li>
- </ul>
- Type CTRL-D to exit.
-
- If the above does not work at all, maybe you are
- suffering from a known problem of Poly/ML on certain
- Linux versions, see also <a
- href="http://www.polyml.org/linuxsegfault.html">Segmentation
- faults with Linux</a> on the Poly/ML site.
- </li>
- </ul>
-
- <h2 id="install_darwin">MaxOS X / Darwin</h2>
-
- <p>Ensure that your system provides the following:</p>
- <ul>
- <li>MacOS X 10.2.2 or higher</li>
-
- <li>XEmacs 21, or Emacs 21 with mule support (for
- ProofGeneral) – for further reference, see the
- <a href="installation_macos_emacs.html">MacOS X Emacs
- hints</a>. </li>
- </ul>
-
- <p>Then installation on MacOS X / Darwin is analogous to
- Linux, but note that some GNU executables are named
- differently.</p>
-
- <ul>
- <li>Unpack the archives to an appropriate location, e. g.
- <tt class="shellcmd">/usr/local</tt>:
- <ul class="shellcmd">
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/Isabelle2005.tar.gz"?></li>
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/ProofGeneral.tar.gz"?></li>
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/polyml_ppc-darwin.tar.gz"?></li>
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/HOL_ppc-darwin.tar.gz"?></li>
- </ul>
- </li>
-
- <li>Invoke Isabelle/ProofGeneral as follows:
- <ul class="shellcmd">
- <li>/usr/local/Isabelle/bin/Isabelle</li>
- </ul>
- </li>
-
- </ul>
-
- <h2 id="install_solaris">Solaris</h2>
-
- <p>Ensure that the following tools are available on your system:</p>
- <ul>
- <li>Perl 5.x</li>
- <li>GNU bash 2.x</li>
- <li>GNU tar 1.13 or higher</li>
- <li>GNU gzip 1.3 or higher</li>
- <li>XEmacs 21, or Emacs 21 with mule support (for ProofGeneral)</li>
- </ul>
-
- <p>The rest of the installation is analogous to Linux (see
- above).</p>
-
- <ul>
- <li>Unpack the archives to an appropriate location, e. g.
- <tt class="shellcmd">/usr/local</tt>:
- <ul class="shellcmd">
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/Isabelle2005.tar.gz"?></li>
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/ProofGeneral.tar.gz"?></li>
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/contrib/polyml_sparc-solaris.tar.gz"?></li>
- <li>gtar -C /usr/local -xzf <?downloadLink target="//dist/HOL_sparc-solaris.tar.gz"?></li>
- </ul>
- </li>
-
- <li>Invoke Isabelle/ProofGeneral as follows:
- <ul class="shellcmd">
- <li>/usr/local/Isabelle/bin/Isabelle</li>
- </ul>
- </li>
- </ul>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/installation_macos_emacs.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +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>MacOS X Emacs hints</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>MacOS X Emacs hints</h2>
-
- <p>Assuming you have an installation of Isabelle on your Mac,
- there are various possibilites for running ProofGeneral:</p>
-
- <ul>
- <li>You should also be able to launch <a href=
- "http://proofgeneral.inf.ed.ac.uk/">Proof General</a> by typing
- <tt class="shellcmd">Isabelle</tt> at the Unix command line. This will invoke the
- Apple-supplied version of Emacs in a terminal window, providing a primitive
- environment.</li>
- <li>Somewhat better is to run Proof General from within a version
- of Emacs ported as a native Mac OS X application, such as <a href=
- "http://home.att.ne.jp/alpha/z123/emacs-mac-e.html">MacEmacs JP</a> or
- <a href="http://mindlube.com/products/emacs/">mindlube's</a> or <a href=
- "http://www.cs.man.ac.uk/%7efranconi/mac-emacs/">Enhanced Carbon Emacs</a>.
- Visiting a theory file from Emacs will automatically launch Proof General
- provided <tt class="shellcmd">isabelle</tt> is on the search path. None of these options
- support the X-Symbol package, unfortunately.</li>
- <li>In order to get the full benefit of Proof General, you must install the X
- Window System (X11) and <a href="http://www.xemacs.org/">XEmacs</a> or
- <a href="http://www.gnu.org/software/emacs/emacs.html">GNU Emacs</a>.</li>
- <ul>
- <li>
- <a href="http://www.apple.com/macosx/x11/">apple's version of X11</a>
- is included with the Panther (MacOS X 10.3) installation discs, though it is
- not installed by default. The Command key serves as Meta, but it is
- reserved for standard Apple shortcuts such as C, V and X, so you must use
- Esc-C, Esc-V and Esc-X in Emacs or else deselect »Enable key equivalents«
- in the X11 preferences.</li>
- <li>The easiest way to install XEmacs or GNU Emacs is via the package manager
- <a href="http://fink.sourceforge.net/">Fink</a>. Install the Fink package
- <tt>xemacs-sumo-pkg</tt> to get the XEmacs libraries that Proof General needs
- to run. To install GNU Emacs, install the package <tt>emacs21</tt>. Fink can
- compile from sources, but this takes hours, so it is better to request binary
- installations.</li>
- <li>To use <a href="http://www.gnu.org/software/emacs/emacs.html">GNU
- Emacs</a> instead of <a href="http://www.xemacs.org/">XEmacs</a>, you must
- recompile Proof General and X-Symbol following the instructions <a href=
- "http://proofgeneral.inf.ed.ac.uk/FAQ">here</a>. Note that Proof General
- incorporates its own copy of X-Symbol.</li>
-
- </ul>
- </ul>
-
- <p>You may want to install this drag-and-drop <a href=
- "//misc/isabelle_droplet.dmg">Isabelle launcher</a>. It is a simple hack that
- invokes XEmacs on any files dropped on it.</p>
-
- <p>Here is a <a href=
- "//img/screenshot_isabelle_macos.gif">screenshot</a> showing Proof General running
- in GNU Emacs.</p>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/installation_notes_cygwin.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +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>Installation notes for Windows/Cygwin</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>Preconditions and restrictions</h2>
-
- <p>Please notice before you go ahead:</p>
-
- <ul>
- <li>The ML system these notes apply to is <a href=
- "http://www.smlnj.org/">Standard ML of New Jersey</a>, which
- provides explicit Cygwin support. Poly/ML is not covered
- here.</li>
-
- <li>It is assumed you have some experience with an Unix
- operating system (e.g. what a shell is for and how to use
- it).</li>
- </ul>
-
- <p>Any suggestions and improvements concerning this hints are welcomed!</p>
-
- <h2>Acknowlegements</h2>
-
- <p>Thanks to <a href=
- "http://cswww.essex.ac.uk/Research/FSS/projects/isawin/">Norbert
- Völker</a> and <a href=
- "http://www.abo.fi/~viorel.preoteasa/isabelle/">Viorel Preoteasa</a> whose
- efforts helped a lot to get Isabelle run this way.</p>
-
- <h2>Installing Cygwin</h2>
-
- <p>Cygwin is a POSIX emulation layer for Windows; it contains ports of a
- large collection of common Unix software (shells, perl, gcc, X11, latex,
- ImageMagick, …).</p>
-
- <p>To install it, get the installer from the <a href=
- "http://www.cygwin.com">Cygwin website</a> and run it. It will ask you which
- packages to install, and then downloads and installs them. Please make sure
- you install everything needed by Isabelle; it is hard to give a concise list
- of packages here since the bundling of Cygwin packages may vary over time,
- but installing the base packages, perl, make, xemacs and x-server should be a
- good choice for the beginning.</p>
-
- <p>By default, cygwin installs to <tt class="shellcmd">c:\cygwin</tt>; you may choose an
- arbitrary location, but it is recommended that it does not include any space
- or exotic characters. This directory will then become the root directory of
- the Cygwin filesystem tree, i.e. the Cygwin path <tt class="shellcmd">/opt/smlnj</tt> will be
- mapped to Windows path <tt class="shellcmd">c:\cygwin\opt\smlnj</tt>.</p>
-
- <p>After installation, open a Cygwin shell window (normally the installer
- makes a shortcut for you).</p>
-
- <h2>Getting and building SML/NJ</h2>
-
- <p>Now we are ready to get and build <a href=
- "http://www.smlnj.org/">SML/NJ</a>; before this, set the environment variable
- SMLNJ_CYGWIN_RUNTIME to 1:</p>
-
- <ul class="shellcmd">
- <li>export SMLNJ_CYGWIN_RUNTIME=1</li>
- </ul>
-
- <p>This setting will tell the build process that it should
- <em>not</em> attempt to build SML/NJ natively for Win32 but for Cygwin
- instead (see further <a href=
- "http://smlnj.cs.uchicago.edu/dist/working/110.53/CYGWININSTALL">CYGWININSTALL</a>).</p>
-
- <p>So far, this setup was tested using the working version 110.53 of SML/NJ
- from <a href=
- "http://smlnj.cs.uchicago.edu/dist/working/110.53/">http://smlnj.cs.uchicago.edu/dist/working/110.53/</a>.
- SML/NJ provides a nice installer enabling you to download and build it. Read
- <a href=
- "http://smlnj.cs.uchicago.edu/dist/working/110.53/INSTALL">INSTALL</a> to
- learn about the different possibilites to do this. The default packages
- should be sufficient.</p>
-
- <p>In the following, it is assumed that you install SML/NJ to Cygwin path
- <tt class="shellcmd">/opt/smlnj</tt>; if you choose an other location, some tweaking in the
- <a href="#config"><tt class="shellcmd">etc/settings</tt> file</a> may be neccessary later.</p>
-
- <p>Whenever SMLNJ is used, the SMLNJ_CYGWIN_RUNTIME environment variable must
- be set to 1 (later on a convenient mechanism to make this the default is
- proposed).</p>
-
- <h2>Installing Isabelle</h2>
-
- <p><a href="download.html">Download</a> the latest Isabelle and
- ProofGeneral release packages. Assuming that you are in the
- directory where you downloaded the files, install them into <tt
- class="shellcmd">/opt</tt> by typing into the bash shell:</p>
-
- <ul class="shellcmd">
- <li>tar -C /usr/opt -xvzf <?value key="distname"?>.tar.gz</li>
- <li>tar -C /usr/opt -xvzf ProofGeneral.tar.gz</li>
- </ul>
-
- <p>The location <tt class="shellcmd">/opt</tt> again is just a proposal; if you choose other
- locations, some tweaking in the <a href="#config"><tt class="shellcmd">etc/settings</tt>
- file</a> may be neccessary later.</p>
-
- <h2 id="config">Configuring Isabelle</h2>
-
- <p>Edit the file <tt class="shellcmd">/opt/Isabelle/etc/settings</tt>; first, uncomment the
- lines about SMLNJ. Also set the variable SMLNJ_CYGWIN_RUNTIME to 1, in order
- the cygwin version of SMLNJ is used. As mentioned above, the path variables
- for the ML system and ProofGeneral may need adjustions, depending on your
- different installation locations.</p>
-
- <p>Take heed of the setting of ISABELLE_HOME_USER; by default, this is
- <tt class="shellcmd">~/isabelle</tt>. To detect which Windows path this will be mapped to,
- type into the Cygwin bash shell:</p>
-
- <ul class="shellcmd">
- <li>cygpath --windows ~/isabelle</li>
- </ul>
-
- <p>If you don't like this location to be the isabelle home
- directory, consider setting of ISABELLE_HOME_USER to another value; use
- <tt class="shellcmd">cygpath --unix <winpath></tt> to detect which Cygwin path a given
- Windows path is mapped to.</p>
-
- <p>A typical change could look like this:</p>
-
- <blockquote>
- from<br />
- <tt># Standard ML of New Jersey 110 or later<br />
- #ML_SYSTEM=smlnj-110<br />
- #ML_HOME="$ISABELLE_HOME/../smlnj/bin"<br />
- #ML_OPTIONS="@SMLdebug=/dev/null"<br />
- #ML_PLATFORM=$(eval $("$ML_HOME/.arch-n-opsys" 2>/dev/null); echo
- "$HEAP_SUFFIX")<br /></tt>
- </blockquote>
-
- <blockquote>
- to<br />
- <tt># Standard ML of New Jersey 110 or later<br />
- SMLNJ_CYGWIN_RUNTIME=1<br />
- ML_SYSTEM=smlnj-110<br />
- ML_HOME="$ISABELLE_HOME/../smlnj/bin"<br />
- ML_OPTIONS="@SMLdebug=/dev/null"<br />
- ML_PLATFORM=$(eval $("$ML_HOME/.arch-n-opsys" 2>/dev/null); echo
- "$HEAP_SUFFIX")</tt>
- </blockquote>
-
- <h2>Building logics</h2>
-
- <p>Now we can compile some logics. Start the cygwin shell (if not still
- running) and type:</p>
-
- <ul class="shellcmd">
- <li>cd /opt/Isabelle</li>
- <li>build FOL</li>
- <li>build ZF</li>
- <li>build HOL</li>
- </ul>
-
- <p>The compilation process may take some time (depending on how fast the
- computer is). Before building a logic image the build program shows some
- variables and expects user input – just hit enter.</p>
-
- <h2>Running Isabelle with ProofGeneral</h2>
-
- <p>Now everything should be ready. To test, start the cygwin shell and
- type</p>
-
- <ul class="shellcmd">
- <li>startx &</li>
- </ul>
-
- <p>This will start the cygwin X server and an X shell window. In
- the X shell window, type</p>
-
- <ul class="shellcmd">
- <li>/opt/Isabelle/bin/Isabelle &</li>.
- </ul>
-
- <p>This will start the ProofGeneral interface for Isabelle. After a
- while an empty buffer <tt>Scratch.thy</tt> is created. You can turn on
- X-Symbol from the menu Proof-General, item Options.</p>
-
- <p>Load one of your favorite theories and test your Isabelle installation by
- proving something.</p>
-
- <p>To simplify starting ProofGeneral, consider writing a Windows command
- script, e. g.</p>
-
- <blockquote>
- <tt>@bash startx -geometry 30x4 -iconic -e Isabelle</tt>
- </blockquote>
-
- <p>and assigning a shortcut in the start menu to it.</p>
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/js/overlib.js Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1491 +0,0 @@
-//\/////
-//\ overLIB 4.21 - You may not remove or change this notice.
-//\ Copyright Erik Bosrup 1998-2004. All rights reserved.
-//\
-//\ Contributors are listed on the homepage.
-//\ This file might be old, always check for the latest version at:
-//\ http://www.bosrup.com/web/overlib/
-//\
-//\ Please read the license agreement (available through the link above)
-//\ before using overLIB. Direct any licensing questions to erik@bosrup.com.
-//\
-//\ Do not sell this as your own work or remove this copyright notice.
-//\ For full details on copying or changing this script please read the
-//\ license agreement at the link above. Please give credit on sites that
-//\ use overLIB and submit changes of the script so other people can use
-//\ them as well.
-// $Revision$ $Date$
-//\/////
-//\mini
-
-////////
-// PRE-INIT
-// Ignore these lines, configuration is below.
-////////
-var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.21', 1);
-var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4;
-var olHideForm=0; // parameter for hiding SELECT and ActiveX elements in IE5.5+
-var olHautoFlag = 0; // flags for over-riding VAUTO and HAUTO if corresponding
-var olVautoFlag = 0; // positioning commands are used on the command line
-var hookPts = new Array(), postParse = new Array(), cmdLine = new Array(), runTime = new Array();
-// for plugins
-registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');
-
-////////
-// DEFAULT CONFIGURATION
-// Settings you want everywhere are set here. All of this can also be
-// changed on your html page or through an overLIB call.
-////////
-if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#CCCCFF";
-if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#333399";
-if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000";
-if (typeof ol_capcolor=='undefined') var ol_capcolor="#FFFFFF";
-if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF";
-if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica";
-if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica";
-if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica";
-if (typeof ol_textsize=='undefined') var ol_textsize="1";
-if (typeof ol_captionsize=='undefined') var ol_captionsize="1";
-if (typeof ol_closesize=='undefined') var ol_closesize="1";
-if (typeof ol_width=='undefined') var ol_width="200";
-if (typeof ol_border=='undefined') var ol_border="1";
-if (typeof ol_cellpad=='undefined') var ol_cellpad=2;
-if (typeof ol_offsetx=='undefined') var ol_offsetx=10;
-if (typeof ol_offsety=='undefined') var ol_offsety=10;
-if (typeof ol_text=='undefined') var ol_text="Default Text";
-if (typeof ol_cap=='undefined') var ol_cap="";
-if (typeof ol_sticky=='undefined') var ol_sticky=0;
-if (typeof ol_background=='undefined') var ol_background="";
-if (typeof ol_close=='undefined') var ol_close="Close";
-if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT;
-if (typeof ol_status=='undefined') var ol_status="";
-if (typeof ol_autostatus=='undefined') var ol_autostatus=0;
-if (typeof ol_height=='undefined') var ol_height=-1;
-if (typeof ol_snapx=='undefined') var ol_snapx=0;
-if (typeof ol_snapy=='undefined') var ol_snapy=0;
-if (typeof ol_fixx=='undefined') var ol_fixx=-1;
-if (typeof ol_fixy=='undefined') var ol_fixy=-1;
-if (typeof ol_relx=='undefined') var ol_relx=null;
-if (typeof ol_rely=='undefined') var ol_rely=null;
-if (typeof ol_fgbackground=='undefined') var ol_fgbackground="";
-if (typeof ol_bgbackground=='undefined') var ol_bgbackground="";
-if (typeof ol_padxl=='undefined') var ol_padxl=1;
-if (typeof ol_padxr=='undefined') var ol_padxr=1;
-if (typeof ol_padyt=='undefined') var ol_padyt=1;
-if (typeof ol_padyb=='undefined') var ol_padyb=1;
-if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0;
-if (typeof ol_vpos=='undefined') var ol_vpos=BELOW;
-if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0;
-if (typeof ol_capicon=='undefined') var ol_capicon="";
-if (typeof ol_frame=='undefined') var ol_frame=self;
-if (typeof ol_timeout=='undefined') var ol_timeout=0;
-if (typeof ol_function=='undefined') var ol_function=null;
-if (typeof ol_delay=='undefined') var ol_delay=0;
-if (typeof ol_hauto=='undefined') var ol_hauto=0;
-if (typeof ol_vauto=='undefined') var ol_vauto=0;
-if (typeof ol_closeclick=='undefined') var ol_closeclick=0;
-if (typeof ol_wrap=='undefined') var ol_wrap=0;
-if (typeof ol_followmouse=='undefined') var ol_followmouse=1;
-if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0;
-if (typeof ol_closetitle=='undefined') var ol_closetitle='Close';
-if (typeof ol_compatmode=='undefined') var ol_compatmode=0;
-if (typeof ol_css=='undefined') var ol_css=CSSOFF;
-if (typeof ol_fgclass=='undefined') var ol_fgclass="";
-if (typeof ol_bgclass=='undefined') var ol_bgclass="";
-if (typeof ol_textfontclass=='undefined') var ol_textfontclass="";
-if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass="";
-if (typeof ol_closefontclass=='undefined') var ol_closefontclass="";
-
-////////
-// ARRAY CONFIGURATION
-////////
-
-// You can use these arrays to store popup text here instead of in the html.
-if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1");
-if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1");
-
-////////
-// END OF CONFIGURATION
-// Don't change anything below this line, all configuration is above.
-////////
-
-
-
-
-
-////////
-// INIT
-////////
-// Runtime variables init. Don't change for config!
-var o3_text="";
-var o3_cap="";
-var o3_sticky=0;
-var o3_background="";
-var o3_close="Close";
-var o3_hpos=RIGHT;
-var o3_offsetx=2;
-var o3_offsety=2;
-var o3_fgcolor="";
-var o3_bgcolor="";
-var o3_textcolor="";
-var o3_capcolor="";
-var o3_closecolor="";
-var o3_width=100;
-var o3_border=1;
-var o3_cellpad=2;
-var o3_status="";
-var o3_autostatus=0;
-var o3_height=-1;
-var o3_snapx=0;
-var o3_snapy=0;
-var o3_fixx=-1;
-var o3_fixy=-1;
-var o3_relx=null;
-var o3_rely=null;
-var o3_fgbackground="";
-var o3_bgbackground="";
-var o3_padxl=0;
-var o3_padxr=0;
-var o3_padyt=0;
-var o3_padyb=0;
-var o3_fullhtml=0;
-var o3_vpos=BELOW;
-var o3_aboveheight=0;
-var o3_capicon="";
-var o3_textfont="Verdana,Arial,Helvetica";
-var o3_captionfont="Verdana,Arial,Helvetica";
-var o3_closefont="Verdana,Arial,Helvetica";
-var o3_textsize="1";
-var o3_captionsize="1";
-var o3_closesize="1";
-var o3_frame=self;
-var o3_timeout=0;
-var o3_timerid=0;
-var o3_allowmove=0;
-var o3_function=null;
-var o3_delay=0;
-var o3_delayid=0;
-var o3_hauto=0;
-var o3_vauto=0;
-var o3_closeclick=0;
-var o3_wrap=0;
-var o3_followmouse=1;
-var o3_mouseoff=0;
-var o3_closetitle='';
-var o3_compatmode=0;
-var o3_css=CSSOFF;
-var o3_fgclass="";
-var o3_bgclass="";
-var o3_textfontclass="";
-var o3_captionfontclass="";
-var o3_closefontclass="";
-
-// Display state variables
-var o3_x = 0;
-var o3_y = 0;
-var o3_showingsticky = 0;
-var o3_removecounter = 0;
-
-// Our layer
-var over = null;
-var fnRef, hoveringSwitch = false;
-var olHideDelay;
-
-// Decide browser version
-var isMac = (navigator.userAgent.indexOf("Mac") != -1);
-var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode); // Opera 7
-var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4);
-var olNs6 = (document.getElementById) ? true : false;
-var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent));
-var olIe4 = (document.all) ? true : false;
-var olIe5 = false;
-var olIe55 = false; // Added additional variable to identify IE5.5+
-var docRoot = 'document.body';
-
-// Resize fix for NS4.x to keep track of layer
-if (olNs4) {
- var oW = window.innerWidth;
- var oH = window.innerHeight;
- window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); }
-}
-
-// Microsoft Stupidity Check(tm).
-if (olIe4) {
- var agent = navigator.userAgent;
- if (/MSIE/.test(agent)) {
- var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);
- if (versNum >= 5){
- olIe5=true;
- olIe55=(versNum>=5.5&&!olOp) ? true : false;
- if (olNs6) olNs6=false;
- }
- }
- if (olNs6) olIe4 = false;
-}
-
-// Check for compatability mode.
-if (document.compatMode && document.compatMode == 'CSS1Compat') {
- docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot);
-}
-
-// Add window onload handlers to indicate when all modules have been loaded
-// For Netscape 6+ and Mozilla, uses addEventListener method on the window object
-// For IE it uses the attachEvent method of the window object and for Netscape 4.x
-// it sets the window.onload handler to the OLonload_handler function for Bubbling
-if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false);
-else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler);
-
-var capExtent;
-
-////////
-// PUBLIC FUNCTIONS
-////////
-
-// overlib(arg0,...,argN)
-// Loads parameters into global runtime variables.
-function overlib() {
- if (!olLoaded || isExclusive(overlib.arguments)) return true;
- if (olCheckMouseCapture) olMouseCapture();
- if (over) {
- over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over;
- cClick();
- }
-
- // Load defaults to runtime.
- olHideDelay=0;
- o3_text=ol_text;
- o3_cap=ol_cap;
- o3_sticky=ol_sticky;
- o3_background=ol_background;
- o3_close=ol_close;
- o3_hpos=ol_hpos;
- o3_offsetx=ol_offsetx;
- o3_offsety=ol_offsety;
- o3_fgcolor=ol_fgcolor;
- o3_bgcolor=ol_bgcolor;
- o3_textcolor=ol_textcolor;
- o3_capcolor=ol_capcolor;
- o3_closecolor=ol_closecolor;
- o3_width=ol_width;
- o3_border=ol_border;
- o3_cellpad=ol_cellpad;
- o3_status=ol_status;
- o3_autostatus=ol_autostatus;
- o3_height=ol_height;
- o3_snapx=ol_snapx;
- o3_snapy=ol_snapy;
- o3_fixx=ol_fixx;
- o3_fixy=ol_fixy;
- o3_relx=ol_relx;
- o3_rely=ol_rely;
- o3_fgbackground=ol_fgbackground;
- o3_bgbackground=ol_bgbackground;
- o3_padxl=ol_padxl;
- o3_padxr=ol_padxr;
- o3_padyt=ol_padyt;
- o3_padyb=ol_padyb;
- o3_fullhtml=ol_fullhtml;
- o3_vpos=ol_vpos;
- o3_aboveheight=ol_aboveheight;
- o3_capicon=ol_capicon;
- o3_textfont=ol_textfont;
- o3_captionfont=ol_captionfont;
- o3_closefont=ol_closefont;
- o3_textsize=ol_textsize;
- o3_captionsize=ol_captionsize;
- o3_closesize=ol_closesize;
- o3_timeout=ol_timeout;
- o3_function=ol_function;
- o3_delay=ol_delay;
- o3_hauto=ol_hauto;
- o3_vauto=ol_vauto;
- o3_closeclick=ol_closeclick;
- o3_wrap=ol_wrap;
- o3_followmouse=ol_followmouse;
- o3_mouseoff=ol_mouseoff;
- o3_closetitle=ol_closetitle;
- o3_css=ol_css;
- o3_compatmode=ol_compatmode;
- o3_fgclass=ol_fgclass;
- o3_bgclass=ol_bgclass;
- o3_textfontclass=ol_textfontclass;
- o3_captionfontclass=ol_captionfontclass;
- o3_closefontclass=ol_closefontclass;
-
- setRunTimeVariables();
-
- fnRef = '';
-
- // Special for frame support, over must be reset...
- o3_frame = ol_frame;
-
- if(!(over=createDivContainer())) return false;
-
- parseTokens('o3_', overlib.arguments);
- if (!postParseChecks()) return false;
-
- if (o3_delay == 0) {
- return runHook("olMain", FREPLACE);
- } else {
- o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay);
- return false;
- }
-}
-
-// Clears popups if appropriate
-function nd(time) {
- if (olLoaded && !isExclusive()) {
- hideDelay(time); // delay popup close if time specified
-
- if (o3_removecounter >= 1) { o3_showingsticky = 0 };
-
- if (o3_showingsticky == 0) {
- o3_allowmove = 0;
- if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over);
- } else {
- o3_removecounter++;
- }
- }
-
- return true;
-}
-
-// The Close onMouseOver function for stickies
-function cClick() {
- if (olLoaded) {
- runHook("hideObject", FREPLACE, over);
- o3_showingsticky = 0;
- }
- return false;
-}
-
-// Method for setting page specific defaults.
-function overlib_pagedefaults() {
- parseTokens('ol_', overlib_pagedefaults.arguments);
-}
-
-
-////////
-// OVERLIB MAIN FUNCTION
-////////
-
-// This function decides what it is we want to display and how we want it done.
-function olMain() {
- var layerhtml, styleType;
- runHook("olMain", FBEFORE);
-
- if (o3_background!="" || o3_fullhtml) {
- // Use background instead of box.
- layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml);
- } else {
- // They want a popup box.
- styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass");
-
- // Prepare popup background
- if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\"";
- if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground);
-
- // Prepare popup colors
- if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor);
- if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor);
-
- // Prepare popup height
- if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height);
- else o3_height = "";
-
- // Decide which kinda box.
- if (o3_cap=="") {
- // Plain
- layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text);
- } else {
- // With caption
- if (o3_sticky) {
- // Show close text
- layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close);
- } else {
- // No close text
- layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, "");
- }
- }
- }
-
- // We want it to stick!
- if (o3_sticky) {
- if (o3_timerid > 0) {
- clearTimeout(o3_timerid);
- o3_timerid = 0;
- }
- o3_showingsticky = 1;
- o3_removecounter = 0;
- }
-
- // Created a separate routine to generate the popup to make it easier
- // to implement a plugin capability
- if (!runHook("createPopup", FREPLACE, layerhtml)) return false;
-
- // Prepare status bar
- if (o3_autostatus > 0) {
- o3_status = o3_text;
- if (o3_autostatus > 1) o3_status = o3_cap;
- }
-
- // When placing the layer the first time, even stickies may be moved.
- o3_allowmove = 0;
-
- // Initiate a timer for timeout
- if (o3_timeout > 0) {
- if (o3_timerid > 0) clearTimeout(o3_timerid);
- o3_timerid = setTimeout("cClick()", o3_timeout);
- }
-
- // Show layer
- runHook("disp", FREPLACE, o3_status);
- runHook("olMain", FAFTER);
-
- return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != '');
-}
-
-////////
-// LAYER GENERATION FUNCTIONS
-////////
-// These functions just handle popup content with tags that should adhere to the W3C standards specification.
-
-// Makes simple table without caption
-function ol_content_simple(text) {
- var cpIsMultiple = /,/.test(o3_cellpad);
- var txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
-
- set_background("");
- return txt;
-}
-
-// Makes table with caption and optional close link
-function ol_content_caption(text,title,close) {
- var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad);
- var closing, closeevent;
-
- closing = "";
- closeevent = "onmouseover";
- if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick";
- if (o3_capicon != "") {
- nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"';
- if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';
- o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />';
- }
-
- if (close != "")
- closing = '<td '+(!o3_compatmode && o3_closefontclass ? 'class="'+o3_closefontclass : 'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode && o3_closefontclass) ? ' class="' + o3_closefontclass + '" ' : ' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+'</a></td>';
- txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass ? ' class="'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : '<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>';
-
- set_background("");
- return txt;
-}
-
-// Sets the background picture,padding and lots more. :)
-function ol_content_background(text,picture,hasfullhtml) {
- if (hasfullhtml) {
- txt=text;
- } else {
- txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" class="'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';
- }
-
- set_background(picture);
- return txt;
-}
-
-// Loads a picture into the div.
-function set_background(pic) {
- if (pic == "") {
- if (olNs4) {
- over.background.src = null;
- } else if (over.style) {
- over.style.backgroundImage = "none";
- }
- } else {
- if (olNs4) {
- over.background.src = pic;
- } else if (over.style) {
- over.style.width=o3_width + 'px';
- over.style.backgroundImage = "url("+pic+")";
- }
- }
-}
-
-////////
-// HANDLING FUNCTIONS
-////////
-var olShowId=-1;
-
-// Displays the popup
-function disp(statustext) {
- runHook("disp", FBEFORE);
-
- if (o3_allowmove == 0) {
- runHook("placeLayer", FREPLACE);
- (olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over);
- o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1;
- }
-
- runHook("disp", FAFTER);
-
- if (statustext != "") self.status = statustext;
-}
-
-// Creates the actual popup structure
-function createPopup(lyrContent){
- runHook("createPopup", FBEFORE);
-
- if (o3_wrap) {
- var wd,ww,theObj = (olNs4 ? over : over.style);
- theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
- layerWrite(lyrContent);
- wd = (olNs4 ? over.clip.width : over.offsetWidth);
- if (wd > (ww=windowWidth())) {
- lyrContent=lyrContent.replace(/\ /g, ' ');
- o3_width=ww;
- o3_wrap=0;
- }
- }
-
- layerWrite(lyrContent);
-
- // Have to set o3_width for placeLayer() routine if o3_wrap is turned on
- if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth);
-
- runHook("createPopup", FAFTER, lyrContent);
-
- return true;
-}
-
-// Decides where we want the popup.
-function placeLayer() {
- var placeX, placeY, widthFix = 0;
-
- // HORIZONTAL PLACEMENT, re-arranged to work in Safari
- if (o3_frame.innerWidth) widthFix=18;
- iwidth = windowWidth();
-
- // Horizontal scroll offset
- winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset;
-
- placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
-
- // VERTICAL PLACEMENT, re-arranged to work in Safari
- if (o3_frame.innerHeight) {
- iheight=o3_frame.innerHeight;
- } else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) {
- iheight=eval('o3_frame.'+docRoot+'.clientHeight');
- }
-
- // Vertical scroll offset
- scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset;
- placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
-
- // Actually move the object.
- repositionTo(over, placeX, placeY);
-}
-
-// Moves the layer
-function olMouseMove(e) {
- var e = (e) ? e : event;
-
- if (e.pageX) {
- o3_x = e.pageX;
- o3_y = e.pageY;
- } else if (e.clientX) {
- o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');
- o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');
- }
-
- if (o3_allowmove == 1) runHook("placeLayer", FREPLACE);
-
- // MouseOut handler
- if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) {
- (olHideDelay ? hideDelay(olHideDelay) : cClick());
- hoveringSwitch = !hoveringSwitch;
- }
-}
-
-// Fake function for 3.0 users.
-function no_overlib() { return ver3fix; }
-
-// Capture the mouse and chain other scripts.
-function olMouseCapture() {
- capExtent = document;
- var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove;
- var re = /function[ ]*(\w*)\(/;
-
- wMv = (!olIe4 && window.onmousemove);
- if (document.onmousemove || wMv) {
- if (wMv) capExtent = window;
- f = capExtent.onmousemove.toString();
- fN = f.match(re);
- if (fN == null) {
- str = f+'(e); ';
- } else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) {
- if (!olOp && wMv) {
- l = f.indexOf('{')+1;
- k = f.lastIndexOf('}');
- sS = f.substring(l,k);
- if ((l = sS.indexOf('(')) != -1) {
- sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');
- if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null;
- else str = sS + '(e);';
- }
- }
- if (!str) {
- olCheckMouseCapture = false;
- return;
- }
- } else {
- if (fN[1]) str = fN[1]+'(e); ';
- else {
- l = f.indexOf('{')+1;
- k = f.lastIndexOf('}');
- str = f.substring(l,k) + '\n';
- }
- }
- str += 'olMouseMove(e); ';
- mseHandler = new Function('e', str);
- }
-
- capExtent.onmousemove = mseHandler;
- if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE);
-}
-
-////////
-// PARSING FUNCTIONS
-////////
-
-// Does the actual command parsing.
-function parseTokens(pf, ar) {
- // What the next argument is expected to be.
- var v, i, mode=-1, par = (pf != 'ol_');
- var fnMark = (par && !ar.length ? 1 : 0);
-
- for (i = 0; i < ar.length; i++) {
- if (mode < 0) {
- // Arg is maintext,unless its a number between pmStart and pmUpper
- // then its a command.
- if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) {
- fnMark = (par ? 1 : 0);
- i--; // backup one so that the next block can parse it
- } else {
- switch(pf) {
- case 'ol_':
- ol_text = ar[i].toString();
- break;
- default:
- o3_text=ar[i].toString();
- }
- }
- mode = 0;
- } else {
- // Note: NS4 doesn't like switch cases with vars.
- if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; }
- if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; }
- if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; }
- if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; }
- if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; }
- if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; }
- if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; }
- if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; }
- if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; }
- if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; }
- if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; }
- if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; }
- if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; }
- if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; }
- if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; }
- if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; }
- if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; }
- if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; }
- if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; }
- if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; }
- if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; }
- if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again.
- if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; }
- if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; }
- if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; }
- if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; }
- if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; }
- if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; }
- if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; }
- if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; }
- if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; }
- if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; }
- if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; }
- if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; }
- if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; }
- if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; }
- if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; }
- if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; }
- if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; }
- if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; }
- if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; }
- if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; }
- if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; }
- if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i]; opt_FUNCTION(v); } continue; }
- if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; }
- if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; }
- if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; }
- if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; }
- if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; }
- if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; }
- if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; }
- if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; }
- if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; }
- if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; }
- if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; }
- if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; }
- if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; }
- if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; }
- if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; }
- i = parseCmdLine(pf, i, ar);
- }
- }
-
- if (fnMark && o3_function) o3_text = o3_function();
-
- if ((pf == 'o3_') && o3_wrap) {
- o3_width = 0;
-
- var tReg=/<.*\n*>/ig;
- if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, ' ');
- if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, ' ');
- }
- if ((pf == 'o3_') && o3_sticky) {
- if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close;
- if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' ');
- }
-}
-
-
-////////
-// LAYER FUNCTIONS
-////////
-
-// Writes to a layer
-function layerWrite(txt) {
- txt += "\n";
- if (olNs4) {
- var lyr = o3_frame.document.layers['overDiv'].document
- lyr.write(txt)
- lyr.close()
- } else if (typeof over.innerHTML != 'undefined') {
- if (olIe5 && isMac) over.innerHTML = '';
- over.innerHTML = txt;
- } else {
- range = o3_frame.document.createRange();
- range.setStartAfter(over);
- domfrag = range.createContextualFragment(txt);
-
- while (over.hasChildNodes()) {
- over.removeChild(over.lastChild);
- }
-
- over.appendChild(domfrag);
- }
-}
-
-// Make an object visible
-function showObject(obj) {
- runHook("showObject", FBEFORE);
-
- var theObj=(olNs4 ? obj : obj.style);
- theObj.visibility = 'visible';
-
- runHook("showObject", FAFTER);
-}
-
-// Hides an object
-function hideObject(obj) {
- runHook("hideObject", FBEFORE);
-
- var theObj=(olNs4 ? obj : obj.style);
- if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; }
- theObj.visibility = 'hidden';
- theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
-
- if (o3_timerid > 0) clearTimeout(o3_timerid);
- if (o3_delayid > 0) clearTimeout(o3_delayid);
-
- o3_timerid = 0;
- o3_delayid = 0;
- self.status = "";
-
- if (obj.onmouseout||obj.onmouseover) {
- if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER);
- obj.onmouseout = obj.onmouseover = null;
- }
-
- runHook("hideObject", FAFTER);
-}
-
-// Move a layer
-function repositionTo(obj, xL, yL) {
- var theObj=(olNs4 ? obj : obj.style);
- theObj.left = xL + (!olNs4 ? 'px' : 0);
- theObj.top = yL + (!olNs4 ? 'px' : 0);
-}
-
-// Check position of cursor relative to overDiv DIVision; mouseOut function
-function cursorOff() {
- var left = parseInt(over.style.left);
- var top = parseInt(over.style.top);
- var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width));
- var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight);
-
- if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true;
-
- return false;
-}
-
-
-////////
-// COMMAND FUNCTIONS
-////////
-
-// Calls callme or the default function.
-function opt_FUNCTION(callme) {
- o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function'));
-
- return 0;
-}
-
-// Handle hovering
-function opt_NOCLOSE(unused) {
- if (!unused) o3_close = "";
-
- if (olNs4) {
- over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER);
- over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } }
- over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); }
- } else {
- over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } }
- }
-
- return 0;
-}
-
-// Function to scan command line arguments for multiples
-function opt_MULTIPLEARGS(i, args, parameter) {
- var k=i, re, pV, str='';
-
- for(k=i; k<args.length; k++) {
- if(typeof args[k] == 'number' && args[k]>pmStart) break;
- str += args[k] + ',';
- }
- if (str) str = str.substring(0,--str.length);
-
- k--; // reduce by one so the for loop this is in works correctly
- pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str;
- eval(parameter + '="' + pV + '"');
-
- return k;
-}
-
-// Remove in texts when done.
-function nbspCleanup() {
- if (o3_wrap) {
- o3_text = o3_text.replace(/\ /g, ' ');
- o3_cap = o3_cap.replace(/\ /g, ' ');
- }
-}
-
-// Escape embedded single quotes in text strings
-function escSglQuote(str) {
- return str.toString().replace(/'/g,"\\'");
-}
-
-// Onload handler for window onload event
-function OLonLoad_handler(e) {
- var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i;
-
- if(!olLoaded) olLoaded=1;
-
- // Remove it for Gecko based browsers
- if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false);
- else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick()
- window.detachEvent("onload",OLonLoad_handler);
- var fN = document.body.getAttribute('onload');
- if (fN) {
- fN=fN.toString().match(re);
- if (fN && fN.length) {
- for (i=0; i<fN.length; i++) {
- if (/anonymous/.test(fN[i])) continue;
- while((l=fN[i].search(/\)[;\s]+/)) != -1) {
- fn=fN[i].substring(0,l+1);
- fN[i] = fN[i].substring(l+2);
- if (olre.test(fn)) eval(fn);
- }
- }
- }
- }
- }
-}
-
-// Wraps strings in Layer Generation Functions with the correct tags
-// endWrap true(if end tag) or false if start tag
-// fontSizeStr - font size string such as '1' or '10px'
-// whichString is being wrapped -- 'text', 'caption', or 'close'
-function wrapStr(endWrap,fontSizeStr,whichString) {
- var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(fontSizeStr);
- fontSizeStr = (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr;
- if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : '</div>') : '</font>';
- else {
- fontStr='o3_'+whichString+'font';
- fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color';
- return (hasDims&&!olNs4) ? (isClose ? '<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">' : '<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">') : '<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7 ? '7' : fontSizeStr)+'">';
- }
-}
-
-// Quotes Multi word font names; needed for CSS Standards adherence in font-family
-function quoteMultiNameFonts(theFont) {
- var v, pM=theFont.split(',');
- for (var i=0; i<pM.length; i++) {
- v=pM[i];
- v=v.replace(/^\s+/,'').replace(/\s+$/,'');
- if(/\s/.test(v) && !/['"]/.test(v)) {
- v="\'"+v+"\'";
- pM[i]=v;
- }
- }
- return pM.join();
-}
-
-// dummy function which will be overridden
-function isExclusive(args) {
- return false;
-}
-
-// Sets cellpadding style string value
-function setCellPadStr(parameter) {
- var Str='', j=0, ary = new Array(), top, bottom, left, right;
-
- Str+='padding: ';
- ary=parameter.replace(/\s+/g,'').split(',');
-
- switch(ary.length) {
- case 2:
- top=bottom=ary[j];
- left=right=ary[++j];
- break;
- case 3:
- top=ary[j];
- left=right=ary[++j];
- bottom=ary[++j];
- break;
- case 4:
- top=ary[j];
- right=ary[++j];
- bottom=ary[++j];
- left=ary[++j];
- break;
- }
-
- Str+= ((ary.length==1) ? ary[0] + 'px;' : top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px;');
-
- return Str;
-}
-
-// function will delay close by time milliseconds
-function hideDelay(time) {
- if (time&&!o3_delay) {
- if (o3_timerid > 0) clearTimeout(o3_timerid);
-
- o3_timerid=setTimeout("cClick()",(o3_timeout=time));
- }
-}
-
-// Was originally in the placeLayer() routine; separated out for future ease
-function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) {
- var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount;
- var parsedWidth = parseInt(o3_width);
-
- if (o3_fixx > -1 || o3_relx != null) {
- // Fixed position
- placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx);
- } else {
- // If HAUTO, decide what to use.
- if (o3_hauto == 1) {
- if ((o3_x - winoffset) > (iwidth / 2)) {
- o3_hpos = LEFT;
- } else {
- o3_hpos = RIGHT;
- }
- }
-
- // From mouse
- if (o3_hpos == CENTER) { // Center
- placeX = o3_x+o3_offsetx-(parsedWidth/2);
-
- if (placeX < winoffset) placeX = winoffset;
- }
-
- if (o3_hpos == RIGHT) { // Right
- placeX = o3_x+o3_offsetx;
-
- if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) {
- placeX = iwidth+winoffset - parsedWidth - widthFix;
- if (placeX < 0) placeX = 0;
- }
- }
- if (o3_hpos == LEFT) { // Left
- placeX = o3_x-o3_offsetx-parsedWidth;
- if (placeX < winoffset) placeX = winoffset;
- }
-
- // Snapping!
- if (o3_snapx > 1) {
- var snapping = placeX % o3_snapx;
-
- if (o3_hpos == LEFT) {
- placeX = placeX - (o3_snapx+snapping);
- } else {
- // CENTER and RIGHT
- placeX = placeX+(o3_snapx - snapping);
- }
-
- if (placeX < winoffset) placeX = winoffset;
- }
- }
-
- return placeX;
-}
-
-// was originally in the placeLayer() routine; separated out for future ease
-function verticalPlacement(browserHeight,verticalScrollAmount) {
- var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount;
- var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight));
-
- if (o3_fixy > -1 || o3_rely != null) {
- // Fixed position
- placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy);
- } else {
- // If VAUTO, decide what to use.
- if (o3_vauto == 1) {
- if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) {
- o3_vpos = ABOVE;
- } else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) {
- o3_vpos = BELOW;
- }
- }
-
- // From mouse
- if (o3_vpos == ABOVE) {
- if (o3_aboveheight == 0) o3_aboveheight = parsedHeight;
-
- placeY = o3_y - (o3_aboveheight+o3_offsety);
- if (placeY < scrolloffset) placeY = scrolloffset;
- } else {
- // BELOW
- placeY = o3_y+o3_offsety;
- }
-
- // Snapping!
- if (o3_snapy > 1) {
- var snapping = placeY % o3_snapy;
-
- if (o3_aboveheight > 0 && o3_vpos == ABOVE) {
- placeY = placeY - (o3_snapy+snapping);
- } else {
- placeY = placeY+(o3_snapy - snapping);
- }
-
- if (placeY < scrolloffset) placeY = scrolloffset;
- }
- }
-
- return placeY;
-}
-
-// checks positioning flags
-function checkPositionFlags() {
- if (olHautoFlag) olHautoFlag = o3_hauto=0;
- if (olVautoFlag) olVautoFlag = o3_vauto=0;
- return true;
-}
-
-// get Browser window width
-function windowWidth() {
- var w;
- if (o3_frame.innerWidth) w=o3_frame.innerWidth;
- else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth'))
- w=eval('o3_frame.'+docRoot+'.clientWidth');
- return w;
-}
-
-// create the div container for popup content if it doesn't exist
-function createDivContainer(id,frm,zValue) {
- id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000);
- var objRef, divContainer = layerReference(id);
-
- if (divContainer == null) {
- if (olNs4) {
- divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm);
- objRef = divContainer;
- } else {
- var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]);
- if (olIe4&&!document.getElementById) {
- body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');
- divContainer=layerReference(id);
- } else {
- divContainer = frm.document.createElement("DIV");
- divContainer.id = id;
- body.appendChild(divContainer);
- }
- objRef = divContainer.style;
- }
-
- objRef.position = 'absolute';
- objRef.visibility = 'hidden';
- objRef.zIndex = zValue;
- if (olIe4&&!olOp) objRef.left = objRef.top = '0px';
- else objRef.left = objRef.top = -10000 + (!olNs4 ? 'px' : 0);
- }
-
- return divContainer;
-}
-
-// get reference to a layer with ID=id
-function layerReference(id) {
- return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id)));
-}
-////////
-// UTILITY FUNCTIONS
-////////
-
-// Checks if something is a function.
-function isFunction(fnRef) {
- var rtn = true;
-
- if (typeof fnRef == 'object') {
- for (var i = 0; i < fnRef.length; i++) {
- if (typeof fnRef[i]=='function') continue;
- rtn = false;
- break;
- }
- } else if (typeof fnRef != 'function') {
- rtn = false;
- }
-
- return rtn;
-}
-
-// Converts an array into an argument string for use in eval.
-function argToString(array, strtInd, argName) {
- var jS = strtInd, aS = '', ar = array;
- argName=(argName ? argName : 'ar');
-
- if (ar.length > jS) {
- for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], ';
- aS = aS.substring(0, aS.length-2);
- }
-
- return aS;
-}
-
-// Places a hook in the correct position in a hook point.
-function reOrder(hookPt, fnRef, order) {
- var newPt = new Array(), match, i, j;
-
- if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt;
-
- if (typeof order=='function') {
- if (typeof fnRef=='object') {
- newPt = newPt.concat(fnRef);
- } else {
- newPt[newPt.length++]=fnRef;
- }
-
- for (i = 0; i < hookPt.length; i++) {
- match = false;
- if (typeof fnRef == 'function' && hookPt[i] == fnRef) {
- continue;
- } else {
- for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) {
- match = true;
- break;
- }
- }
- if (!match) newPt[newPt.length++] = hookPt[i];
- }
-
- newPt[newPt.length++] = order;
-
- } else if (typeof order == 'object') {
- if (typeof fnRef == 'object') {
- newPt = newPt.concat(fnRef);
- } else {
- newPt[newPt.length++] = fnRef;
- }
-
- for (j = 0; j < hookPt.length; j++) {
- match = false;
- if (typeof fnRef == 'function' && hookPt[j] == fnRef) {
- continue;
- } else {
- for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) {
- match = true;
- break;
- }
- }
- if (!match) newPt[newPt.length++]=hookPt[j];
- }
-
- for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i];
- newPt.length = 0;
-
- for (j = 0; j < hookPt.length; j++) {
- match = false;
- for (i = 0; i < order.length; i++) {
- if (hookPt[j] == order[i]) {
- match = true;
- break;
- }
- }
- if (!match) newPt[newPt.length++] = hookPt[j];
- }
- newPt = newPt.concat(order);
- }
-
- hookPt = newPt;
-
- return hookPt;
-}
-
-////////
-// PLUGIN ACTIVATION FUNCTIONS
-////////
-
-// Runs plugin functions to set runtime variables.
-function setRunTimeVariables(){
- if (typeof runTime != 'undefined' && runTime.length) {
- for (var k = 0; k < runTime.length; k++) {
- runTime[k]();
- }
- }
-}
-
-// Runs plugin functions to parse commands.
-function parseCmdLine(pf, i, args) {
- if (typeof cmdLine != 'undefined' && cmdLine.length) {
- for (var k = 0; k < cmdLine.length; k++) {
- var j = cmdLine[k](pf, i, args);
- if (j >- 1) {
- i = j;
- break;
- }
- }
- }
-
- return i;
-}
-
-// Runs plugin functions to do things after parse.
-function postParseChecks(pf,args){
- if (typeof postParse != 'undefined' && postParse.length) {
- for (var k = 0; k < postParse.length; k++) {
- if (postParse[k](pf,args)) continue;
- return false; // end now since have an error
- }
- }
- return true;
-}
-
-
-////////
-// PLUGIN REGISTRATION FUNCTIONS
-////////
-
-// Registers commands and creates constants.
-function registerCommands(cmdStr) {
- if (typeof cmdStr!='string') return;
-
- var pM = cmdStr.split(',');
- pms = pms.concat(pM);
-
- for (var i = 0; i< pM.length; i++) {
- eval(pM[i].toUpperCase()+'='+pmCount++);
- }
-}
-
-// Registers no-parameter commands
-function registerNoParameterCommands(cmdStr) {
- if (!cmdStr && typeof cmdStr != 'string') return;
- pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr;
-}
-
-// Register a function to hook at a certain point.
-function registerHook(fnHookTo, fnRef, hookType, optPm) {
- var hookPt, last = typeof optPm;
-
- if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return;
- if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference();
-
- hookPt = hookPts[fnHookTo];
-
- if (hookType != null) {
- if (hookType == FREPLACE) {
- hookPt.ovload = fnRef; // replace normal overlib routine
- if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef;
-
- } else if (hookType == FBEFORE || hookType == FAFTER) {
- var hookPt=(hookType == 1 ? hookPt.before : hookPt.after);
-
- if (typeof fnRef == 'object') {
- hookPt = hookPt.concat(fnRef);
- } else {
- hookPt[hookPt.length++] = fnRef;
- }
-
- if (optPm) hookPt = reOrder(hookPt, fnRef, optPm);
-
- } else if (hookType == FALTERNATE) {
- if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef;
- } else if (hookType == FCHAIN) {
- hookPt = hookPt.chain;
- if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions
- else hookPt[hookPt.length++]=fnRef;
- }
-
- return;
- }
-}
-
-// Register a function that will set runtime variables.
-function registerRunTimeFunction(fn) {
- if (isFunction(fn)) {
- if (typeof fn == 'object') {
- runTime = runTime.concat(fn);
- } else {
- runTime[runTime.length++] = fn;
- }
- }
-}
-
-// Register a function that will handle command parsing.
-function registerCmdLineFunction(fn){
- if (isFunction(fn)) {
- if (typeof fn == 'object') {
- cmdLine = cmdLine.concat(fn);
- } else {
- cmdLine[cmdLine.length++] = fn;
- }
- }
-}
-
-// Register a function that does things after command parsing.
-function registerPostParseFunction(fn){
- if (isFunction(fn)) {
- if (typeof fn == 'object') {
- postParse = postParse.concat(fn);
- } else {
- postParse[postParse.length++] = fn;
- }
- }
-}
-
-////////
-// PLUGIN REGISTRATION FUNCTIONS
-////////
-
-// Runs any hooks registered.
-function runHook(fnHookTo, hookType) {
- var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments;
-
- if (hookType == FREPLACE) {
- arS = argToString(ar, 2);
-
- if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')');
- else rtnVal = eval('l('+arS+')');
-
- } else if (hookType == FBEFORE || hookType == FAFTER) {
- if (typeof l != 'undefined') {
- l=(hookType == 1 ? l.before : l.after);
-
- if (l.length) {
- arS = argToString(ar, 2);
- for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')');
- }
- }
- } else if (hookType == FALTERNATE) {
- optPm = ar[2];
- arS = argToString(ar, 3);
-
- if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') {
- rtnVal = eval(fnHookTo+'('+arS+')');
- } else {
- rtnVal = eval('l('+arS+')');
- }
- } else if (hookType == FCHAIN) {
- arS=argToString(ar,2);
- l=l.chain;
-
- for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break;
- }
-
- return rtnVal;
-}
-
-////////
-// OBJECT CONSTRUCTORS
-////////
-
-// Object for handling hooks.
-function FunctionReference() {
- this.ovload = null;
- this.before = new Array();
- this.after = new Array();
- this.alt = new Array();
- this.chain = new Array();
-}
-
-// Object for simple access to the overLIB version used.
-// Examples: simpleversion:351 major:3 minor:5 revision:1
-function Info(version, prerelease) {
- this.version = version;
- this.prerelease = prerelease;
-
- this.simpleversion = Math.round(this.version*100);
- this.major = parseInt(this.simpleversion / 100);
- this.minor = parseInt(this.simpleversion / 10) - this.major * 10;
- this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10;
- this.meets = meets;
-}
-
-// checks for Core Version required
-function meets(reqdVersion) {
- return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion));
-}
-
-
-////////
-// STANDARD REGISTRATIONS
-////////
-registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF);
-registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF);
-registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF);
-registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS);
-registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS);
-registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS);
-registerPostParseFunction(checkPositionFlags);
-registerHook("hideObject", nbspCleanup, FAFTER);
-registerHook("horizontalPlacement", horizontalPlacement, FCHAIN);
-registerHook("verticalPlacement", verticalPlacement, FCHAIN);
-if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1;
-registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
-///////
-// ESTABLISH MOUSECAPTURING
-///////
-
-// Capture events, alt. diffuses the overlib function.
-var olCheckMouseCapture=true;
-if ((olNs4 || olNs6 || olIe4)) {
- olMouseCapture();
-} else {
- overlib = no_overlib;
- nd = no_overlib;
- ver3fix = true;
-}
--- a/Admin/website/js/world_map_data.js Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-var world_data = [];
-var i = 0;
-
-world_data[i++] = ['Xiaoqi Ma', CAPTION, 'University of Reading', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.cl.cam.ac.uk/users/lcp/\'>Larry Paulson</a>, <a href=\'http://www.cl.cam.ac.uk/~tjr22\'>Tom Ridge</a> et al.', CAPTION, 'University of Cambridge', STICKY, NOCLOSE];
-world_data[i++] = ['Sara Kalvala', CAPTION, 'University of Warwick', STICKY, NOCLOSE];
-world_data[i++] = ['Paqui Lucio', CAPTION, 'Basque Country University', STICKY, NOCLOSE];
-world_data[i++] = ['Pierre Castéran', CAPTION, 'Université Bordeaux', STICKY, NOCLOSE];
-world_data[i++] = ['Achim D. Brucker, Burkhart Wolff: <b><a href=\'http://www.brucker.ch/projects/hol-ocl/index.en.html\'>HOL-OCL</a></b>, <b><a href=\'http://www.brucker.ch/projects/hol-testgen/index.en.html\'>HOL-TestGen</a></b>, <b><a href=\'http://abacus.informatik.uni-freiburg.de/holz/index.html\'>HOL-Z</a></b>, <b><a href=\'http://www.brucker.ch/projects/isamorph/\'>IsaMorph</a></b><br>Jürgen Doser: <b><a href=\'http://www.infsec.ethz.ch/people/doserj/mds\'>Model-Driven Security with Secure UML</a></b><br>Christoph Sprenger: <b><a href=\'http://www.zisc.ethz.ch/research/securityprotocolproofs\'>Cryptographically Faithful Proofs of Security Protocols</a></b>', CAPTION, 'ETH Zürich', STICKY, NOCLOSE];
-world_data[i++] = ['Walther Neuper: <b>ISAC</b>', CAPTION, 'Graz University of Technology', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www4.informatik.tu-muenchen.de/~nipkow/\'>Tobias Nipkow</a> et al.', CAPTION, 'Technische Universität München', STICKY, NOCLOSE];
-world_data[i++] = ['Harald Hiss', CAPTION, 'Albert-Ludwigs-Universität Freiburg', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.loria.fr/~merz/\'>Stephan Merz</a> et al.', CAPTION, 'LORIA', STICKY, NOCLOSE];
-world_data[i++] = ['Peter Lammich', CAPTION, 'Institut für Informatik, Universität Münster', STICKY, NOCLOSE];
-world_data[i++] = ['Till Mossakowski: <b>Heterogeneous Tool Set</b>', CAPTION, 'University of Bremen, DFKI Lab Bremen', STICKY, NOCLOSE];
-world_data[i++] = ['Jørgen Villadsen', CAPTION, 'Technical University of Denmark', STICKY, NOCLOSE];
-world_data[i++] = ['See the zoomed in section of the map for details.', CAPTION, 'Europe', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://users.rsise.anu.edu.au/~jeremy/\'>Jeremy Dawson</a>, <a href="http://users.rsise.anu.edu.au/~jiameng/">Jia Meng</a>, <a href=\'http://users.rsise.anu.edu.au/~michaeln/\'>Michael Norrish</a>', CAPTION, 'ANU, NICTA', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.cse.unsw.edu.au/~kleing/\'>Gerwin Klein</a> et al.: <b>L4.verified</b>', CAPTION, 'NICTA, UNSW', STICKY, NOCLOSE];
-world_data[i++] = ['Kamal Kant Gupta', CAPTION, 'IIT Guwahati', STICKY, NOCLOSE];
-world_data[i++] = ['Yasuhiko Minamide', CAPTION, 'University of Tsukuba', STICKY, NOCLOSE];
-world_data[i++] = ['Gang Yu: <b>Formalizing Lambda-Calculus and Virtual Machine with Non-Local Control Operators</b>', CAPTION, 'Institute of Software, Beijing', STICKY, NOCLOSE];
-world_data[i++] = ['John Matthews', CAPTION, 'Galois Connections', STICKY, NOCLOSE];
-world_data[i++] = ['Slawomir Kolodynski: <b>IsarMathLib</b>', CAPTION, 'Newark, CA', STICKY, NOCLOSE];
-world_data[i++] = ['Robert Lamar', CAPTION, 'Stetson University', STICKY, NOCLOSE];
-world_data[i++] = ['<a href=\'http://www.andrew.cmu.edu/~avigad/isabelle/\'>Jeremy Avigad</a>, <a href=\'http://www.cs.cmu.edu/~seanmcl/research\'>Sean McLaughlin</a>', CAPTION, 'Carnegie Mellon University', STICKY, NOCLOSE];
-world_data[i++] = ['Elsa L. Gunter', CAPTION, 'University of Illinois, Urbana-Champaign', STICKY, NOCLOSE];
-world_data[i++] = ['Sidi O Ehmety', CAPTION, 'University of Nouakchott', STICKY, NOCLOSE];
-world_data[i++] = ['Wolfgang Paul et al.', CAPTION, 'Saarland University', STICKY, NOCLOSE];
-world_data[i++] = ['Daniel Wasserrab: <b>CoreC++</b>', CAPTION, 'Universität Passau', STICKY, NOCLOSE];
-world_data[i++] = ['David Aspinall: <b><a href=\'http://proofgeneral.inf.ed.ac.uk/\'>Proof General</a></b><br>Lucas Dixon: <b><a href=\'http://isaplanner.sourceforge.net/\'>IsaPlanner</a></b><br>Jacques Fleuriot: <b>HOL-Hyperreal</b>', CAPTION, 'University of Edinburgh, School of Informatics', STICKY, NOCLOSE];
-world_data[i++] = ['J. Dalinger, L. Petrova', CAPTION, 'Khabarovsk State University of Technology', STICKY, NOCLOSE];
-world_data[i++] = ['Viktor Kuncak: <b>Jahob</b>', CAPTION, 'Massachusetts Institute of Technology', STICKY, NOCLOSE];
-world_data[i++] = ['Dave MacQueen', CAPTION, 'University of Chicago', STICKY, NOCLOSE];
-world_data[i++] = ['Jesús Aranzay', CAPTION, 'Universidad de La Rioja', STICKY, NOCLOSE];
-
-function world_click(i) {
- var entry = world_data[i];
- return overlib(entry[0], entry[1], entry[2], entry[3], entry[4]);
-}
--- a/Admin/website/logics.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +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>Logics</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>Isabelle's Logics</h2>
- <p>Isabelle can be viewed from two main
- perspectives. On the one hand it may serve as a generic framework for rapid
- prototyping of deductive systems. On the other hand, major existing logics
- like <a href="#isabelle_hol"><em>Isabelle/HOL</em></a>
- provide a theorem proving environment
- ready to use for sizable applications.</p>
-
- <p>The Isabelle distribution includes a large body of
- object logics and other examples (see the <a href=
- "//dist/library/index.html">Isabelle theory library</a>).</p>
-
- <dl>
- <dt id="isabelle_hol"><a
- href="//dist/library/HOL/index.html">Isabelle/HOL</a></dt>
- <dd>is a version of classical higher-order logic resembling
- that of the <a
- href="http://www.cl.cam.ac.uk/Research/HVG/HOL/">HOL
- System</a>.</dd>
-
- <dt><a href=
- "//dist/library/HOLCF/index.html">Isabelle/HOLCF</a></dt>
- <dd>adds Scott's Logic for Computable Functions (domain theory) to
- HOL.</dd>
-
- <dt><a href="//dist/library/FOL/index.html">Isabelle/FOL</a></dt>
- <dd>provides basic classical and intuitionistic first-order logic. It is
- polymorphic.</dd>
-
- <dt><a href="//dist/library/ZF/index.html">Isabelle/ZF</a></dt>
- <dd>offers a formulation of Zermelo-Fraenkel set theory on top of FOL.</dd>
- </dl>
-
- <p><em>Isabelle/HOL</em> is currently the best developed object logic, including an
- extensive library of (concrete) mathematics, and various packages for
- advanced definitional concepts like (co-)inductive sets and types,
- well-founded recursion etc. The distribution also includes some large
- applications, for example correctness proofs of cryptographic protocols
- (<a href="//dist/library/HOL/Auth/index.html">HOL/Auth</a>) or communication
- protocols (<a href="//dist/library/HOLCF/IOA/index.html">HOLCF/IOA</a>).</p>
-
- <p><em>Isabelle/ZF</em> provides another starting point for applications, with a
- slightly less developed library. Its definitional packages are similar to
- those of Isabelle/HOL. Untyped ZF provides more advanced constructions for
- sets than simply-typed HOL.</p>
-
- <p>There are a few minor object logics that may serve as further examples:
- <a href="//dist/library/CTT/index.html">CTT</a> is an extensional version of
- Martin-Löf's Type Theory, <a href="//dist/library/Cube/index.html">Cube</a> is
- Barendregt's Lambda Cube. There are also some sequent calculus examples under
- <a href="//dist/library/Sequents/index.html">Sequents</a>, including modal and
- linear logics. Again see the <a href="//dist/library/index.html">Isabelle theory
- library</a> for other examples.</p>
-
- <h2>Defining Logics</h2>
-
- <p>Logics are not hard-wired into Isabelle, but
- formulated within Isabelle's meta logic: <em>Isabelle/Pure</em>.
- There are quite a lot of syntactic and deductive tools available in generic
- Isabelle. Thus defining new logics or extending existing ones basically works
- as follows:</p>
-
- <ol>
- <li>declare concrete syntax (via mixfix grammar and syntax macros)</li>
- <li>declare abstract syntax (as higher-order constants)</li>
- <li>declare inference rules (as meta-logical propositions)</li>
- <li>instantiate generic automatic proof tools (simplifier, classical
- tableau prover etc.)</li>
- <li>manually code special proof procedures (via tacticals or hand-written
- ML)</li>
- </ol>
-
- <p>The first three steps above are fully declarative and involve no ML
- programming at all. Thus one already gets a decent deductive environment
- based on primitive inferences (by employing the built-in mechanisms of
- <em>Isabelle/Pure</em>, in particular higher-order unification and resolution). For
- sizable applications some degree of automated reasoning is essential.
- Instantiating existing tools like the classical tableau prover involves only
- minimal ML-based setup. One may also write arbitrary proof procedures or even
- theory extension packages in ML, without breaking system soundness (Isabelle
- follows the well-known <em>LCF system approach</em> to achieve a secure
- system).</p>
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/makefile Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# isaweb makefile
-# $Id$
-
-# just delegate
-include build/main.mak
Binary file Admin/website/media/pg_preview.pdf has changed
Binary file Admin/website/misc/isabelle_droplet.dmg has changed
--- a/Admin/website/overview.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 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>Overview</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 generic proof assistant. It allows mathematical
- formulas to be expressed in a formal language and provides tools
- for proving those formulas in a logical calculus. The main
- application is the formalization of mathematical proofs and in
- particular <em>formal verification</em>, which includes proving
- the correctness of computer hardware or software and proving
- properties of computer languages and protocols.</p>
-
- <p>Compared with similar tools, Isabelle's distinguishing feature is its
- flexibility. Most proof assistants are built around a single formal calculus,
- typically higher-order logic. Isabelle has the capacity to accept a variety
- of formal calculi. The distributed version supports higher-order logic but
- also axiomatic set theory and several other formalisms. See
- <a href="logics.html">logics</a> for more details.</p>
-
- <p>Isabelle is a joint project between Lawrence C. Paulson
- (University of Cambridge, UK) and Tobias Nipkow (Technical
- University of Munich, Germany).</p>
-
- <p>Isabelle is distributed <em>freely</em> as Open Source
- Software <!--a href="//dist/Isabelle/COPYRIGHT"-->BSD
- license<!--/a-->; see the <a
- href="installation.html">installation instructions</a>.</p>
-
- <h2>Preview of Isabelle</h2>
-
- <a href="//media/pg_preview.mov">
- <img class="left" src="//img/screenshot_isabelle_pg.png" alt="Isabelle Screenshot"
- width="250" height="277" />
- </a>
-
- <p>Here is a <a href="//media/pg_preview.mov">hyperlinked preview</a> demonstrating
- Isabelle and ProofGeneral, in <a href="http://www.apple.com/quicktime/download/">QuickTime
- format</a> and in <a href="//media/pg_preview.pdf">PDF</a>.</p>
- <br clear="all"/>
-
- <h2>What Isabelle offers</h2>
-
- <p>Isabelle provides excellent notational support: new notations
- can be introduced, using normal mathematical symbols. Proofs can
- be written in a structured notation based upon traditional proof
- style, or more straightforwardly as sequences of
- commands. Definitions and proofs may include TeX source, from
- which Isabelle can automatically generate typeset documents.</p>
-
- <p>The main limitation of all such proof systems is that proving
- theorems requires much effort from an expert user. Isabelle
- incorporates some tools to improve the user's productivity by
- automating some parts of the proof process. In particular,
- Isabelle's <em>classical reasoner</em> can perform long chains
- of reasoning steps to prove formulas. The <em>simplifier</em>
- can reason with and about equations. Linear <em>arithmetic</em>
- facts are proved automatically.</p>
-
- <p>Isabelle comes with a large theory library of formally
- verified mathematics, including elementary number theory (for
- example, Gauss's law of quadratic reciprocity), analysis (basic
- properties of limits, derivatives and integrals), algebra (up to
- Sylow's theorem) and set theory (the relative consistency of the
- Axiom of Choice). Also provided are numerous examples arising
- from research into formal verification.</p>
-
- <p>With <em>Isar</em>, Isabelle offers a concise proof formulation language
- which enables a user to write proof scripts naturally understandable for
- both humans <em>and</em> computers.</p>
-
- <p>Isabelle is closely integrated with the <a href=
- "http://proofgeneral.inf.ed.ac.uk/">ProofGeneral</a> user interface, which
- eases the task of writing and maintaining proof scripts.</p>
-
- <p>Ample <a href="documentation.html">documentation</a> is available
- about using Isabelle and its inner concepts, including a
- <a href="http://www4.in.tum.de/~nipkow/LNCS2283/">Tutorial</a> published by
- Springer-Verlag.</p>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/redirect.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +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"?>
- <meta content="0; URL=http://isabelle.in.tum.de/" http-equiv="refresh" />
-</head>
-
-<body class="main">
- <?include file="//include/header.include.html"?>
- <div class="hr"><hr/></div>
-
- <div id="content">
- <h2>Redirect</h2>
- <p>Please visit the Isabelle project page at <a shape="rect" href="http://isabelle.in.tum.de/">http://isabelle.in.tum.de/</a>.</p>
- </div>
-
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/world_map.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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>World map</title>
- <?include file="//include/htmlheader.include.html"?>
- <script type="text/javascript" src="//js/overlib.js"></script>
- <script type="text/javascript" src="//js/world_map_data.js"></script>
-</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>Isabelle around the world</h2>
- <div style="text-align: center; padding: 4pt;">
- <img src="//img/world_map.gif" alt="Isabelle World Map" usemap="#map" />
- <map name="map">
- <area shape="rect" alt="" coords="514,315,523,324" nohref="nohref" onmouseover="return world_click( 0);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="518,309,527,318" href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html" onmouseover="return world_click( 1);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="510,306,519,315" href="http://go.warwick.ac.uk/kalvala" onmouseover="return world_click( 2);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="503,359,512,368" href="http://www.sc.ehu.es/paqui" onmouseover="return world_click( 3);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="513,349,522,358" href="http://www.labri.fr/Perso/~casteran/" onmouseover="return world_click( 4);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="556,339,565,348" href="http://www.infsec.ethz.ch/" onmouseover="return world_click( 5);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="586,337,595,346" href="http://www.ist.tugraz.at/projects/isac/" onmouseover="return world_click( 6);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="568,330,577,339" href="http://www4.in.tum.de/proj/theoremprov/group.html" onmouseover="return world_click( 7);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="556,332,565,341" href="http://dbis.informatik.uni-freiburg.de/index.php?person=hiss/" onmouseover="return world_click( 8);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="544,331,553,340" href="http://www.loria.fr/equipes/mosel/" onmouseover="return world_click( 9);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="551,313,560,322" href="http://ls5-www.cs.uni-dortmund.de/staff/lammich.html" onmouseover="return world_click(10);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="555,306,564,315" href="http://www.tzi.de/cofi/hets" onmouseover="return world_click(11);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="570,293,579,302" href="http://www.imm.dtu.dk/~jv" onmouseover="return world_click(12);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="398,62,489,129" nohref="nohref" onmouseover="return world_click(13);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="761,318,775,332" href="http://www.ertos.nicta.com.au/research/l4.verified/" onmouseover="return world_click(14);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="769,313,783,327" href="http://www.ertos.nicta.com.au/research/l4.verified/" onmouseover="return world_click(15);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="635,144,649,158" href="http://www.iitg.ernet.in/" onmouseover="return world_click(16);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="740,118,754,132" href="http://www.score.cs.tsukuba.ac.jp/~minamide/verification.html" onmouseover="return world_click(17);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="681,107,695,121" nohref="nohref" onmouseover="return world_click(18);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="150,91,164,105" href="http://www.csee.ogi.edu/~johnm" onmouseover="return world_click(19);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="136,116,150,130" href="http://www.nongnu.org/isarmathlib/" onmouseover="return world_click(20);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="220,139,234,153" nohref="nohref" onmouseover="return world_click(21);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="236,105,250,119" href="http://www.cs.cmu.edu/" onmouseover="return world_click(22);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="213,109,228,124" href="http://www-faculty.cs.uiuc.edu/~egunter/" onmouseover="return world_click(23);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="374,167,388,181" href="http://www.univ-nkc.mr/" onmouseover="return world_click(24);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="551,324,561,334" href="http://www.verisoft.de/" onmouseover="return world_click(25);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="575,327,585,337" href="http://www.infosun.fmi.uni-passau.de/st/staff/wasserra/" onmouseover="return world_click(26);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="506,289,516,299" href="http://www.inf.ed.ac.uk/" onmouseover="return world_click(27);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="710,83,724,97" href="http://www.khstu.ru/" onmouseover="return world_click(28);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="254,98,268,112" href="http://www.cag.csail.mit.edu/~vkuncak/projects/jahob/index.html" onmouseover="return world_click(29);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="218,102,232,116" href="http://www.cs.uchicago.edu/people/dbm" onmouseover="return world_click(30);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="503,365,512,374" href="https://belenus.unirioja.es/~jearansa/" onmouseover="return world_click(31);" onmouseout="return nd();" />
- </map>
- </div>
-
- <p>There is also a <a href="//world_map_large.html">larger version of this map</a>.
- Contact <a href="mailto:webmaster@isabelle.in.tum.de?subject=Isabelle World Map">webmaster@isabelle.in.tum.de</a>
- if you want to be added to the map.
- </p>
-
- </div>
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/world_map_large.html Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +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>World map</title>
- <?include file="//include/htmlheader.include.html"?>
- <script type="text/javascript" src="//js/overlib.js"></script>
- <script type="text/javascript" src="//js/world_map_data.js"></script>
-</head>
-
-<body class="main">
- <img src="//img/world_map_large.gif" alt="Isabelle World Map" usemap="#map" />
- <map name="map">
- <area shape="rect" alt="" coords="1321,808,1350,837" nohref="nohref" onmouseover="return world_click( 0);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1331,794,1360,823" href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html" onmouseover="return world_click( 1);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1313,785,1342,814" href="http://go.warwick.ac.uk/kalvala" onmouseover="return world_click( 2);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1292,923,1321,952" href="http://www.sc.ehu.es/paqui" onmouseover="return world_click( 3);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1319,896,1348,925" href="http://www.labri.fr/Perso/~casteran/" onmouseover="return world_click( 4);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1427,869,1456,898" href="http://www.infsec.ethz.ch/" onmouseover="return world_click( 5);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1505,867,1534,896" href="http://www.ist.tugraz.at/projects/isac/" onmouseover="return world_click( 6);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1462,847,1491,876" href="http://www4.in.tum.de/proj/theoremprov/group.html" onmouseover="return world_click( 7);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1425,849,1454,878" href="http://dbis.informatik.uni-freiburg.de/index.php?person=hiss/" onmouseover="return world_click( 8);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1398,849,1427,878" href="http://www.loria.fr/equipes/mosel/" onmouseover="return world_click( 9);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1415,802,1444,831" href="http://ls5-www.cs.uni-dortmund.de/staff/lammich.html" onmouseover="return world_click(10);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1427,783,1456,812" href="http://www.tzi.de/cofi/hets" onmouseover="return world_click(11);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1465,749,1494,778" href="http://www.imm.dtu.dk/~jv" onmouseover="return world_click(12);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1028,158,1260,332" nohref="nohref" onmouseover="return world_click(13);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1960,816,1999,855" href="http://www.ertos.nicta.com.au/research/l4.verified/" onmouseover="return world_click(14);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1979,804,2018,843" href="http://www.ertos.nicta.com.au/research/l4.verified/" onmouseover="return world_click(15);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1634,369,1673,408" href="http://www.iitg.ernet.in/" onmouseover="return world_click(16);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1906,302,1945,341" href="http://www.score.cs.tsukuba.ac.jp/~minamide/verification.html" onmouseover="return world_click(17);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1752,274,1791,313" nohref="nohref" onmouseover="return world_click(18);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="385,231,424,270" href="http://www.csee.ogi.edu/~johnm" onmouseover="return world_click(19);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="348,297,387,336" href="http://www.nongnu.org/isarmathlib/" onmouseover="return world_click(20);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="564,355,603,394" nohref="nohref" onmouseover="return world_click(21);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="607,268,646,307" href="http://www.cs.cmu.edu/" onmouseover="return world_click(22);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="551,277,590,316" href="http://www-faculty.cs.uiuc.edu/~egunter/" onmouseover="return world_click(23);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="963,426,1002,465" href="http://www.univ-nkc.mr/" onmouseover="return world_click(24);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1416,834,1445,863" href="http://www.verisoft.de/" onmouseover="return world_click(25);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1481,840,1510,869" href="http://www.infosun.fmi.uni-passau.de/st/staff/wasserra/" onmouseover="return world_click(26);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1302,742,1331,771" href="http://www.inf.ed.ac.uk/" onmouseover="return world_click(27);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1828,211,1867,250" href="http://www.khstu.ru/" onmouseover="return world_click(28);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="653,250,692,289" href="http://www.cag.csail.mit.edu/~vkuncak/projects/jahob/index.html" onmouseover="return world_click(29);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="561,261,600,300" href="http://www.cs.uchicago.edu/people/dbm" onmouseover="return world_click(30);" onmouseout="return nd();" />
- <area shape="rect" alt="" coords="1293,940,1321,968" href="https://belenus.unirioja.es/~jearansa/" onmouseover="return world_click(31);" onmouseout="return nd();" />
-
- </map>
-
- <p>Back to <a href="//world_map.html">smaller version of this map</a>.
- Contact <a href="mailto:webertj@in.tum.de?subject=Isabelle World Map">webertj@in.tum.de</a>
- if you want to be added to the map.
- </p>
-
- <div class="hr"><hr/></div>
- <?include file="//include/footer.include.html"?>
-</body>
-
-</html>