2000-10-04 Manuel Guesdon <mguesdon@orange-concept.com>

* GSWExtensions.framework/Makefile.preamble: added GDL2 FLAG
        * GSWExtensions.framework/*/*.html: lowercase tags
        * GSWExtensionsGSW.framework/*/*.html: lowercase tags
        * GSWeb.framework/GNUmakefile : added DTDs, modified Files list
        * GSWeb.framework/GSWApplication.m: commented [GSWHTMLParser printsDiagnostics]
                                            changes for GDL2
        * GSWeb.framework/GSWBrowser.h/.m: implementation
        * GSWeb.framework/GSWBundle.m: Parser call modification, handling of .gswi unarchiving
        * GSWeb.framework/GSWComponentContent.m: Logs
        * GSWeb.framework/GSWConfig.h: Added GSWEB_DEFAULT_HTML_PARSER_CLASS_NAME
        * GSWeb.framework/GSWConstants.h/.m: added keys
        * GSWeb.framework/GSWDisplayGroup.h/.m member variables renamed
                                                implementation of some missing parts
        * GSWeb.framework/GSWRequest.m: remove duplicate languages
        * GSWeb.framework/GSWTemplateParser.h/.m: make it base class for different parsers
        * GSWeb.framework/GSWTemplateParserXML.h/.m: XML parser
        * GSWeb.framework/GSWTemplateParserANTLR.h/.m: ANTLR (old) parser
        * GSWeb.framework/GSWUtils.h/.m: added  SBIsValueIsIn()
        * GSWeb.framework/GSWeb.h: added includes for parsers
        * GSWeb.framework/Makefile.postamble: DTDs install
        * GSWeb.framework/Makefile.preamble:  added GDL2 FLAG


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@7703 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Manuel Guesdon 2000-10-04 22:19:43 +00:00
parent c4b903edee
commit 5f288841af
69 changed files with 8145 additions and 2671 deletions

View file

@ -1,3 +1,27 @@
2000-10-04 Manuel Guesdon <mguesdon@orange-concept.com>
* GSWExtensions.framework/Makefile.preamble: added GDL2 FLAG
* GSWExtensions.framework/*/*.html: lowercase tags
* GSWExtensionsGSW.framework/*/*.html: lowercase tags
* GSWeb.framework/GNUmakefile : added DTDs, modified Files list
* GSWeb.framework/GSWApplication.m: commented [GSWHTMLParser printsDiagnostics]
changes for GDL2
* GSWeb.framework/GSWBrowser.h/.m: implementation
* GSWeb.framework/GSWBundle.m: Parser call modification, handling of .gswi unarchiving
* GSWeb.framework/GSWComponentContent.m: Logs
* GSWeb.framework/GSWConfig.h: Added GSWEB_DEFAULT_HTML_PARSER_CLASS_NAME
* GSWeb.framework/GSWConstants.h/.m: added keys
* GSWeb.framework/GSWDisplayGroup.h/.m member variables renamed
implementation of some missing parts
* GSWeb.framework/GSWRequest.m: remove duplicate languages
* GSWeb.framework/GSWTemplateParser.h/.m: make it base class for different parsers
* GSWeb.framework/GSWTemplateParserXML.h/.m: XML parser
* GSWeb.framework/GSWTemplateParserANTLR.h/.m: ANTLR (old) parser
* GSWeb.framework/GSWUtils.h/.m: added SBIsValueIsIn()
* GSWeb.framework/GSWeb.h: added includes for parsers
* GSWeb.framework/Makefile.postamble: DTDs install
* GSWeb.framework/Makefile.preamble: added GDL2 FLAG
2000-08-26 Mirko Viviani <mirko.viviani@rccr.cremona.it>
* GSWMailDelivery.m/.h: rewritten sendEmail: with execlp() to avoid

View file

@ -5,12 +5,12 @@
</head>
<body>
Configuration file path is specified with Apache directive (/etc/httpd/conf/gsweb.conf is an exemple): <BR>
<PRE>GSWeb_ConfigFilePath /etc/httpd/conf/gsweb.conf</PRE><BR>
Configuration file path is specified with Apache directive (/etc/httpd/conf/gsweb.conf is an exemple): <br>
<PRE>GSWeb_ConfigFilePath /etc/httpd/conf/gsweb.conf</PRE><br>
The format is GNUstep/OpenStep property list.<BR>
Here is an exemple with all the possible options:<BR>
The format is GNUstep/OpenStep property list.<br>
Here is an exemple with all the possible options:<br>
<PRE>

View file

@ -1,80 +1,80 @@
<HTML>
<HEAD>
<TITLE>GNUstepWeb Erreurr</TITLE>
</HEAD>
<BODY bgcolor=white>
<html>
<head>
<title>GNUstepWeb Erreur</title>
</head>
<body bgcolor="white">
<TABLE BORDER=0>
<TR>
<TD ALIGN=center VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><br>
<table border="0">
<tr>
<td align="center" valign="top">
<gsweb name="ExclamationImage"></gsweb><br>
Ré-entrer<br>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=VisibleConditional>
<HR>
<TABLE BORDER=0>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B>Application:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=ApplicationNameString></GSWEB>
</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B>Erreurr:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=ExceptionNameString></GSWEB>
</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B>Raison:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=ReasonRepetition>
<GSWEB NAME=ReasonString></GSWEB><BR>
</GSWEB>
</TD>
</TR>
<TR>
<TD colspan=2 ALIGN=LEFT VALIGN=bottom>
<HR>
<B>Dictionaire des informations utilisateur:</B>
</TD>
</TR>
<GSWEB NAME=HasUserInfoConditional>
<GSWEB NAME=UserInfoRowRepetition>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B><GSWEB NAME=UserInfoKeyString></GSWEB>:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=UserInfoValueString></GSWEB>
</TD>
</TR>
</GSWEB>
</GSWEB>
<GSWEB NAME=NoUserInfoConditional>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<B>L'Exception n'a pas de dictionaire des informations utilisateur</B>
</TD>
</TR>
</GSWEB>
</GSWEB>
</TABLE>
</TD>
</TR>
</TABLE>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="left" valign="top">
<gsweb name="VisibleConditional">
<hr>
<table border="0">
<tr>
<td align="right" valign="top">
<b>Application:</b>
</td>
<td align="left" valign="top">
<gsweb name="ApplicationNameString"></gsweb>
</td>
</tr>
<tr>
<td align="right" valign="top">
<b>Erreur:</b>
</td>
<td align="left" valign="top">
<gsweb name="ExceptionNameString"></gsweb>
</td>
</tr>
<tr>
<td align="right" valign="top">
<b>Raison:</b>
</td>
<td align="left" valign="top">
<gsweb name="ReasonRepetition">
<gsweb name="ReasonString"></gsweb><br>
</gsweb>
</td>
</tr>
<tr>
<td colspan="2" align="left" valign="bottom">
<hr>
<b>Dictionaire des informations utilisateur:</b>
</td>
</tr>
<gsweb name="HasUserInfoConditional">
<gsweb name="UserInfoRowRepetition">
<tr>
<td align="right" valign="top">
<b><gsweb name="UserInfoKeyString"></gsweb>:</b>
</td>
<td align="left" valign="top">
<gsweb name="UserInfoValueString"></gsweb>
</td>
</tr>
</gsweb>
</gsweb>
<gsweb name="NoUserInfoConditional">
<tr>
<td align="right" valign="top">
</td>
<td align="left" valign="top">
<b>L'Exception n'a pas de dictionaire des informations utilisateur</b>
</td>
</tr>
</gsweb>
</gsweb>
</table>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -1,26 +1,26 @@
<HTML>
<HEAD>
<TITLE>Erreur: Page Manquante</TITLE>
</HEAD>
<BODY bgcolor=white>
<html>
<head>
<title>Erreur: Page Manquante</title>
</head>
<body bgcolor="white">
<TABLE BORDER=0>
<TR>
<TD ALIGN=CENTER VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><BR>
Ré-entrer<BR>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=MIDDLE>
<B> Vous etes retourné trop loin.<BR></B>
<table border="0">
<tr>
<td align="CENTER" Valign="TOP">
<gsweb name="ExclamationImage"></gsweb><br>
Ré-entrer<br>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="LEFT" Valign="MIDDLE">
<b> Vous etes retourné trop loin.<br></b>
La limite de
<GSWEB NAME=BacktrackingLimitString></GSWEB>
a été dépassée.<BR>
</TD>
</TR>
</TABLE>
<gsweb name="BacktrackingLimitString"></gsweb>
a été dépassée.<br>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,23 +1,23 @@
<HTML>
<HEAD>
<TITLE>Erreur de création de session</TITLE>
</HEAD>
<BODY BGCOLOR="white">
<html>
<head>
<title>Erreur de création de session</title>
</head>
<body BGcolor="white">
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD ALIGN=CENTER VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><BR>
Ré-entrer<BR>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=MIDDLE>
<B>Votre session n'a pu etre crée.<B>
</TD>
</TR>
</TABLE>
<table border="0" width="100%">
<tr>
<td align="CENTER" Valign="TOP">
<gsweb name="ExclamationImage"></gsweb><br>
Ré-entrer<br>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="LEFT" Valign="MIDDLE">
<b>Votre session n'a pu etre crée.<b>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,24 +1,24 @@
<HTML>
<HEAD>
<TITLE>Erreur: Session Manquante</TITLE>
</HEAD>
<BODY bgcolor="white">
<html>
<head>
<title>Erreur: Session Manquante</title>
</head>
<body bgcolor="white">
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD ALIGN=CENTER VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><BR>
Ré-entrer<BR>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=MIDDLE>
<B>Votre session a expiré.<B>
</TD>
</TR>
</TABLE>
<table border="0" width="100%">
<tr>
<td align="CENTER" Valign="TOP">
<gsweb name="ExclamationImage"></gsweb><br>
Ré-entrer<br>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="LEFT" Valign="MIDDLE">
<b>Votre session a expiré.<b>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1 +1 @@
<GSWEB NAME=Link><GSWEB NAME=Image></GSWEB></GSWEB> <GSWEB NAME=Label></GSWEB><GSWEB NAME=Condition><GSWEB NAME=Content></GSWEB></GSWEB>
<gsweb name="Link"><gsweb name="Image"></gsweb></gsweb> <gsweb name="Label"></gsweb><gsweb name="Condition"><gsweb name="Content"></gsweb></gsweb>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1 +1 @@
<GSWEB NAME=Repetition><GSWEB NAME=Content></GSWEB></GSWEB>
<gsweb name="Repetition"><gsweb name="Content"></gsweb></gsweb>

View file

@ -1,80 +1,80 @@
<HTML>
<HEAD>
<TITLE>GNUstepWeb Error</TITLE>
</HEAD>
<BODY bgcolor="white">
<html>
<head>
<title>GNUstepWeb Error</title>
</head>
<body bgcolor="white">
<TABLE BORDER=0>
<TR>
<TD ALIGN=center VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><br>
<table border="0">
<tr>
<td align="center" Valign="TOP">
<gsweb name="ExclamationImage"></gsweb><br>
Re-enter<br>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=VisibleConditional>
<HR>
<TABLE BORDER=0>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B>Application:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=ApplicationNameString></GSWEB>
</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B>Error:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=ExceptionNameString></GSWEB>
</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B>Reason:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=ReasonRepetition>
<GSWEB NAME=ReasonString></GSWEB><BR>
</GSWEB>
</TD>
</TR>
<TR>
<TD colspan=2 ALIGN=LEFT VALIGN=bottom>
<HR>
<B>User Info Dictionary:</B>
</TD>
</TR>
<GSWEB NAME=HasUserInfoConditional>
<GSWEB NAME=UserInfoRowRepetition>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
<B><GSWEB NAME=UserInfoKeyString></GSWEB>:</B>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<GSWEB NAME=UserInfoValueString></GSWEB>
</TD>
</TR>
</GSWEB>
</GSWEB>
<GSWEB NAME=NoUserInfoConditional>
<TR>
<TD ALIGN=RIGHT VALIGN=TOP>
</TD>
<TD ALIGN=LEFT VALIGN=TOP>
<B>Exception has no userInfo dictionary</B>
</TD>
</TR>
</GSWEB>
</GSWEB>
</TABLE>
</TD>
</TR>
</TABLE>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="LEFT" Valign="TOP">
<gsweb name="VisibleConditional">
<hr>
<table border="0">
<tr>
<td align="RIGHT" Valign="TOP">
<b>Application:</b>
</td>
<td align="LEFT" Valign="TOP">
<gsweb name="ApplicationNameString"></gsweb>
</td>
</tr>
<tr>
<td align="RIGHT" Valign="TOP">
<b>Error:</b>
</td>
<td align="LEFT" Valign="TOP">
<gsweb name="ExceptionNameString"></gsweb>
</td>
</tr>
<tr>
<td align="RIGHT" Valign="TOP">
<b>Reason:</b>
</td>
<td align="LEFT" Valign="TOP">
<gsweb name="ReasonRepetition">
<gsweb name="ReasonString"></gsweb><br>
</gsweb>
</td>
</tr>
<tr>
<TD colspan="2" align="LEFT" Valign="bottom">
<hr>
<b>User Info Dictionary:</b>
</td>
</tr>
<gsweb name="HasUserInfoConditional">
<gsweb name="UserInfoRowRepetition">
<tr>
<td align="RIGHT" Valign="TOP">
<b><gsweb name="UserInfoKeyString"></gsweb>:</b>
</td>
<td align="LEFT" Valign="TOP">
<gsweb name="UserInfoValueString"></gsweb>
</td>
</tr>
</gsweb>
</gsweb>
<gsweb name="NoUserInfoConditional">
<tr>
<td align="RIGHT" Valign="TOP">
</td>
<td align="LEFT" Valign="TOP">
<b>Exception has no userInfo dictionary</b>
</td>
</tr>
</gsweb>
</gsweb>
</table>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1 +1 @@
<GSWEB NAME=IFrameContainer><GSWEB NAME=AltContent></GSWEB></GSWEB>
<gsweb name="IFrameContainer"><gsweb name="AltContent"></gsweb></gsweb>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1 +1 @@
<GSWEB NAME=MetaRefresh></GSWEB>
<gsweb name="MetaRefresh"></gsweb>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,26 +1,26 @@
<HTML>
<HEAD>
<TITLE>Missing Page Error</TITLE>
</HEAD>
<BODY bgcolor="white">
<html>
<head>
<title>Missing Page Error</title>
</head>
<body bgcolor="white">
<TABLE BORDER=0>
<TR>
<TD ALIGN=CENTER VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><BR>
Re-enter<BR>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=MIDDLE>
<B> You backtracked too far.<BR></B>
<table border="0">
<tr>
<td align="CENTER" Valign="TOP">
<gsweb name="ExclamationImage"></gsweb><br>
Re-enter<br>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="LEFT" Valign="MIDDLE">
<b> You backtracked too far.<br></b>
The application backtracking limit of
<GSWEB NAME=BacktrackingLimitString></GSWEB>
has been exceeded.<BR>
</TD>
</TR>
</TABLE>
<gsweb name="BacktrackingLimitString"></gsweb>
has been exceeded.<br>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,4 +1,4 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<!DOCTYPE html PUBLIC "-//IETF//DTD html//EN">
<html>
<head>
<title>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,23 +1,23 @@
<HTML>
<HEAD>
<TITLE>Session Creation Error</TITLE>
</HEAD>
<BODY BGCOLOR="white">
<html>
<head>
<title>Session Creation Error</title>
</head>
<body BGcolor="white">
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD ALIGN=CENTER VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><BR>
Re-enter<BR>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=MIDDLE>
<B>Your session could not be created.<B>
</TD>
</TR>
</TABLE>
<table border="0" width="100%">
<tr>
<td align="CENTER" Valign="TOP">
<gsweb name="ExclamationImage"></gsweb><br>
Re-enter<br>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="LEFT" Valign="MIDDLE">
<b>Your session could not be created.<b>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,23 +1,23 @@
<HTML>
<HEAD>
<TITLE>Missing Session Error</TITLE>
</HEAD>
<BODY bgcolor="white">
<html>
<head>
<title>Missing Session Error</title>
</head>
<body bgcolor="white">
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD ALIGN=CENTER VALIGN=TOP>
<GSWEB NAME=ExclamationImage></GSWEB><BR>
Re-enter<BR>
<GSWEB NAME=ReenterHyperlink>
<B><GSWEB NAME=ApplicationNameString></GSWEB></B>
</GSWEB>
</TD>
<TD ALIGN=LEFT VALIGN=MIDDLE>
<B>Your session has timed out.<B>
</TD>
</TR>
</TABLE>
<table border="0" width="100%">
<tr>
<td align="CENTER" Valign="TOP">
<gsweb name="ExclamationImage"></gsweb><br>
Re-enter<br>
<gsweb name="ReenterHyperlink">
<b><gsweb name="ApplicationNameString"></gsweb></b>
</gsweb>
</td>
<td align="LEFT" Valign="MIDDLE">
<b>Your session has timed out.<b>
</td>
</tr>
</table>
</BODY>
</HTML>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,306 +1,288 @@
<HTML>
<HEAD><TITLE></TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<html>
<head><title></title>
</head>
<body BGcolor="#FFFFFF">
<GSWEB NAME=REFUSED>
<CENTER>
<h2><FONT color=#FF0000>This Request Requires A User Login</FONT></h2>
<BR>
<gsweb name="REFUSED">
<center>
<h2><font color="#FF0000">This Request Requires A User Login</font></h2>
<br>
<!-- ****
<GSWEB name=Form1>
<TABLE border=1 cellPadding=2 cellSpacing=0 bgcolor="#f6ffff">
<TABLE BORDER=0 WIDTH=80%>
<TR align=CENTER>
<TD>
<gsweb name="Form1">
<table border="1" cellPadding="2" cellSpacing="0" bgcolor="#f6ffff">
<table border="0" width="80%">
<TR align="CENTER">
<td>
User
</TD>
<TD>
<GSWEB NAME="USERNAME"></GSWEB>
</TD>
</TR>
<TR align=CENTER>
<TD>
</td>
<td>
<gsweb name="USERNAME"></gsweb>
</td>
</tr>
<TR align="CENTER">
<td>
Password
</TD>
<TD>
<GSWEB NAME="PASSWORD"></GSWEB>
</TD>
</TR>
<TR>
<GSWEB NAME="SUBMIT"></GSWEB>
</TR>
</TABLE>
</TABLE>
<BR>
</GSWEB>
********** -->
</CENTER>
</GSWEB><GSWEB NAME=ALLOWED>
<GSWEB NAME=Form4><TABLE BORDER=0 WIDTH=100%>
<TR>
<TD ALIGN=CENTER COLSPAN=2>
<H2>Statistics For <FONT color=#FF0000>
<GSWEB name=String2></GSWEB>
<GSWEB name=Conditional2>
#<FONT color=#FF0000>
<GSWEB name=String6></GSWEB>
</FONT>
</GSWEB>
</FONT>On Host <FONT color=#FF0000>
<GSWEB name=String11></GSWEB>
</FONT>
</H2>
</TD>
</TR>
<TR>
<TD ALIGN=CENTER>
<GSWEB NAME="REFRESH"></GSWEB>
</TD>
</TR>
</TABLE></GSWEB><HR>
<BR>
<CENTER>
<TABLE BORDER=2 CELLPADDING=4 CELLSPACING=2 bgcolor="#d0d0d0">
<TR align = CENTER bgcolor="#b0b0b0">
<TD COLSPAN=6><FONT SIZE=+1><B>Application Statistics</B></FONT>
</TD>
</TR>
<TR>
<TD> &nbsp </TD>
<TD ALIGN=CENTER><FONT SIZE=-1>Transactions</FONT></TD>
<TD ALIGN=CENTER><FONT SIZE=-1>Average Transaction<BR>Time</FONT></TD>
<TD ALIGN=CENTER><FONT SIZE=-1>Average Idle<BR>Time</FONT></TD>
<TD ALIGN=CENTER><FONT SIZE=-1>Moving Average*<BR>Transaction Time</FONT></TD>
<TD ALIGN=CENTER><FONT SIZE=-1>Moving Average*<BR>Idle Time</FONT></TD>
</TR>
<TR>
<TD>Overall</TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=Transactions></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=AvgTransactionTime></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=AvgIdleTime></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=MovingAvgTransactionTime></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=MovingAvgIdleTime></GSWEB></FONT></TD>
</TR>
<TR>
<TD>Component Actions</TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=ComponentActionTransactions></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=AvgComponentActionTransactions></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT size=-1>NA</FONT></TD>
<TD ALIGN=CENTER> &nbsp </TD>
<TD ALIGN=CENTER><FONT size=-1>NA</FONT></TD>
</TR>
<TR>
<TD>Direct Actions</TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=DirectActionTransactions></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB name=AvgDirectActionTransactions></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT size=-1>NA</FONT></TD>
<TD ALIGN=CENTER> &nbsp </TD>
<TD ALIGN=CENTER><FONT size=-1>NA</FONT></TD>
</TR>
<TR>
<TD>Started at</TD>
<TD COLSPAN=5>
<FONT color=#0000FF><GSWEB name=String21></GSWEB></FONT>
</TD>
</TR>
<TR>
<TD>Running time</TD>
<TD COLSPAN=5>
<FONT color=#0000FF><GSWEB name=RunningTime></GSWEB></FONT>
</TD>
</TR>
</TABLE>
<FONT SIZE=-1>
* The sample size for Moving Averages is <FONT color=#0000FF><GSWEB name=MovingAvgSampleSize></GSWEB></FONT> transactions.
</FONT>
</CENTER>
<HR>
<CENTER>
<TABLE BORDER=2 CELLPADDING=4 CELLSPACING=2 bgcolor="#d0d0d0">
<TR align=CENTER bgcolor="#b0b0b0">
<TD COLSPAN=2><FONT SIZE=+1><B>Sessions Statistics</B></FONT></TD>
</TR>
<GSWEB name=SessionsRepetition>
<TR>
<TD>
<GSWEB name=SessionsKeyCell>
</GSWEB>
</TD>
<TD>
<FONT color=#0000FF><GSWEB name=SessionsValueCell>
</GSWEB></FONT>
</TD>
</TR>
</GSWEB>
<GSWEB NAME="ISMAXSESSIONS">
<TR>
<TD COLSPAN=2>Peak Concurrent Sessions at<BR><FONT color=#0000FF><GSWEB NAME="MaxSessions"></GSWEB></FONT>
</TD>
</TR>
</GSWEB>
</TABLE>
</CENTER>
<BR>
<CENTER>
<TABLE BORDER=0 WIDTH="100%"> <!-- spacer table - invisible -->
<TR><TD ALIGN=CENTER>
<TABLE BORDER=2 CELLPADDING=4 CELLSPACING=2 bgcolor="#d0d0d0">
<TR align=CENTER bgcolor="#b0b0b0">
<TD COLSPAN=2><B>Memory Usage (bytes)</B>
</TD>
</TR>
<GSWEB name=MemoryRepetition>
<TR>
<TD>
<GSWEB name=MemoryKeyCell></GSWEB>
</TD>
<TD ALIGN="RIGHT">
<FONT color=#0000FF><GSWEB name=MemoryValueCell></GSWEB></FONT>
</TD>
</TR>
</GSWEB>
</TABLE>
</TD><TD ALIGN=CENTER>
<TABLE BORDER=2 CELLPADDING=4 CELLSPACING=2 bgcolor="#d0d0d0">
<TR align = CENTER bgcolor="#b0b0b0">
<TD COLSPAN=2><B>Avg. Memory Usage Per Session (bytes)</B>
</TD>
</TR>
<GSWEB name=SessionMemoryRepetition>
<TR>
<TD>
<GSWEB name=SessionMemoryKeyCell>
</GSWEB>
</TD>
<TD ALIGN="RIGHT">
<FONT color=#0000FF><GSWEB name=SessionMemoryValueCell>
</GSWEB></FONT>
</TD>
</TR>
</GSWEB>
</TABLE>
</TD></TR></TABLE>
</CENTER>
<BR>
<GSWEB NAME=ISLASTUSER>
Response Descriptions For Last User :
<BR>
<CENTER>
<table border=2 cellpadding=4 cellspacing=2 bgcolor="#d0d0d0" WIDTH="80%">
<GSWEB name=SessionStatsRepetition>
<TR>
<TD>
<FONT color=#0000FF><GSWEB name=SessionStatsField>
</GSWEB></FONT>
</TD>
</TR>
</GSWEB>
</td>
<td>
<gsweb name="PASSWORD"></gsweb>
</td>
</tr>
<tr>
<gsweb name="SUBMIT"></gsweb>
</tr>
</table>
</CENTER>
</GSWEB><HR>
</table>
<br>
</gsweb>
********** -->
</center>
</gsweb><gsweb name="ALLOWED">
<CENTER>
<TABLE border=2 cellpadding=4 cellspacing=2 width="80%" bgcolor="#d0d0d0">
<TR><TD COLSPAN=5 ALIGN=CENTER BGCOLOR="#b0b0b0">
<FONT SIZE=+1><B> Component Action Statistics </B></FONT>
</TD></TR>
<TR align=CENTER bgcolor="#d6d8df">
<TD WIDTH = "20%">
Name
</TD>
<TD WIDTH = "50%">Served
</TD>
<TD WIDTH = "10%">
Min
</TD>
<TD WIDTH = "10%">
Avg
</TD>
<TD WIDTH = "10%">
Max
</TD>
</TR>
<GSWEB NAME=PagesRepetition>
<TR>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=PageName></GSWEB></FONT></TD>
<TD align=left><GSWEB NAME="PageCountBar"></GSWEB></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=PageMin></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><B><GSWEB NAME=PageAvg></GSWEB></B></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=PageMax></GSWEB></FONT></TD>
</TR>
</GSWEB>
</TABLE>
</CENTER>
<gsweb name="Form4"><table border="0" width="100%">
<tr>
<td align="CENTER" COLSPAN="2">
<h2>Statistics For <font color="#FF0000">
<gsweb name="String2"></gsweb>
<gsweb name="Conditional2">
#<font color="#FF0000">
<gsweb name="String6"></gsweb>
</font>
</gsweb>
</font>On Host <font color="#FF0000">
<gsweb name="String11"></gsweb>
</font>
</h2>
</td>
</tr>
<tr>
<td align="CENTER">
<gsweb name="REFRESH"></gsweb>
</td>
</tr>
</table></gsweb><hr>
<HR>
<br>
<CENTER>
<TABLE border=2 cellpadding=4 cellspacing=2 width="80%" bgcolor="#d0d0d0">
<TR><TD COLSPAN=5 ALIGN=CENTER BGCOLOR="#b0b0b0">
<FONT SIZE=+1><B> Direct Action Statistics </B></FONT>
</TD></TR>
<TR align=CENTER bgcolor="#d6d8df">
<TD WIDTH="20%">Name</TD>
<TD WIDTH="50%">Served</TD>
<TD WIDTH="10%">Min</TD>
<TD WIDTH="10%">Avg</TD>
<TD WIDTH="10%">Max</TD>
</TR>
<GSWEB NAME=ActionsRepetition>
<TR>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=ActionName></GSWEB></FONT></TD>
<TD align=left><GSWEB NAME="ActionBar"></GSWEB></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=ActionMin></GSWEB></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><B><GSWEB NAME=ActionAvg></GSWEB></B></FONT></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=ActionMax></GSWEB></FONT></TD>
</TR>
</GSWEB>
</TABLE>
</CENTER>
<center>
<table border="2" CELLPADDING="4" CELLSPACING="2" bgcolor="#d0d0d0">
<TR align="CENTER" bgcolor="#b0b0b0">
<TD COLSPAN="6"><font SIZE="+1"><b>Application Statistics</b></font>
</td>
</tr>
<tr>
<td> &nbsp </td>
<td align="CENTER"><font SIZE="-1">Transactions</font></td>
<td align="CENTER"><font SIZE="-1">Average Transaction<br>Time</font></td>
<td align="CENTER"><font SIZE="-1">Average Idle<br>Time</font></td>
<td align="CENTER"><font SIZE="-1">Moving Average*<br>Transaction Time</font></td>
<td align="CENTER"><font SIZE="-1">Moving Average*<br>Idle Time</font></td>
</tr>
<tr>
<td>Overall</td>
<td align="CENTER"><font color="#0000FF"><gsweb name="Transactions"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="AvgTransactionTime"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="AvgIdleTime"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="MovingAvgTransactionTime"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="MovingAvgIdleTime"></gsweb></font></td>
</tr>
<tr>
<td>Component Actions</td>
<td align="CENTER"><font color="#0000FF"><gsweb name="ComponentActionTransactions"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="AvgComponentActionTransactions"></gsweb></font></td>
<td align="CENTER"><font size="-1">NA</font></td>
<td align="CENTER"> &nbsp </td>
<td align="CENTER"><font size="-1">NA</font></td>
</tr>
<tr>
<td>Direct Actions</td>
<td align="CENTER"><font color="#0000FF"><gsweb name="DirectActionTransactions"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="AvgDirectActionTransactions"></gsweb></font></td>
<td align="CENTER"><font size="-1">NA</font></td>
<td align="CENTER"> &nbsp </td>
<td align="CENTER"><font size="-1">NA</font></td>
</tr>
<tr>
<td>Started at</td>
<TD COLSPAN="5">
<font color="#0000FF"><gsweb name="String21"></gsweb></font>
</td>
</tr>
<tr>
<td>Running time</td>
<TD COLSPAN="5">
<font color="#0000FF"><gsweb name="RunningTime"></gsweb></font>
</td>
</tr>
<HR>
</table>
<font SIZE="-1">
* The sample size for Moving Averages is <font color="#0000FF"><gsweb name="MovingAvgSampleSize"></gsweb></font> transactions.
</font>
</center>
<CENTER>
<TABLE border=2 cellPadding=4 cellspacing=2 width="80%" bgcolor="#d0d0d0">
<TR><TD COLSPAN=3 ALIGN=CENTER BGCOLOR="#b0b0b0">
<FONT SIZE=+1><B>Detailed Statistics</B></FONT>
</TD></TR>
<TR align=CENTER bgcolor="#d6d8df">
<TD WIDTH="40%">
Response Description
</TD>
<TD WIDTH="50%">Percent Of Total
</TD>
<TD WIDTH="10%">
Served
</TD>
</TR>
<GSWEB NAME=DetailsRepetition>
<TR>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=DetailName></GSWEB></FONT></TD>
<TD align=left><GSWEB NAME="BAR_DETAILS"></GSWEB></TD>
<TD ALIGN=CENTER><FONT color=#0000FF><GSWEB NAME=DetailCount></GSWEB></FONT></TD>
</TR>
</GSWEB>
</TABLE>
<BR>
<GSWEB NAME=ISLOGPATH>
<HR>
<BR>
Statistics Details Saved In Common Log Format In File <FONT color=#0000FF><GSWEB NAME=LOGPATH></GSWEB></FONT></GSWEB>
<hr>
<center>
<table border="2" CELLPADDING="4" CELLSPACING="2" bgcolor="#d0d0d0">
<TR align="CENTER" bgcolor="#b0b0b0">
<TD COLSPAN="2"><font SIZE="+1"><b>Sessions Statistics</b></font></td>
</tr>
<gsweb name="SessionsRepetition">
<tr>
<td>
<gsweb name="SessionsKeyCell"></gsweb>
</td>
<td>
<font color="#0000FF"><gsweb name="SessionsValueCell"></gsweb></font>
</td>
</tr>
</gsweb>
<gsweb name="ISMAXSESSIONS">
<tr>
<TD COLSPAN="2">Peak Concurrent Sessions at<br><font color="#0000FF"><gsweb name="MaxSessions"></gsweb></font>
</td>
</tr>
</gsweb>
</table>
</center>
<br>
<center>
<table border=0 width="100%"> <!-- spacer table - invisible -->
<tr><td align="CENTER">
<table border="2" CELLPADDING="4" CELLSPACING="2" bgcolor="#d0d0d0">
<TR align="CENTER" bgcolor="#b0b0b0">
<TD COLSPAN="2"><b>Memory Usage (bytes)</b>
</td>
</tr>
<gsweb name="MemoryRepetition">
<tr>
<td>
<gsweb name="MemoryKeyCell"></gsweb>
</td>
<td align="RIGHT">
<font color="#0000FF"><gsweb name="MemoryValueCell"></gsweb></font>
</td>
</tr>
</gsweb>
</table>
</td><td align="CENTER">
<table border="2" CELLPADDING="4" CELLSPACING="2" bgcolor="#d0d0d0">
<TR align="CENTER" bgcolor="#b0b0b0">
<TD COLSPAN="2"><b>Avg. Memory Usage Per Session (bytes)</b>
</td>
</tr>
<gsweb name="SessionMemoryRepetition">
<tr>
<td>
<gsweb name="SessionMemoryKeyCell">
</gsweb>
</td>
<td align="RIGHT">
<font color="#0000FF"><gsweb name="SessionMemoryValueCell"></gsweb></font>
</td>
</tr>
</gsweb>
</table>
</td></tr></table>
</center>
<HR>
<BR>
<A HREF="http://www.sbuilders.com"><GSWEB name=PoweredByImage></GSWEB></A>
</CENTER>
</GSWEB>
</BODY>
</HTML>
<br>
<gsweb name="ISLASTUSER">
Response Descriptions For Last User :
<br>
<center>
<table border="2" cellpadding="4" cellspacing="2" bgcolor="#d0d0d0" width="80%">
<gsweb name="SessionStatsRepetition">
<tr>
<td>
<font color="#0000FF"><gsweb name="SessionStatsField"></gsweb></font>
</td>
</tr>
</gsweb>
</table>
</center>
</gsweb><hr>
<center>
<table border="2" cellpadding="4" cellspacing="2" width="80%" bgcolor="#d0d0d0">
<tr><TD COLSPAN="5" align="CENTER" BGcolor="#b0b0b0">
<font SIZE="+1"><b> Component Action Statistics </b></font>
</td></tr>
<TR align="CENTER" bgcolor="#d6d8df">
<TD WIDTH = "20%">Name</td>
<TD WIDTH = "50%">Served</td>
<TD WIDTH = "10%">Min</td>
<TD WIDTH = "10%">Avg</td>
<TD WIDTH = "10%">Max</td>
</tr>
<gsweb name="PagesRepetition">
<tr>
<td align="CENTER"><font color="#0000FF"><gsweb name="PageName"></gsweb></font></td>
<td align=left><gsweb name="PageCountBar"></gsweb></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="PageMin"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><b><gsweb name="PageAvg"></gsweb></b></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="PageMax"></gsweb></font></td>
</tr>
</gsweb>
</table>
</center>
<hr>
<center>
<table border="2" cellpadding="4" cellspacing="2" width="80%" bgcolor="#d0d0d0">
<tr><TD COLSPAN="5" align="CENTER" BGcolor="#b0b0b0">
<font SIZE="+1"><b> Direct Action Statistics </b></font>
</td></tr>
<TR align="CENTER" bgcolor="#d6d8df">
<TD width="20%">Name</td>
<TD width="50%">Served</td>
<TD width="10%">Min</td>
<TD width="10%">Avg</td>
<TD width="10%">Max</td>
</tr>
<gsweb name="ActionsRepetition">
<tr>
<td align="CENTER"><font color="#0000FF"><gsweb name="ActionName"></gsweb></font></td>
<td align=left><gsweb name="ActionBar"></gsweb></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="ActionMin"></gsweb></font></td>
<td align="CENTER"><font color="#0000FF"><b><gsweb name="ActionAvg"></gsweb></b></font></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="ActionMax"></gsweb></font></td>
</tr>
</gsweb>
</table>
</center>
<hr>
<center>
<table border="2" cellPadding="4" cellspacing="2" width="80%" bgcolor="#d0d0d0">
<tr><TD COLSPAN="3" align="CENTER" BGcolor="#b0b0b0">
<font SIZE="+1"><b>Detailed Statistics</b></font>
</td></tr>
<TR align="CENTER" bgcolor="#d6d8df">
<TD width="40%">Response Description</td>
<TD width="50%">Percent Of Total</td>
<TD width="10%">Served</td>
</tr>
<gsweb name="DetailsRepetition">
<tr>
<td align="CENTER"><font color="#0000FF"><gsweb name="DetailName"></gsweb></font></td>
<td align=left><gsweb name="BAR_DETAILS"></gsweb></td>
<td align="CENTER"><font color="#0000FF"><gsweb name="DetailCount"></gsweb></font></td>
</tr>
</gsweb>
</table>
<br>
<gsweb name="ISLOGPATH">
<hr>
<br>
Statistics Details Saved In Common Log Format In File <font color="#0000FF"><gsweb name="LOGPATH"></gsweb></font></gsweb>
<hr>
<br>
<A HREF="http://www.gnustepweb.org"><gsweb name="PoweredByImage"></gsweb></A>
</center>
</gsweb>
</body>
</html>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1,9 +1,9 @@
<GSWEB name=TableContainer>
<GSWEB name=RowRepetition>
<GSWEB name=TableRow>
<GSWEB name=ColRepetition>
<GSWEB name=CellContainer><GSWEB name=Content></GSWEB></GSWEB>
</GSWEB>
</GSWEB>
</GSWEB>
</GSWEB>
<gsweb name="TableContainer">
<gsweb name="RowRepetition">
<gsweb name="TableRow">
<gsweb name="ColRepetition">
<gsweb name="CellContainer"><gsweb name="Content"></gsweb></gsweb>
</gsweb>
</gsweb>
</gsweb>
</gsweb>

View file

@ -0,0 +1,4 @@
{
"GSWeb Version" = "1.0";
encoding = NSISOLatin1StringEncoding;
}

View file

@ -1 +1 @@
<GSWEB name=SomethingDisplayed><GSWEB name=String></GSWEB></GSWEB><GSWEB name=NothingDisplayed>&nbsp</GSWEB>
<gsweb name="SomethingDisplayed"><gsweb name="String"></gsweb></gsweb><gsweb name="NothingDisplayed">&nbsp</gsweb>

View file

@ -36,7 +36,11 @@
ADDITIONAL_CPPFLAGS =
# Additional flags to pass to the Objective-C compiler
ADDITIONAL_OBJCFLAGS =
ifeq ($(GDL2), yes)
ADDITIONAL_OBJCFLAGS = -DUSE_BUILTIN -DGDL2
else
ADDITIONAL_OBJCFLAGS = -DUSE_BUILTIN
endif
# Additional flags to pass to the C compiler
ADDITIONAL_CFLAGS =

View file

@ -1,30 +1,30 @@
<GSWEB NAME=Form>
<GSWEB NAME=CurrentDate></GSWEB>
<CENTER>
<GSWEB NAME=MessageConditional>
<B><GSWEB NAME=Message></GSWEB><BR></B>
</GSWEB>
<TABLE BORDER=1>
<TR>
<TD>
<TABLE BORDER=0>
<TR>
<TD ALIGN=RIGHT>Nom utilisateur:</TD>
<TD><GSWEB NAME=User></GSWEB></TD>
</TR>
<TR>
<TD ALIGN=RIGHT>Mot de Passe:</TD>
<TD><GSWEB NAME=Password></GSWEB></TD>
</TR>
<TR>
<TD COLSPAN=2 ALIGN=CENTER>
<GSWEB NAME=Submit></GSWEB>
<GSWEB NAME=Reset></GSWEB>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</CENTER>
</GSWEB>
<gsweb name="Form">
<gsweb name="CurrentDate"></gsweb>
<center>
<gsweb name="MessageConditional">
<b><gsweb name="Message"></gsweb><br></b>
</gsweb>
<table border="1">
<tr>
<td>
<table border="0">
<tr>
<td align="RIGHT">Nom utilisateur:</td>
<td><gsweb name="User"></gsweb></td>
</tr>
<tr>
<td align="RIGHT">Mot de Passe:</td>
<td><gsweb name="Password"></gsweb></td>
</tr>
<tr>
<TD COLSPAN="2" align="CENTER">
<gsweb name="Submit"></gsweb>
<gsweb name="Reset"></gsweb>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</gsweb>

View file

@ -1,8 +1,8 @@
<GSWEB NAME=Form>
<GSWEB NAME=ViewCondition>
<GSWEB NAME=FileLink></GSWEB>
</GSWEB>
<GSWEB NAME=UploadFile></GSWEB><BR>
<GSWEB NAME=SubmitButton></GSWEB>
<GSWEB NAME=DeleteButton></GSWEB>
</GSWEB>
<gsweb name="Form">
<gsweb name="ViewCondition">
<gsweb name="FileLink"></gsweb>
</gsweb>
<gsweb name="UploadFile"></gsweb><br>
<gsweb name="SubmitButton"></gsweb>
<gsweb name="DeleteButton"></gsweb>
</gsweb>

View file

@ -1,30 +1,30 @@
<GSWEB NAME=Form>
<GSWEB NAME=CurrentDate></GSWEB>
<CENTER>
<GSWEB NAME=MessageConditional>
<B><GSWEB NAME=Message></GSWEB><BR></B>
</GSWEB>
<TABLE BORDER=1>
<TR>
<TD>
<TABLE BORDER=0>
<TR>
<TD ALIGN=RIGHT>User:</TD>
<TD><GSWEB NAME=User></GSWEB></TD>
</TR>
<TR>
<TD ALIGN=RIGHT>Password:</TD>
<TD><GSWEB NAME=Password></GSWEB></TD>
</TR>
<TR>
<TD COLSPAN=2 ALIGN=CENTER>
<GSWEB NAME=Submit></GSWEB>
<GSWEB NAME=Reset></GSWEB>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</CENTER>
</GSWEB>
<gsweb name="Form">
<gsweb name="CurrentDate"></gsweb>
<center>
<gsweb name="MessageConditional">
<b><gsweb name="Message"></gsweb><br></b>
</gsweb>
<table border="1">
<tr>
<td>
<table border="0">
<tr>
<td align="RIGHT">User:</td>
<td><gsweb name="User"></gsweb></td>
</tr>
<tr>
<td align="RIGHT">Password:</td>
<td><gsweb name="Password"></gsweb></td>
</tr>
<tr>
<TD COLSPAN="2" align="CENTER">
<gsweb name="Submit"></gsweb>
<gsweb name="Reset"></gsweb>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</gsweb>

View file

@ -1,12 +1,12 @@
<GSWEB NAME=Form>
<CENTER>
<GSWEB NAME=MessageConditional>
<P><B><FONT COLOR=red><GSWEB NAME=ErrorMessage></GSWEB></FONT></B><BR></P><P><BR></P>
</GSWEB>
</CENTER>
<GSWEB NAME=Form>
<GSWEB NAME=Content></GSWEB>
<GSWEB NAME=Submit></GSWEB>
<GSWEB NAME=Reset></GSWEB>
</GSWEB>
</GSWEB>
<gsweb name="Form">
<center>
<gsweb name="MessageConditional">
<p><b><font color="red"><gsweb name="ErrorMessage"></gsweb></font></b><br></P><p><br></P>
</gsweb>
</center>
<gsweb name="Form">
<gsweb name="Content"></gsweb>
<gsweb name="Submit"></gsweb>
<gsweb name="Reset"></gsweb>
</gsweb>
</gsweb>

View file

@ -1,11 +1,11 @@
<TABLE BORDER=0>
<TR>
<TD><GSWEB NAME=TabBarLeftBorder></GSWEB></TD>
<GSWEB NAME=Repetition>
<TD><GSWEB NAME=TabLeftBorder></GSWEB></TD>
<TD><GSWEB NAME=Tab><GSWEB NAME=TabImageCondition><GSWEB NAME=TabImage></GSWEB></GSWEB><GSWEB NAME=TabTextCondition><GSWEB NAME=TabText></GSWEB></GSWEB></GSWEB></TD>
<TD><GSWEB NAME=TabRightBorder></GSWEB></TD>
</GSWEB>
<TD><GSWEB NAME=TabBarLeftBorder></GSWEB></TD>
</TR>
</TABLE>
<table border="0">
<tr>
<td><gsweb name="TabBarLeftBorder"></gsweb></td>
<gsweb name="Repetition">
<td><gsweb name="TabLeftBorder"></gsweb></td>
<td><gsweb name="Tab"><gsweb name="TabImageCondition"><gsweb name="TabImage"></gsweb></gsweb><gsweb name="TabTextCondition"><gsweb name="TabText"></gsweb></gsweb></gsweb></td>
<td><gsweb name="TabRightBorder"></gsweb></td>
</gsweb>
<td><gsweb name="TabBarLeftBorder"></gsweb></td>
</tr>
</table>

View file

@ -1,7 +1,7 @@
<GSWEB NAME=ValidationFailureCondition>
<FONT COLOR="#FF0000">
<GSWEB NAME=ValidationFailureRepetition>
<GSWEB NAME=ValidationFailure></GSWEB><BR>
</GSWEB>
</FONT>
</GSWEB>
<gsweb name="ValidationFailureCondition">
<font color="#FF0000">
<gsweb name="ValidationFailureRepetition">
<gsweb name="ValidationFailure"></gsweb><br>
</gsweb>
</font>
</gsweb>

View file

@ -36,7 +36,11 @@
ADDITIONAL_CPPFLAGS =
# Additional flags to pass to the Objective-C compiler
ADDITIONAL_OBJCFLAGS =
ifeq ($(GDL2), yes)
ADDITIONAL_OBJCFLAGS = -DUSE_BUILTIN -DGDL2
else
ADDITIONAL_OBJCFLAGS = -DUSE_BUILTIN
endif
# Additional flags to pass to the C compiler
ADDITIONAL_CFLAGS =

View file

@ -0,0 +1,196 @@
<!-- 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 "&#160;"> <!-- no-break space = non-breaking space,
U+00A0 ISOnum -->
<!ENTITY iexcl "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
<!ENTITY cent "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
<!ENTITY pound "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
<!ENTITY yen "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
U+00A6 ISOnum -->
<!ENTITY sect "&#167;"> <!-- section sign, U+00A7 ISOnum -->
<!ENTITY uml "&#168;"> <!-- diaeresis = spacing diaeresis,
U+00A8 ISOdia -->
<!ENTITY copy "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
<!ENTITY ordf "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
<!ENTITY laquo "&#171;"> <!-- left-pointing double angle quotation mark
= left pointing guillemet, U+00AB ISOnum -->
<!ENTITY not "&#172;"> <!-- not sign = discretionary hyphen,
U+00AC ISOnum -->
<!ENTITY shy "&#173;"> <!-- soft hyphen = discretionary hyphen,
U+00AD ISOnum -->
<!ENTITY reg "&#174;"> <!-- registered sign = registered trade mark sign,
U+00AE ISOnum -->
<!ENTITY macr "&#175;"> <!-- macron = spacing macron = overline
= APL overbar, U+00AF ISOdia -->
<!ENTITY deg "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
U+00B1 ISOnum -->
<!ENTITY sup2 "&#178;"> <!-- superscript two = superscript digit two
= squared, U+00B2 ISOnum -->
<!ENTITY sup3 "&#179;"> <!-- superscript three = superscript digit three
= cubed, U+00B3 ISOnum -->
<!ENTITY acute "&#180;"> <!-- acute accent = spacing acute,
U+00B4 ISOdia -->
<!ENTITY micro "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
<!ENTITY para "&#182;"> <!-- pilcrow sign = paragraph sign,
U+00B6 ISOnum -->
<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
= Greek middle dot, U+00B7 ISOnum -->
<!ENTITY cedil "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
<!ENTITY sup1 "&#185;"> <!-- superscript one = superscript digit one,
U+00B9 ISOnum -->
<!ENTITY ordm "&#186;"> <!-- masculine ordinal indicator,
U+00BA ISOnum -->
<!ENTITY raquo "&#187;"> <!-- right-pointing double angle quotation mark
= right pointing guillemet, U+00BB ISOnum -->
<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
= fraction one quarter, U+00BC ISOnum -->
<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
= fraction one half, U+00BD ISOnum -->
<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
= fraction three quarters, U+00BE ISOnum -->
<!ENTITY iquest "&#191;"> <!-- inverted question mark
= turned question mark, U+00BF ISOnum -->
<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
= latin capital letter A grave,
U+00C0 ISOlat1 -->
<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
U+00C1 ISOlat1 -->
<!ENTITY Acirc "&#194;"> <!-- latin capital letter A with circumflex,
U+00C2 ISOlat1 -->
<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
U+00C3 ISOlat1 -->
<!ENTITY Auml "&#196;"> <!-- latin capital letter A with diaeresis,
U+00C4 ISOlat1 -->
<!ENTITY Aring "&#197;"> <!-- latin capital letter A with ring above
= latin capital letter A ring,
U+00C5 ISOlat1 -->
<!ENTITY AElig "&#198;"> <!-- latin capital letter AE
= latin capital ligature AE,
U+00C6 ISOlat1 -->
<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
U+00C7 ISOlat1 -->
<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
U+00C8 ISOlat1 -->
<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
U+00C9 ISOlat1 -->
<!ENTITY Ecirc "&#202;"> <!-- latin capital letter E with circumflex,
U+00CA ISOlat1 -->
<!ENTITY Euml "&#203;"> <!-- latin capital letter E with diaeresis,
U+00CB ISOlat1 -->
<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
U+00CC ISOlat1 -->
<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
U+00CD ISOlat1 -->
<!ENTITY Icirc "&#206;"> <!-- latin capital letter I with circumflex,
U+00CE ISOlat1 -->
<!ENTITY Iuml "&#207;"> <!-- latin capital letter I with diaeresis,
U+00CF ISOlat1 -->
<!ENTITY ETH "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
U+00D1 ISOlat1 -->
<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
U+00D2 ISOlat1 -->
<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
U+00D3 ISOlat1 -->
<!ENTITY Ocirc "&#212;"> <!-- latin capital letter O with circumflex,
U+00D4 ISOlat1 -->
<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
U+00D5 ISOlat1 -->
<!ENTITY Ouml "&#214;"> <!-- latin capital letter O with diaeresis,
U+00D6 ISOlat1 -->
<!ENTITY times "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
= latin capital letter O slash,
U+00D8 ISOlat1 -->
<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
U+00D9 ISOlat1 -->
<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
U+00DA ISOlat1 -->
<!ENTITY Ucirc "&#219;"> <!-- latin capital letter U with circumflex,
U+00DB ISOlat1 -->
<!ENTITY Uuml "&#220;"> <!-- latin capital letter U with diaeresis,
U+00DC ISOlat1 -->
<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
U+00DD ISOlat1 -->
<!ENTITY THORN "&#222;"> <!-- latin capital letter THORN,
U+00DE ISOlat1 -->
<!ENTITY szlig "&#223;"> <!-- latin small letter sharp s = ess-zed,
U+00DF ISOlat1 -->
<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
= latin small letter a grave,
U+00E0 ISOlat1 -->
<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
U+00E1 ISOlat1 -->
<!ENTITY acirc "&#226;"> <!-- latin small letter a with circumflex,
U+00E2 ISOlat1 -->
<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
U+00E3 ISOlat1 -->
<!ENTITY auml "&#228;"> <!-- latin small letter a with diaeresis,
U+00E4 ISOlat1 -->
<!ENTITY aring "&#229;"> <!-- latin small letter a with ring above
= latin small letter a ring,
U+00E5 ISOlat1 -->
<!ENTITY aelig "&#230;"> <!-- latin small letter ae
= latin small ligature ae, U+00E6 ISOlat1 -->
<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
U+00E7 ISOlat1 -->
<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
U+00E8 ISOlat1 -->
<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
U+00E9 ISOlat1 -->
<!ENTITY ecirc "&#234;"> <!-- latin small letter e with circumflex,
U+00EA ISOlat1 -->
<!ENTITY euml "&#235;"> <!-- latin small letter e with diaeresis,
U+00EB ISOlat1 -->
<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
U+00EC ISOlat1 -->
<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
U+00ED ISOlat1 -->
<!ENTITY icirc "&#238;"> <!-- latin small letter i with circumflex,
U+00EE ISOlat1 -->
<!ENTITY iuml "&#239;"> <!-- latin small letter i with diaeresis,
U+00EF ISOlat1 -->
<!ENTITY eth "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
U+00F1 ISOlat1 -->
<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
U+00F2 ISOlat1 -->
<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
U+00F3 ISOlat1 -->
<!ENTITY ocirc "&#244;"> <!-- latin small letter o with circumflex,
U+00F4 ISOlat1 -->
<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
U+00F5 ISOlat1 -->
<!ENTITY ouml "&#246;"> <!-- latin small letter o with diaeresis,
U+00F6 ISOlat1 -->
<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
= latin small letter o slash,
U+00F8 ISOlat1 -->
<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
U+00F9 ISOlat1 -->
<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
U+00FA ISOlat1 -->
<!ENTITY ucirc "&#251;"> <!-- latin small letter u with circumflex,
U+00FB ISOlat1 -->
<!ENTITY uuml "&#252;"> <!-- latin small letter u with diaeresis,
U+00FC ISOlat1 -->
<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
U+00FD ISOlat1 -->
<!ENTITY thorn "&#254;"> <!-- latin small letter thorn with,
U+00FE ISOlat1 -->
<!ENTITY yuml "&#255;"> <!-- latin small letter y with diaeresis,
U+00FF ISOlat1 -->

View file

@ -0,0 +1,79 @@
<!-- Special characters for HTML -->
<!-- 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 "&#34;"> <!-- quotation mark = APL quote,
U+0022 ISOnum -->
<!ENTITY amp "&#38;#38;"> <!-- ampersand, U+0026 ISOnum -->
<!ENTITY lt "&#38;#60;"> <!-- less-than sign, U+003C ISOnum -->
<!ENTITY gt "&#62;"> <!-- greater-than sign, U+003E ISOnum -->
<!ENTITY apos "&#39;"> <!-- apostrophe mark, U+0027 ISOnum -->
<!-- Latin Extended-A -->
<!ENTITY OElig "&#338;"> <!-- latin capital ligature OE,
U+0152 ISOlat2 -->
<!ENTITY oelig "&#339;"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
<!-- ligature is a misnomer, this is a separate character in some languages -->
<!ENTITY Scaron "&#352;"> <!-- latin capital letter S with caron,
U+0160 ISOlat2 -->
<!ENTITY scaron "&#353;"> <!-- latin small letter s with caron,
U+0161 ISOlat2 -->
<!ENTITY Yuml "&#376;"> <!-- latin capital letter Y with diaeresis,
U+0178 ISOlat2 -->
<!-- Spacing Modifier Letters -->
<!ENTITY circ "&#710;"> <!-- modifier letter circumflex accent,
U+02C6 ISOpub -->
<!ENTITY tilde "&#732;"> <!-- small tilde, U+02DC ISOdia -->
<!-- General Punctuation -->
<!ENTITY ensp "&#8194;"> <!-- en space, U+2002 ISOpub -->
<!ENTITY emsp "&#8195;"> <!-- em space, U+2003 ISOpub -->
<!ENTITY thinsp "&#8201;"> <!-- thin space, U+2009 ISOpub -->
<!ENTITY zwnj "&#8204;"> <!-- zero width non-joiner,
U+200C NEW RFC 2070 -->
<!ENTITY zwj "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
<!ENTITY lrm "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
<!ENTITY rlm "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
<!ENTITY ndash "&#8211;"> <!-- en dash, U+2013 ISOpub -->
<!ENTITY mdash "&#8212;"> <!-- em dash, U+2014 ISOpub -->
<!ENTITY lsquo "&#8216;"> <!-- left single quotation mark,
U+2018 ISOnum -->
<!ENTITY rsquo "&#8217;"> <!-- right single quotation mark,
U+2019 ISOnum -->
<!ENTITY sbquo "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
<!ENTITY ldquo "&#8220;"> <!-- left double quotation mark,
U+201C ISOnum -->
<!ENTITY rdquo "&#8221;"> <!-- right double quotation mark,
U+201D ISOnum -->
<!ENTITY bdquo "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
<!ENTITY dagger "&#8224;"> <!-- dagger, U+2020 ISOpub -->
<!ENTITY Dagger "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
<!ENTITY permil "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
<!ENTITY lsaquo "&#8249;"> <!-- single left-pointing angle quotation mark,
U+2039 ISO proposed -->
<!-- lsaquo is proposed but not yet ISO standardized -->
<!ENTITY rsaquo "&#8250;"> <!-- single right-pointing angle quotation mark,
U+203A ISO proposed -->
<!-- rsaquo is proposed but not yet ISO standardized -->
<!ENTITY euro "&#8364;"> <!-- euro sign, U+20AC NEW -->

View file

@ -0,0 +1,242 @@
<!-- Mathematical, Greek and Symbolic characters for HTML -->
<!-- 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 "&#402;"> <!-- latin small f with hook = function
= florin, U+0192 ISOtech -->
<!-- Greek -->
<!ENTITY Alpha "&#913;"> <!-- greek capital letter alpha, U+0391 -->
<!ENTITY Beta "&#914;"> <!-- greek capital letter beta, U+0392 -->
<!ENTITY Gamma "&#915;"> <!-- greek capital letter gamma,
U+0393 ISOgrk3 -->
<!ENTITY Delta "&#916;"> <!-- greek capital letter delta,
U+0394 ISOgrk3 -->
<!ENTITY Epsilon "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
<!ENTITY Zeta "&#918;"> <!-- greek capital letter zeta, U+0396 -->
<!ENTITY Eta "&#919;"> <!-- greek capital letter eta, U+0397 -->
<!ENTITY Theta "&#920;"> <!-- greek capital letter theta,
U+0398 ISOgrk3 -->
<!ENTITY Iota "&#921;"> <!-- greek capital letter iota, U+0399 -->
<!ENTITY Kappa "&#922;"> <!-- greek capital letter kappa, U+039A -->
<!ENTITY Lambda "&#923;"> <!-- greek capital letter lambda,
U+039B ISOgrk3 -->
<!ENTITY Mu "&#924;"> <!-- greek capital letter mu, U+039C -->
<!ENTITY Nu "&#925;"> <!-- greek capital letter nu, U+039D -->
<!ENTITY Xi "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
<!ENTITY Omicron "&#927;"> <!-- greek capital letter omicron, U+039F -->
<!ENTITY Pi "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
<!ENTITY Rho "&#929;"> <!-- greek capital letter rho, U+03A1 -->
<!-- there is no Sigmaf, and no U+03A2 character either -->
<!ENTITY Sigma "&#931;"> <!-- greek capital letter sigma,
U+03A3 ISOgrk3 -->
<!ENTITY Tau "&#932;"> <!-- greek capital letter tau, U+03A4 -->
<!ENTITY Upsilon "&#933;"> <!-- greek capital letter upsilon,
U+03A5 ISOgrk3 -->
<!ENTITY Phi "&#934;"> <!-- greek capital letter phi,
U+03A6 ISOgrk3 -->
<!ENTITY Chi "&#935;"> <!-- greek capital letter chi, U+03A7 -->
<!ENTITY Psi "&#936;"> <!-- greek capital letter psi,
U+03A8 ISOgrk3 -->
<!ENTITY Omega "&#937;"> <!-- greek capital letter omega,
U+03A9 ISOgrk3 -->
<!ENTITY alpha "&#945;"> <!-- greek small letter alpha,
U+03B1 ISOgrk3 -->
<!ENTITY beta "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
<!ENTITY gamma "&#947;"> <!-- greek small letter gamma,
U+03B3 ISOgrk3 -->
<!ENTITY delta "&#948;"> <!-- greek small letter delta,
U+03B4 ISOgrk3 -->
<!ENTITY epsilon "&#949;"> <!-- greek small letter epsilon,
U+03B5 ISOgrk3 -->
<!ENTITY zeta "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
<!ENTITY eta "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
<!ENTITY theta "&#952;"> <!-- greek small letter theta,
U+03B8 ISOgrk3 -->
<!ENTITY iota "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
<!ENTITY kappa "&#954;"> <!-- greek small letter kappa,
U+03BA ISOgrk3 -->
<!ENTITY lambda "&#955;"> <!-- greek small letter lambda,
U+03BB ISOgrk3 -->
<!ENTITY mu "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
<!ENTITY nu "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
<!ENTITY xi "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
<!ENTITY omicron "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
<!ENTITY pi "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
<!ENTITY rho "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
<!ENTITY sigmaf "&#962;"> <!-- greek small letter final sigma,
U+03C2 ISOgrk3 -->
<!ENTITY sigma "&#963;"> <!-- greek small letter sigma,
U+03C3 ISOgrk3 -->
<!ENTITY tau "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
<!ENTITY upsilon "&#965;"> <!-- greek small letter upsilon,
U+03C5 ISOgrk3 -->
<!ENTITY phi "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
<!ENTITY chi "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
<!ENTITY psi "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
<!ENTITY omega "&#969;"> <!-- greek small letter omega,
U+03C9 ISOgrk3 -->
<!ENTITY thetasym "&#977;"> <!-- greek small letter theta symbol,
U+03D1 NEW -->
<!ENTITY upsih "&#978;"> <!-- greek upsilon with hook symbol,
U+03D2 NEW -->
<!ENTITY piv "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
<!-- General Punctuation -->
<!ENTITY bull "&#8226;"> <!-- bullet = black small circle,
U+2022 ISOpub -->
<!-- bullet is NOT the same as bullet operator, U+2219 -->
<!ENTITY hellip "&#8230;"> <!-- horizontal ellipsis = three dot leader,
U+2026 ISOpub -->
<!ENTITY prime "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
<!ENTITY Prime "&#8243;"> <!-- double prime = seconds = inches,
U+2033 ISOtech -->
<!ENTITY oline "&#8254;"> <!-- overline = spacing overscore,
U+203E NEW -->
<!ENTITY frasl "&#8260;"> <!-- fraction slash, U+2044 NEW -->
<!-- Letterlike Symbols -->
<!ENTITY weierp "&#8472;"> <!-- script capital P = power set
= Weierstrass p, U+2118 ISOamso -->
<!ENTITY image "&#8465;"> <!-- blackletter capital I = imaginary part,
U+2111 ISOamso -->
<!ENTITY real "&#8476;"> <!-- blackletter capital R = real part symbol,
U+211C ISOamso -->
<!ENTITY trade "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
<!ENTITY alefsym "&#8501;"> <!-- 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 "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
<!ENTITY uarr "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
<!ENTITY rarr "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
<!ENTITY darr "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
<!ENTITY harr "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
<!ENTITY crarr "&#8629;"> <!-- downwards arrow with corner leftwards
= carriage return, U+21B5 NEW -->
<!ENTITY lArr "&#8656;"> <!-- 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 "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
<!ENTITY rArr "&#8658;"> <!-- 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 "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
<!ENTITY hArr "&#8660;"> <!-- left right double arrow,
U+21D4 ISOamsa -->
<!-- Mathematical Operators -->
<!ENTITY forall "&#8704;"> <!-- for all, U+2200 ISOtech -->
<!ENTITY part "&#8706;"> <!-- partial differential, U+2202 ISOtech -->
<!ENTITY exist "&#8707;"> <!-- there exists, U+2203 ISOtech -->
<!ENTITY empty "&#8709;"> <!-- empty set = null set = diameter,
U+2205 ISOamso -->
<!ENTITY nabla "&#8711;"> <!-- nabla = backward difference,
U+2207 ISOtech -->
<!ENTITY isin "&#8712;"> <!-- element of, U+2208 ISOtech -->
<!ENTITY notin "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
<!ENTITY ni "&#8715;"> <!-- contains as member, U+220B ISOtech -->
<!-- should there be a more memorable name than 'ni'? -->
<!ENTITY prod "&#8719;"> <!-- 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 "&#8721;"> <!-- n-ary sumation, 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 "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
<!ENTITY lowast "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
<!ENTITY radic "&#8730;"> <!-- square root = radical sign,
U+221A ISOtech -->
<!ENTITY prop "&#8733;"> <!-- proportional to, U+221D ISOtech -->
<!ENTITY infin "&#8734;"> <!-- infinity, U+221E ISOtech -->
<!ENTITY ang "&#8736;"> <!-- angle, U+2220 ISOamso -->
<!ENTITY and "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
<!ENTITY or "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
<!ENTITY cap "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
<!ENTITY cup "&#8746;"> <!-- union = cup, U+222A ISOtech -->
<!ENTITY int "&#8747;"> <!-- integral, U+222B ISOtech -->
<!ENTITY there4 "&#8756;"> <!-- therefore, U+2234 ISOtech -->
<!ENTITY sim "&#8764;"> <!-- 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 "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
<!ENTITY asymp "&#8776;"> <!-- almost equal to = asymptotic to,
U+2248 ISOamsr -->
<!ENTITY ne "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
<!ENTITY equiv "&#8801;"> <!-- identical to, U+2261 ISOtech -->
<!ENTITY le "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
<!ENTITY ge "&#8805;"> <!-- greater-than or equal to,
U+2265 ISOtech -->
<!ENTITY sub "&#8834;"> <!-- subset of, U+2282 ISOtech -->
<!ENTITY sup "&#8835;"> <!-- superset of, U+2283 ISOtech -->
<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
font encoding and is not included. Should it be, for symmetry?
It is in ISOamsn -->
<!ENTITY nsub "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
<!ENTITY sube "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
<!ENTITY supe "&#8839;"> <!-- superset of or equal to,
U+2287 ISOtech -->
<!ENTITY oplus "&#8853;"> <!-- circled plus = direct sum,
U+2295 ISOamsb -->
<!ENTITY otimes "&#8855;"> <!-- circled times = vector product,
U+2297 ISOamsb -->
<!ENTITY perp "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
U+22A5 ISOtech -->
<!ENTITY sdot "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
<!-- dot operator is NOT the same character as U+00B7 middle dot -->
<!-- Miscellaneous Technical -->
<!ENTITY lceil "&#8968;"> <!-- left ceiling = apl upstile,
U+2308 ISOamsc -->
<!ENTITY rceil "&#8969;"> <!-- right ceiling, U+2309 ISOamsc -->
<!ENTITY lfloor "&#8970;"> <!-- left floor = apl downstile,
U+230A ISOamsc -->
<!ENTITY rfloor "&#8971;"> <!-- right floor, U+230B ISOamsc -->
<!ENTITY lang "&#9001;"> <!-- left-pointing angle bracket = bra,
U+2329 ISOtech -->
<!-- lang is NOT the same character as U+003C 'less than'
or U+2039 'single left-pointing angle quotation mark' -->
<!ENTITY rang "&#9002;"> <!-- right-pointing angle bracket = ket,
U+232A ISOtech -->
<!-- rang is NOT the same character as U+003E 'greater than'
or U+203A 'single right-pointing angle quotation mark' -->
<!-- Geometric Shapes -->
<!ENTITY loz "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
<!-- Miscellaneous Symbols -->
<!ENTITY spades "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
<!-- black here seems to mean filled as opposed to hollow -->
<!ENTITY clubs "&#9827;"> <!-- black club suit = shamrock,
U+2663 ISOpub -->
<!ENTITY hearts "&#9829;"> <!-- black heart suit = valentine,
U+2665 ISOpub -->
<!ENTITY diams "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,988 @@
<!--
Extensible HTML version 1.0 Strict DTD
This is the same as HTML 4.0 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-2000 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 [RFC1766] -->
<!ENTITY % Character "CDATA">
<!-- a single character from [ISO10646] -->
<!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 -->
<!--=================== 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
"br | span | bdo | object | img | map">
<!ENTITY % fontstyle "tt | i | b | big | small">
<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
samp | kbd | var | cite | abbr | acronym">
<!ENTITY % inline.forms "input | select | textarea | label | button">
<!-- these can occur at block or inline level -->
<!ENTITY % misc "ins | del | script | noscript">
<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
<!-- %Inline; covers inline or "text-level" elements -->
<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
<!--================== 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;)*">
<!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
<!ENTITY % pre.content
"(#PCDATA | a | br | span | bdo | map | tt | i | b |
%phrase; | %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;
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;
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;>
<!-- document base URI -->
<!ELEMENT base EMPTY>
<!ATTLIST base
href %URI; #IMPLIED
>
<!-- generic metainformation -->
<!ELEMENT meta EMPTY>
<!ATTLIST meta
%i18n;
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;
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
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;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
accesskey %Character; #IMPLIED
shape %Shape; "rect"
coords %Coords; #IMPLIED
tabindex %Number; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #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;
shape %Shape; "rect"
coords %Coords; #IMPLIED
href %URI; #IMPLIED
nohref (nohref) #IMPLIED
alt %Text; #REQUIRED
tabindex %Number; #IMPLIED
accesskey %Character; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #IMPLIED
>
<!--================ 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;
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
tabindex %Number; #IMPLIED
accesskey %Character; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #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;
name CDATA #IMPLIED
rows %Number; #REQUIRED
cols %Number; #REQUIRED
disabled (disabled) #IMPLIED
readonly (readonly) #IMPLIED
tabindex %Number; #IMPLIED
accesskey %Character; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #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;
name CDATA #IMPLIED
value CDATA #IMPLIED
type (button|submit|reset) "submit"
disabled (disabled) #IMPLIED
tabindex %Number; #IMPLIED
accesskey %Character; #IMPLIED
onfocus %Script; #IMPLIED
onblur %Script; #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
>
<!ENTITY % CAlign "(top|bottom|left|right)">
<!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;
>

File diff suppressed because it is too large Load diff

View file

@ -35,6 +35,18 @@ srcdir = .
# The Bundle to be compiled
GSWBUNDLE_NAME=GSWeb
# DTDs to install
srcDTDDir = DTDs
dstDTDDir = $(GNUSTEP_RESOURCES)/DTDs
DTD_FILES = \
xhtml-lat1.ent \
xhtml-symbol.ent \
xhtml-special.ent \
xhtml1-strict.dtd \
xhtml1-frameset.dtd \
xhtml1-transitional.dtd
# The bundle resource files and directories
GSWeb_RESOURCE_FILES = \
Resources/MIME.plist \
@ -76,18 +88,20 @@ GSWSessionTimeOut.m \
GSWStats.m \
NSNonBlockingFileHandle.m \
GSWTransactionRecord.m \
GSWHTMLParser.m \
GSWHTMLParserExt.m \
GSWHTMLLexer.m \
GSWHTMLAttrLexer.m \
GSWHTMLAttrParser.m \
GSWHTMLAttrParserExt.m \
GSWeb.m \
GSWBundle.m \
NSObject+IVarAccess+PerformSel.m \
NSString+Trimming.m \
NSString+HTML.m \
GSWTemplateParser.m \
GSWTemplateParserANTLR.m \
GSWTemplateParserXML.m \
GSWHTMLParser.m \
GSWHTMLParserExt.m \
GSWHTMLLexer.m \
GSWHTMLAttrLexer.m \
GSWHTMLAttrParser.m \
GSWHTMLAttrParserExt.m \
GSWApplication.m \
GSWAssociation.m \
GSWComponent.m \
@ -218,19 +232,11 @@ GSWForm.h \
GSWFrame.h \
GSWGenericContainer.h \
GSWGenericElement.h \
GSWHTMLAttrLexer.h \
GSWHTMLAttrParser.h \
GSWHTMLAttrParserExt.h \
GSWHTMLAttrTokenTypes.h \
GSWHTMLBareString.h \
GSWHTMLComment.h \
GSWHTMLDynamicElement.h \
GSWHTMLLexer.h \
GSWHTMLParser.h \
GSWHTMLParserExt.h \
GSWHTMLStaticElement.h \
GSWHTMLStaticGroup.h \
GSWHTMLTokenTypes.h \
GSWHTMLURLValuedElement.h \
GSWHiddenField.h \
GSWHyperlink.h \
@ -271,6 +277,16 @@ GSWString.h \
GSWSubmitButton.h \
GSWSwitchComponent.h \
GSWTemplateParser.h \
GSWTemplateParserANTLR.h \
GSWTemplateParserXML.h \
GSWHTMLAttrLexer.h \
GSWHTMLAttrParser.h \
GSWHTMLAttrParserExt.h \
GSWHTMLAttrTokenTypes.h \
GSWHTMLLexer.h \
GSWHTMLParser.h \
GSWHTMLParserExt.h \
GSWHTMLTokenTypes.h \
GSWText.h \
GSWTextField.h \
GSWToggle.h \

View file

@ -26,6 +26,9 @@ static char rcsId[] = "$Id$";
#include <gsweb/GSWeb.framework/GSWeb.h>
#include <extensions/NGReflection.h>
#include <extensions/GarbageCollector.h>
#if GDL2 // GDL2 implementation
#include <EOAccess/EOModelGroup.h>
#endif
#include "stacktrace.h"
#include "attach.h"
@ -1477,6 +1480,8 @@ int GSWApplicationMain(NSString* _applicationClassName,
NSString* _monitorHost=[self _monitorHost];
NSNumber* _workerThreadCount=[[self class]workerThreadCount];
id _proxy=nil;
NSDebugFLLog(@"monitor",@"monitorHost=%@",_monitorHost);
NSDebugFLLog(@"monitor",@"workerThreadCount=%@",_workerThreadCount);
[NSDistantObject setDebug:YES];
remoteMonitorConnection = [NSConnection connectionWithRegisteredName:GSWMonitorServiceName
host:_monitorHost];
@ -2673,7 +2678,9 @@ int GSWApplicationMain(NSString* _applicationClassName,
-(BOOL)printsHTMLParserDiagnostics
{
return [GSWHTMLParser printsDiagnostics];
//FIXME
// return [GSWHTMLParser printsDiagnostics];
return NO;
};
@end
@ -3793,12 +3800,13 @@ int GSWApplicationMain(NSString* _applicationClassName,
//--------------------------------------------------------------------
+(id)defaultModelGroup
{
#if GDL2 // GDL2 implementation
//OK
GSWResourceManager* _resourceManager=[[GSWApplication application] resourceManager];
GSWDeployedBundle* _appProjectBundle=[_resourceManager _appProjectBundle];
NSArray* _allFrameworkProjectBundles=[_resourceManager _allFrameworkProjectBundles];
//return <EOModelGroup
return [EOModelGroup defaultGroup];
#else
LOGClassFnNotImplemented();
return nil;
#endif
};
//--------------------------------------------------------------------

View file

@ -33,10 +33,14 @@
GSWAssociation* item;
GSWAssociation* displayString;
GSWAssociation* selections;
#if !GSWEB_STRICT
GSWAssociation* selectionValues;
#endif
GSWAssociation* selectedValues;
GSWAssociation* size;
GSWAssociation* multiple;
GSWAssociation* escapeHTML;
BOOL autoValue;//??
};
-(void)dealloc;

View file

@ -28,32 +28,96 @@ static char rcsId[] = "$Id$";
//====================================================================
@implementation GSWBrowser
-(void)dealloc
//--------------------------------------------------------------------
-(id)initWithName:(NSString*)name_
associations:(NSDictionary*)associations_
contentElements:(NSArray*)elements_
{
LOGObjectFnNotImplemented(); //TODOFN
//OK
NSMutableDictionary* _associations=nil;
LOGObjectFnStartC("GSWBrowser");
NSDebugMLLog(@"gswdync",@"name_=%@ associations_:%@ elements=%@",name_,associations_,elements_);
_associations=[NSMutableDictionary dictionaryWithDictionary:associations_];
[_associations removeObjectForKey:list__Key];
[_associations removeObjectForKey:item__Key];
[_associations removeObjectForKey:displayString__Key];
[_associations removeObjectForKey:selections__Key];
#if !GSWEB_STRICT
[_associations removeObjectForKey:selectionValues__Key];
#endif
[_associations removeObjectForKey:selectedValues__Key];
[_associations removeObjectForKey:size__Key];
[_associations removeObjectForKey:multiple__Key];
[_associations removeObjectForKey:escapeHTML__Key];
if ((self=[super initWithName:name_
associations:_associations
contentElements:nil]))
{
list=[[associations_ objectForKey:list__Key
withDefaultObject:[list autorelease]] retain];
item=[[associations_ objectForKey:item__Key
withDefaultObject:[item autorelease]] retain];
displayString=[[associations_ objectForKey:displayString__Key
withDefaultObject:[displayString autorelease]] retain];
selections=[[associations_ objectForKey:selection__Key
withDefaultObject:[selections autorelease]] retain];
if (selections && ![selections isValueSettable])
{
//TODO
};
#if !GSWEB_STRICT
selectionValues=[[associations_ objectForKey:selectionValue__Key
withDefaultObject:[selectionValues autorelease]] retain];
if (selectionValues && ![selectionValues isValueSettable])
{
//TODO
};
#endif
selectedValues=[[associations_ objectForKey:selectedValues__Key
withDefaultObject:[selectedValues autorelease]] retain];
size=[[associations_ objectForKey:size__Key
withDefaultObject:[size autorelease]] retain];
multiple=[[associations_ objectForKey:multiple__Key
withDefaultObject:[multiple autorelease]] retain];
escapeHTML=[[associations_ objectForKey:escapeHTML__Key
withDefaultObject:[escapeHTML autorelease]] retain];
};
LOGObjectFnStopC("GSWBrowser");
return self;
};
//--------------------------------------------------------------------
-(id)initWithName:(NSString*)name_
associations:(NSDictionary*)associations_
contentElements:(NSArray*)elements_
-(void)dealloc
{
LOGObjectFnNotImplemented(); //TODOFN
return nil;
DESTROY(list);
DESTROY(item);
DESTROY(displayString);
DESTROY(selections);
#if !GSWEB_STRICT
DESTROY(selectionValues);
#endif
DESTROY(selectedValues);
DESTROY(size);
DESTROY(multiple);
DESTROY(escapeHTML);
[super dealloc];
};
//--------------------------------------------------------------------
-(NSString*)description
{
LOGObjectFnNotImplemented(); //TODOFN
return nil;
return [NSString stringWithFormat:@"<%s %p>",
object_get_class_name(self),
(void*)self];
};
//--------------------------------------------------------------------
-(NSString*)elementName
{
LOGObjectFnNotImplemented(); //TODOFN
return nil;
return @"SELECT";
};
@end
@ -62,29 +126,322 @@ static char rcsId[] = "$Id$";
@implementation GSWBrowser (GSWBrowserA)
-(void)appendToResponse:(GSWResponse*)response_
inContext:(GSWContext*)context_
inContext:(GSWContext*)context_
{
LOGObjectFnNotImplemented(); //TODOFN
//OK
GSWRequest* _request=nil;
BOOL _isFromClientComponent=NO;
GSWComponent* _component=nil;
NSArray* _listValue=nil;
id _selectionsValue=nil;
id _selectedValuesValue=nil;
id _valueValue=nil;
id _itemValue=nil;
id _displayStringValue=nil;
BOOL _escapeHTML=YES;
id _escapeHTMLValue=nil;
BOOL _isMultiple=NO;
int i=0;
BOOL _inOptGroup=NO;
#ifndef ENABLE_OPTGROUP
BOOL _optGroupLabel=NO;
#endif
LOGObjectFnStartC("GSWBrowser");
[self resetAutoValue];
autoValue = NO;
_request=[context_ request];
_isFromClientComponent=[_request isFromClientComponent];
_component=[context_ component];
//TODO: multiple
[super appendToResponse:response_
inContext:context_];
_listValue=[list valueInComponent:_component];
NSDebugMLLog(@"gswdync",@"_listValue=%@",_listValue);
NSAssert3(!_listValue || [_listValue respondsToSelector:@selector(count)],
@"The list (%@) (%@ of class:%@) doesn't respond to 'count'",
list,
_listValue,
[_listValue class]);
_selectionsValue=[selections valueInComponent:_component];
NSDebugMLLog(@"gswdync",@"selections=%@",selections);
NSDebugMLLog(@"gswdync",@"_selectionsValue=%@",_selectionsValue);
_selectedValuesValue=[selectedValues valueInComponent:_component];
NSDebugMLLog(@"gswdync",@"selectedValues=%@",selectedValues);
NSDebugMLLog(@"gswdync",@"_selectedValuesValue=%@",_selectedValuesValue);
if (escapeHTML)
{
_escapeHTMLValue=[escapeHTML valueInComponent:_component];
_escapeHTML=boolValueFor(_escapeHTMLValue);
};
if (multiple)
{
id _multipleValue=nil;
_multipleValue=[multiple valueInComponent:_component];
_isMultiple=boolValueFor(_multipleValue);
};
for(i=0;i<[_listValue count];i++)
{
NSDebugMLLog(@"gswdync",@"_inOptGroup=%s",(_inOptGroup ? "YES" : "NO"));
_itemValue=[_listValue objectAtIndex:i];
if (item)
[item setValue:_itemValue
inComponent:_component];
NSDebugMLLog(@"gswdync",@"_itemValue=%@",_itemValue);
if (_itemValue)
{
NSDebugMLLog(@"gswdync",@"value=%@",value);
_valueValue=[self valueInContext:context_];
NSDebugMLLog(@"gswdync",@"_valueValue=%@",_valueValue);
if (_valueValue)
{
BOOL _isEqual;
NSDebugMLLog0(@"gswdync",@"Adding OPTION");
[response_ _appendContentAsciiString:@"\n<OPTION"];
if (selections)
{
if(value)
_isEqual=SBIsValueIsIn(_valueValue,_selectionsValue);
else
_isEqual=SBIsValueIsIn(_itemValue,_selectionsValue);
if (_isEqual)
{
[response_ appendContentCharacter:' '];
[response_ _appendContentAsciiString:@"selected"];
};
};
if (_isEqual == NO && selectedValues)
{
if(value)
_isEqual=SBIsValueIsIn(_valueValue,_selectedValuesValue);
else
_isEqual=SBIsValueIsIn(_itemValue,_selectedValuesValue);
if (_isEqual)
{
[response_ appendContentCharacter:' '];
[response_ _appendContentAsciiString:@"selected"];
};
};
if (value == nil)
autoValue = YES;
if (_valueValue)
{
[response_ _appendContentAsciiString:@" value=\""];
[response_ _appendContentAsciiString:_valueValue];
[response_ appendContentCharacter:'"'];
};
[response_ appendContentCharacter:'>'];
};
_displayStringValue=nil;
if (displayString)
{
NSDebugMLLog(@"gswdync",@"displayString=%@",displayString);
_displayStringValue=[displayString valueInComponent:_component];
NSDebugMLLog(@"gswdync",@"_displayStringValue=%@",_displayStringValue);
};
if (_displayStringValue)
{
if (!_valueValue)
{
if (_inOptGroup)
{
NSDebugMLLog0(@"gswdync",@"Adding /OPTGROUP");
#ifdef ENABLE_OPTGROUP
[response_ _appendContentAsciiString:@"\n</OPTGROUP>"];
#endif
_inOptGroup=NO;
};
NSDebugMLLog0(@"gswdync",@"Adding OPTGROUP");
#ifdef ENABLE_OPTGROUP
[response_ _appendContentAsciiString:@"\n<OPTGROUP label=\""];
#else
#if 0
[response_ _appendContentAsciiString:@"\n<OPTION>-- "];
_optGroupLabel=YES;
#else
[response_ _appendContentAsciiString:@"\n<OPTION>"];
#endif
_optGroupLabel=YES;
#endif
_inOptGroup=YES;
};
//<OPTGROUP label="PortMaster 3">
if (_escapeHTML)
_displayStringValue=[GSWResponse stringByEscapingHTMLString:_displayStringValue];
NSDebugMLLog(@"gswdync",@"_displayStringValue=%@",_displayStringValue);
#ifndef ENABLE_OPTGROUP
if (_optGroupLabel)
{
_displayStringValue=[NSString stringWithFormat:@"%@ --",_displayStringValue];
};
#endif
[response_ appendContentHTMLString:_displayStringValue];
};
if (_valueValue)
{
//NSDebugMLLog0(@"gswdync",@"Adding /OPTION");
// K2- No /OPTION TAG
//[response_ _appendContentAsciiString:@"</OPTION>"];
}
else
{
NSDebugMLLog0(@"gswdync",@"Adding > or </OPTION>");
#ifdef ENABLE_OPTGROUP
[response_ _appendContentAsciiString:@"\">"];
#else
if (_optGroupLabel)
{
//[response_ _appendContentAsciiString:@"</OPTION>"];
_optGroupLabel=NO;
};
#endif
};
};
};
if (_inOptGroup)
{
#ifdef ENABLE_OPTGROUP
NSDebugMLLog0(@"gswdync",@"Adding /OPTGROUP");
[response_ _appendContentAsciiString:@"\n</OPTGROUP>"];
#endif
_inOptGroup=NO;
};
[response_ _appendContentAsciiString:@"</SELECT>"];
LOGObjectFnStopC("GSWBrowser");
};
//--------------------------------------------------------------------
-(void)takeValuesFromRequest:(GSWRequest*)request_
inContext:(GSWContext*)context_
inContext:(GSWContext*)context_
{
LOGObjectFnNotImplemented(); //TODOFN
//OK
LOGObjectFnStartC("GSWPopUpButton");
[self _slowTakeValuesFromRequest:request_
inContext:context_];
LOGObjectFnStopC("GSWPopUpButton");
};
//--------------------------------------------------------------------
-(void)_slowTakeValuesFromRequest:(GSWRequest*)request_
inContext:(GSWContext*)context_
inContext:(GSWContext*)context_
{
LOGObjectFnNotImplemented(); //TODOFN
//OK
BOOL _disabled=NO;
BOOL _wasFormSubmitted=NO;
LOGObjectFnStartC("GSWPopUpButton");
[self resetAutoValue];
_disabled=[self disabledInContext:context_];
if (!_disabled)
{
_wasFormSubmitted=[context_ _wasFormSubmitted];
if (_wasFormSubmitted)
{
BOOL _isMultiple=NO;
NSArray* _foundValues=nil;
NSMutableArray* _mutableFoundValues=[NSMutableArray array];
GSWComponent* _component=nil;
NSArray* _listValue=nil;
id _valueValue=nil;
id _itemValue=nil;
NSString* _name=nil;
NSArray* _formValues=nil;
id _formValue=nil;
BOOL _found=NO;
int i=0;
_component=[context_ component];
_name=[self nameInContext:context_];
NSDebugMLLog(@"gswdync",@"_name=%@",_name);
if (multiple)
{
id _multipleValue=[multiple valueInComponent:_component];
_isMultiple=boolValueFor(_multipleValue);
};
_formValues=[request_ formValuesForKey:_name];
NSDebugMLLog(@"gswdync",@"_formValues=%@",_formValues);
if (_formValues && [_formValues count])
{
BOOL _isEqual=NO;
_formValue=[_formValues objectAtIndex:0];
NSDebugMLLog(@"gswdync",@"_formValue=%@",_formValue);
_listValue=[list valueInComponent:_component];
NSAssert3(!_listValue || [_listValue respondsToSelector:@selector(count)],
@"The list (%@) (%@ of class:%@) doesn't respond to 'count'",
list,
_listValue,
[_listValue class]);
for(i=0;(!_found || _isMultiple) && i<[_listValue count];i++)
{
_itemValue=[_listValue objectAtIndex:i];
NSDebugMLLog(@"gswdync",@"_itemValue=%@",_itemValue);
NSDebugMLLog(@"gswdync",@"item=%@",item);
if (item)
[item setValue:_itemValue
inComponent:_component];
NSDebugMLLog(@"gswdync",@"value=%@",value);
_valueValue=[self valueInContext:context_];
NSDebugMLLog(@"gswdync",@"_valueValue=%@ [class=%@] _formValue=%@ [class=%@]",
_valueValue,[_valueValue class],
_formValue,[_formValue class]);
_isEqual=SBIsValueIsIn(_valueValue,_formValue);
if (_isEqual)
{
if(autoValue == NO)
_itemValue = _valueValue;
[_mutableFoundValues addObject:_itemValue];
_found=YES;
};
};
};
_foundValues=[NSArray arrayWithArray:_mutableFoundValues];
NSDebugMLLog(@"gswdync",@"_found=%s",(_found ? "YES" : "NO"));
if (selections)
{
#if !GSWEB_STRICT
NS_DURING
{
[selections setValue:_foundValues
inComponent:_component];
};
NS_HANDLER
{
[self handleValidationException:localException
inContext:context_];
}
NS_ENDHANDLER;
#else
[selections setValue:_foundValues
inComponent:_component];
#endif
};
#if !GSWEB_STRICT
if (selectionValues)
{
NS_DURING
{
[selectionValues setValue:_foundValues
inComponent:_component];
};
NS_HANDLER
{
[self handleValidationException:localException
inContext:context_];
}
NS_ENDHANDLER;
};
#endif
};
};
LOGObjectFnStopC("GSWPopUpButton");
};
//--------------------------------------------------------------------
-(void)_fastTakeValuesFromRequest:(GSWRequest*)request_
inContext:(GSWContext*)context_
inContext:(GSWContext*)context_
{
LOGObjectFnNotImplemented(); //TODOFN
};
@ -95,7 +452,7 @@ static char rcsId[] = "$Id$";
//====================================================================
@implementation GSWBrowser (GSWBrowserB)
-(void)appendGSWebObjectsAssociationsToResponse:(GSWResponse*)response_
inContext:(GSWContext*)context_
inContext:(GSWContext*)context_
{
LOGObjectFnNotImplemented(); //TODOFN
};
@ -103,7 +460,7 @@ static char rcsId[] = "$Id$";
//--------------------------------------------------------------------
-(void)appendValueToResponse:(GSWResponse*)response_
inContext:(GSWContext*)context_
inContext:(GSWContext*)context_
{
LOGObjectFnNotImplemented(); //TODOFN
};
@ -115,7 +472,7 @@ static char rcsId[] = "$Id$";
//====================================================================
@implementation GSWBrowser (GSWBrowserC)
-(BOOL)appendStringAtRight:(id)_unkwnon
withMapping:(char*)_mapping
withMapping:(char*)_mapping
{
LOGObjectFnNotImplemented(); //TODOFN
return NO;

View file

@ -25,6 +25,45 @@ static char rcsId[] = "$Id$";
#include <gsweb/GSWeb.framework/GSWeb.h>
//====================================================================
@interface GSWBundleUnarchiverDelegate : NSObject
{
id _object;
}
- (id) unarchiver:(EOKeyValueUnarchiver*)unarchiver
objectForReference:(NSString*)keyPath;
- (id) initWithObject:(id)object;
@end
//====================================================================
@implementation GSWBundleUnarchiverDelegate
//--------------------------------------------------------------------
- (void) dealloc
{
[super dealloc];
};
//--------------------------------------------------------------------
- (id) unarchiver:(EOKeyValueUnarchiver*)unarchiver
objectForReference:(NSString*)keyPath
{
return [_object valueForKeyPath:keyPath];
};
//--------------------------------------------------------------------
- (id) initWithObject:(id)object
{
if ((self=[super init]))
{
_object=object;
};
return self;
};
@end
//====================================================================
@implementation GSWBundle
@ -268,7 +307,7 @@ static char rcsId[] = "$Id$";
//--------------------------------------------------------------------
-(void)initializeObject:(id)object_
fromArchiveNamed:(NSString*)name_
fromArchiveNamed:(NSString*)name_
{
//OK
NSDictionary* _archive=nil;
@ -278,53 +317,90 @@ static char rcsId[] = "$Id$";
//call application _isDynamicLoadingEnabled
//call -- isTerminating
//call -- isCachingEnabled
//call -- isPageRefreshOnBacktrackEnabled//0
_archive=[self archiveNamed:name_];
//Verify
NSDebugMLLog(@"bundles",@"_archive:%@",_archive);
if (_archive)
[self initializeObject:object_
fromArchive:_archive];
[self initializeObject:object_
fromArchive:_archive];
LOGObjectFnStop();
};
//--------------------------------------------------------------------
-(void)initializeObject:(id)object_
fromArchive:(NSDictionary*)archive_
fromArchive:(NSDictionary*)archive_
{
LOGObjectFnStart();
NSDebugMLLog(@"bundles",@"object_:%@",object_);
NSDebugMLLog(@"bundles",@"archive_:%@",archive_);
[self lock];
NS_DURING
{
{
#if !GSWEB_STRICT
{
NSDictionary* _userDictionary=[archive_ objectForKey:@"userDictionary"];
NSDictionary* _userAssociations=[archive_ objectForKey:@"userAssociations"];
NSDictionary* _defaultAssociations=[archive_ objectForKey:@"defaultAssociations"];
NSDebugMLLog(@"bundles",@"_userDictionary:%@",_userDictionary);
NSDebugMLLog(@"bundles",@"_userAssociations:%@",_userAssociations);
NSDebugMLLog(@"bundles",@"_defaultAssociations:%@",_defaultAssociations);
_userAssociations=[_userAssociations dictionaryByReplacingStringsWithAssociations];
NSDebugMLLog(@"bundles",@"_userAssociations:%@",_userAssociations);
_defaultAssociations=[_defaultAssociations dictionaryByReplacingStringsWithAssociations];
NSDebugMLLog(@"bundles",@"_defaultAssociations:%@",_defaultAssociations);
if (_userDictionary && [object_ respondsToSelector:@selector(setUserDictionary:)])
[object_ setUserDictionary:_userDictionary];
if (_userAssociations && [object_ respondsToSelector:@selector(setUserAssociations:)])
[object_ setUserAssociations:_userAssociations];
if (_defaultAssociations && [object_ respondsToSelector:@selector(setDefaultAssociations:)])
[object_ setDefaultAssociations:_defaultAssociations];
};
{
NSDictionary* _userDictionary=[archive_ objectForKey:@"userDictionary"];
NSDictionary* _userAssociations=[archive_ objectForKey:@"userAssociations"];
NSDictionary* _defaultAssociations=[archive_ objectForKey:@"defaultAssociations"];
NSDebugMLLog(@"bundles",@"_userDictionary:%@",_userDictionary);
NSDebugMLLog(@"bundles",@"_userAssociations:%@",_userAssociations);
NSDebugMLLog(@"bundles",@"_defaultAssociations:%@",_defaultAssociations);
_userAssociations=[_userAssociations dictionaryByReplacingStringsWithAssociations];
NSDebugMLLog(@"bundles",@"_userAssociations:%@",_userAssociations);
_defaultAssociations=[_defaultAssociations dictionaryByReplacingStringsWithAssociations];
NSDebugMLLog(@"bundles",@"_defaultAssociations:%@",_defaultAssociations);
if (_userDictionary && [object_ respondsToSelector:@selector(setUserDictionary:)])
[object_ setUserDictionary:_userDictionary];
if (_userAssociations && [object_ respondsToSelector:@selector(setUserAssociations:)])
[object_ setUserAssociations:_userAssociations];
if (_defaultAssociations && [object_ respondsToSelector:@selector(setDefaultAssociations:)])
[object_ setDefaultAssociations:_defaultAssociations];
};
#endif
LOGObjectFnNotImplemented(); //TODOFN
}
#if GDL2 // GDL2 implementation
{
EOKeyValueUnarchiver* unarchiver=nil;
GSWBundleUnarchiverDelegate* bundleDelegate=nil;
NSDictionary* variables=nil;
NSEnumerator* variablesEnum=nil;
id variableName=nil;
NSDebugMLLog(@"bundles",@"archive_:%@",archive_);
unarchiver=[[[EOKeyValueUnarchiver alloc] initWithDictionary:archive_]
autorelease];
NSDebugMLLog(@"bundles",@"unarchiver:%@",unarchiver);
bundleDelegate=[[[GSWBundleUnarchiverDelegate alloc] initWithObject:object_]
autorelease];
NSDebugMLLog(@"bundles",@"bundleDelegate:%@",bundleDelegate);
[unarchiver setDelegate:bundleDelegate];
NSDebugMLLog(@"bundles",@"decodevar");
variables=[unarchiver decodeObjectForKey:@"variables"];
NSDebugMLLog(@"bundles",@"variables:%@",variables);
[unarchiver finishInitializationOfObjects];
[unarchiver awakeObjects];
variablesEnum=[variables keyEnumerator];
while ((variableName = [variablesEnum nextObject]))
{
id variableValue=[variables objectForKey:variableName];
NSDebugMLLog(@"bundles",@"variableName:%@ variableValue:%@",variableName,variableValue);
[object_ takeValue:variableValue
forKey:variableName];
};
};
#else
LOGObjectFnNotImplemented();
#endif
}
NS_HANDLER
{
NSDebugMLLog(@"bundles",@"EXCEPTION:%@ (%@) [%s %d]",localException,[localException reason],__FILE__,__LINE__);
//TODO
[self unlock];
[localException raise];
};
{
NSDebugMLLog(@"bundles",@"EXCEPTION:%@ (%@) [%s %d]",
localException,
[localException reason],
__FILE__,
__LINE__);
//TODO
[self unlock];
[localException raise];
};
NS_ENDHANDLER;
[self unlock];
LOGObjectFnStop();
@ -478,26 +554,36 @@ static char rcsId[] = "$Id$";
if (_absoluteDefinitionPath)
{
//TODO use encoding !
NSDebugMLLog(@"bundles",@"_absoluteDefinitionPath=%@",_absoluteDefinitionPath);
NSDebugMLLog(@"bundles",@"_absoluteDefinitionPath=%@",
_absoluteDefinitionPath);
_pageDefString=[NSString stringWithContentsOfFile:_absoluteDefinitionPath];
};
#ifndef NDEBUG
NS_DURING
#endif
{
_template=[GSWTemplateParser templateNamed:name_
inFrameworkNamed:[self frameworkName]
withHTMLString:_htmlString
htmlPath:_absoluteTemplatePath
declarationString:_pageDefString
languages:languages_
declarationPath:_absoluteDefinitionPath];
NSDebugMLLog(@"bundles",@"GSWTemplateParser on template named %@",
name_);
_template=[GSWTemplateParserXML templateNamed:name_
inFrameworkNamed:[self frameworkName]
withParserClassName:nil
withString:_htmlString
encoding:encoding
fromPath:_absoluteTemplatePath
definitionsString:_pageDefString
languages:languages_
definitionPath:_absoluteDefinitionPath];
}
#ifndef NDEBUG
NS_HANDLER
{
NSDebugMLLog(@"bundles",@"EXCEPTION:%@ (%@) [%s %d]",localException,[localException reason],__FILE__,__LINE__);
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,@"In template Parsing");
NSDebugMLLog(@"bundles",@"EXCEPTION:%@ (%@) [%s %d]",
localException,
[localException reason],
__FILE__,
__LINE__);
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,
@"In template Parsing");
[localException raise];
};
NS_ENDHANDLER;

View file

@ -70,8 +70,11 @@ static char rcsId[] = "$Id$";
LOGObjectFnStart();
NSDebugMLLog(@"gswdync",@"ET=%@ id=%@",[self class],[context_ elementID]);
_component=[context_ component];
NSDebugMLLog(@"gswdync",@"_component=%@",_component);
_childTemplate=[_component _childTemplate];
NSDebugMLLog(@"gswdync",@"_childTemplate=%@",_childTemplate);
_parent=[_component parent];
NSDebugMLLog(@"gswdync",@"_parent=%@",_parent);
[context_ _setCurrentComponent:_parent];
_element=[_childTemplate invokeActionForRequest:request_
inContext:context_];

View file

@ -31,6 +31,7 @@
#define GSWEB_STRICT 0
#define GSWEB_WONAMES 0
#define GSWEB_DEFAULT_HTML_PARSER_CLASS_NAME @"GSWTemplateParserXMLHTML"
#define GSWOPTVALUE_ApplicationBaseURL @"/GSWeb"
#define GSWOPTVALUE_AutoOpenInBrowser @"YES"
#define GSWOPTVALUE_CGIAdaptorURL @"/cgi/GSWeb"

View file

@ -285,6 +285,7 @@ extern id filePath__Key;
extern id pageSetVar__Prefix__Key;
extern id pageSetVars__Key;
extern id selectionValue__Key;
extern id selectionValues__Key;
extern id enabled__Key;
extern id convertHTML__Key;
extern id convertHTMLEntities__Key;
@ -293,6 +294,7 @@ extern id filePath__Key;
extern id imageMapString__Key;
extern id imageMapRegions__Key;
extern id handleValidationException__Key;
extern id selectedValues__Key;
#endif

View file

@ -392,10 +392,12 @@ id filePath__Key = @"filePath";
id pageSetVar__Prefix__Key=@"pageSetVar_";
id pageSetVars__Key=@"pageSetVars";
id selectionValue__Key=@"selectionValue";
id selectionValues__Key=@"selectionValues";
id enabled__Key=@"enabled";
id convertHTML__Key=@"convertHTML";
id convertHTMLEntities__Key=@"convertHTMLEntities";
id imageMapString__Key = @"imageMapString";
id imageMapRegions__Key = @"imageMapRegions";
id handleValidationException__Key = @"handleValidationException";
id selectedValues__Key = @"selectedValues";
#endif

View file

@ -65,25 +65,25 @@
Array of selection indexes
*/
EODataSource *dataSource;
NSMutableArray *allObjects;
NSMutableArray *displayedObjects;
NSMutableArray *selectedObjects;
NSArray *selection;
NSArray *sortOrdering;
EOQualifier *qualifier;
NSArray *localKeys;
NSDictionary *insertedObjectDefaultValues;
NSMutableArray *savedAllObjects;
NSMutableDictionary *queryMatch;
NSMutableDictionary *queryMin;
NSMutableDictionary *queryMax;
NSMutableDictionary *queryOperator;
NSString *defaultStringMatchOperator;
NSString *defaultStringMatchFormat;
NSMutableDictionary *queryBindings;
unsigned numberOfObjectsPerBatch;
unsigned batchIndex;
EODataSource* _dataSource;
NSMutableArray* _allObjects;
NSMutableArray* _displayedObjects;
NSMutableArray* _selectedObjects;
NSArray* _selection;
NSArray* _sortOrdering;
EOQualifier* _qualifier;
NSArray* _localKeys;
NSDictionary* _insertedObjectDefaultValues;
NSMutableArray* _savedAllObjects;
NSMutableDictionary* _queryMatch;
NSMutableDictionary* _queryMin;
NSMutableDictionary*_queryMax;
NSMutableDictionary*_queryOperator;
NSString* _defaultStringMatchOperator;
NSString* _defaultStringMatchFormat;
NSMutableDictionary*_queryBindings;
unsigned _numberOfObjectsPerBatch;
unsigned _batchIndex;
struct {
unsigned int selectFirstObject:1;
unsigned int autoFetch:1;
@ -91,7 +91,7 @@
unsigned int queryMode:1;
unsigned int fetchAll:1;
unsigned int _reserved:27;
} flags;
} _flags;
struct {
unsigned int didChangeDataSource:1;
unsigned int displayArrayForObjects:1;
@ -110,7 +110,7 @@
unsigned int shouldRedisplay:1;
unsigned int shouldRefetchObjects:1;
unsigned int _reserved:16;
} delegateRespondsTo;
} _delegateRespondsTo;
};
- (NSArray *)allObjects;
@ -140,8 +140,11 @@
- (unsigned)indexOfFirstDisplayedObject;
- (unsigned)indexOfLastDisplayedObject;
- (id)init;
-(void)awakeFromKeyValueUnarchiver:(EOKeyValueUnarchiver*)object_;
- (NSMutableDictionary *)inputObjectForQualifier;
- (BOOL)inQueryMode;
-(void)editingContext:(id)editingContext_
presentErrorMessage:(id)msg;
- (id)insert;
- (NSDictionary *)insertedObjectDefaultValues;
- (void)insertObject:object_
@ -192,9 +195,9 @@
- (void)setQualifier:(EOQualifier *)qualifier_;
- (BOOL)setSelectionIndexes:(NSArray *)selection;
- (void)setSelectsFirstObjectAfterFetch:(BOOL)flag;
- (void)setSortOrdering:(NSArray *)orderings;
- (void)setSortOrderings:(NSArray *)orderings;
- (void)setValidatesChangesImmediately:(BOOL)flag;
- (NSArray *)sortOrdering;
- (NSArray *)sortOrderings;
- (void)updateDisplayedObjects;
- (BOOL)validatesChangesImmediately;

File diff suppressed because it is too large Load diff

View file

@ -254,9 +254,10 @@ static char rcsId[] = "$Id$";
-(NSArray*)browserLanguages
{
//OK
LOGObjectFnStart();
if (!browserLanguages)
{
NSArray* _browserLanguages=nil;
NSMutableArray* _browserLanguages=nil;
NSString* header=[self headerForKey:GSWHTTPHeader_AcceptLanguage];
NSDebugMLLog(@"requests",@"lang header:%@",header);
if (header)
@ -289,7 +290,25 @@ static char rcsId[] = "$Id$";
else
_browserLanguages=[[NSArray new]autorelease];
*/
_browserLanguages=[GSWResourceManager GSLanguagesFromISOLanguages:_languages];
_browserLanguages=(NSMutableArray*)[GSWResourceManager GSLanguagesFromISOLanguages:_languages];
NSDebugMLLog(@"requests",@"browserLanguages:%@",browserLanguages);
if (_browserLanguages)
{
//Remove Duplicates
int i=0;
_browserLanguages=[_browserLanguages mutableCopy];
for(i=0;i<[_browserLanguages count];i++)
{
int j=0;
NSString* language=[_browserLanguages objectAtIndex:i];
for(j=[_browserLanguages count]-1;j>i;j--)
{
NSString* language2=[_browserLanguages objectAtIndex:j];
if ([language2 isEqual:language])
[_browserLanguages removeObjectAtIndex:j];
};
};
};
}
else
{
@ -299,11 +318,12 @@ static char rcsId[] = "$Id$";
if (!_browserLanguages)
{
LOGError0(@"No known languages");
_browserLanguages=[NSArray array];
_browserLanguages=(NSMutableArray*)[NSArray array];
};
ASSIGN(browserLanguages,_browserLanguages);
NSDebugMLLog(@"requests",@"browserLanguages:%@",browserLanguages);
};
// NSDebugMLLog(@"requests",@"browserLanguages:%@",browserLanguages);
LOGObjectFnStop();
return browserLanguages;
};

View file

@ -26,69 +26,71 @@
#ifndef _GSWTemplateParser_h__
#define _GSWTemplateParser_h__
#include <gsantlr/ANTLRCommon.h>
#include <gsantlr/ANTLRTextStreams.h>
#include "GSWHTMLTokenTypes.h"
#include "GSWPageDefLexer.h"
#include "GSWPageDefParser.h"
#include "GSWPageDefParserExt.h"
#include "GSWHTMLAttrLexer.h"
#include "GSWHTMLAttrParser.h"
#include "GSWHTMLAttrParserExt.h"
//====================================================================
@interface GSWTemplateParser : NSObject
{
NSString* _templateName;
NSString* _frameworkName;
NSString* _string;
NSStringEncoding _stringEncoding;
NSString* _stringPath;
NSString* _definitionsString;
NSArray* _languages;
NSString* _definitionsPath;
GSWElement* _template;
NSDictionary* _definitions;
}
+(GSWElement*)templateNamed:(NSString*)name_
inFrameworkNamed:(NSString*)frameworkName_
withHTMLString:(NSString*)HTMLString
htmlPath:(NSString*)HTMLPath
declarationString:(NSString*)pageDefString
languages:(NSArray*)languages_
declarationPath:(NSString*)declarationPath_;
+(BOOL)parseTag:(ANTLRDefAST)_AST
// withTagStream:(ANTLRTextInputStreamString*)_tagStream
// withTagParser:(GSWHTMLAttrParser*)_tagParser
withTagsNames:(NSMutableDictionary*)tagsNames
withTagsAttrs:(NSMutableDictionary*)tagsAttrs;
+(NSString*)getTagNameFor:(ANTLRDefAST)_AST
// withTagStream:(ANTLRTextInputStreamString*)_tagStream
// withTagParser:(GSWHTMLAttrParser*)_tagParser
withTagsNames:(NSMutableDictionary*)tagsNames
withTagsAttrs:(NSMutableDictionary*)tagsAttrs;
+(NSDictionary*)getTagAttrsFor:(ANTLRDefAST)_AST
// withTagStream:(ANTLRTextInputStreamString*)_tagStream
// withTagParser:(GSWHTMLAttrParser*)_tagParser
withTagsNames:(NSMutableDictionary*)tagsNames
withTagsAttrs:(NSMutableDictionary*)tagsAttrs;
+(GSWElement*)createElementsStartingWithAST:(ANTLRDefAST*)_AST
stopOnTagNamed:(NSString*)_stopTagName
withDefinitions:(NSDictionary*)pageDefElements
withLanguages:(NSArray*)languages_
// withTagStream:(ANTLRTextInputStreamString*)_tagStream
// withTagParser:(GSWHTMLAttrParser*)_tagParser
withTagsNames:(NSMutableDictionary*)tagsNames
withTagsAttr:(NSMutableDictionary*)tagsAttrs
templateNamed:(NSString*)templateName_;
inFrameworkNamed:(NSString*)frameworkName_
withParserClassName:(NSString*)parserClassName
withString:(NSString*)HTMLString
encoding:(NSStringEncoding)encoding
fromPath:(NSString*)HTMLPath
definitionsString:(NSString*)pageDefString
languages:(NSArray*)languages_
definitionPath:(NSString*)definitionPath_;
+(GSWElement*)templateNamed:(NSString*)name_
inFrameworkNamed:(NSString*)frameworkName_
withParserClass:(Class)parserClass
withString:(NSString*)HTMLString
encoding:(NSStringEncoding)encoding
fromPath:(NSString*)HTMLPath
definitionsString:(NSString*)pageDefString
languages:(NSArray*)languages_
definitionPath:(NSString*)definitionPath_;
+(void)setDefaultParserClassName:(NSString*)parserClassName;
+(NSString*)defaultParserClassName;
+(Class)defaultParserClass;
-(id)initWithTemplateName:(NSString*)name_
inFrameworkName:(NSString*)frameworkName_
withString:(NSString*)HTMLString
encoding:(NSStringEncoding)encoding_
fromPath:(NSString*)HTMLPath
withDefinitionsString:(NSString*)pageDefString
fromPath:(NSString*)definitionPath_
forLanguages:(NSArray*)languages_;
-(void)dealloc;
-(NSString*)logPrefix;
-(GSWElement*)template;
-(NSArray*)templateElements;
-(NSDictionary*)definitions;
-(NSDictionary*)parseDefinitionsString:(NSString*)localDefinitionstring_
named:(NSString*)localDefinitionName_
inFrameworkNamed:(NSString*)localFrameworkName_
fromPath:(NSString*)localDefinitionPath_;
-(NSDictionary*)parseDefinitionInclude:(NSString*)includeName_
fromFrameworkNamed:(NSString*)fromFrameworkName_
definitionPath:(NSString*)localDefinitionPath_;
-(NSDictionary*)processIncludes:(NSArray*)definitionsIncludes_
named:(NSString*)localDefinitionsName_
inFrameworkNamed:(NSString*)localFrameworkName_
definitionPath:(NSString*)localDefinitionPath_;
+(BOOL)parseDeclarationInclude:(NSString*)includeName_
fromFrameworkNamed:(NSString*)fromFrameworkName_
declarationPath:(NSString*)declarationPath_
languages:(NSArray*)languages_
into:(NSMutableDictionary*)pageDefElements_;
+(BOOL)parseDeclarationString:(NSString*)pageDefString
languages:(NSArray*)languages_
named:(NSString*)name_
inFrameworkNamed:(NSString*)frameworkName_
declarationPath:(NSString*)declarationPath_
into:(NSMutableDictionary*)pageDefElements_;
+(BOOL)processIncludes:(NSArray*)pageDefIncludes_
languages:(NSArray*)languages_
named:(NSString*)name_
inFrameworkNamed:(NSString*)frameworkName_
declarationPath:(NSString*)declarationPath_
into:(NSMutableDictionary*)pageDefElements_;
@end
#endif //_GSWTemplateParser_h__

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,57 @@
/* GSWTemplateParserANTLR.h - GSWeb: Class GSWTemplateParserANTLR
Copyright (C) 1999 Free Software Foundation, Inc.
Written by: Manuel Guesdon <mguesdon@sbuilders.com>
Date: Mar 1999
This file is part of the GNUstep Web Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
// $Id$
#ifndef _GSWTemplateParserANTLR_h__
#define _GSWTemplateParserANTLR_h__
#include <gsantlr/ANTLRCommon.h>
#include <gsantlr/ANTLRTextStreams.h>
#include "GSWTemplateParser.h"
#include "GSWHTMLTokenTypes.h"
#include "GSWPageDefLexer.h"
#include "GSWPageDefParser.h"
#include "GSWPageDefParserExt.h"
#include "GSWHTMLAttrLexer.h"
#include "GSWHTMLAttrParser.h"
#include "GSWHTMLAttrParserExt.h"
//====================================================================
@interface GSWTemplateParserANTLR : GSWTemplateParser
{
NSMutableDictionary* _tagsNames;
NSMutableDictionary* _tagsAttrs;
};
-(void)dealloc;
-(NSArray*)templateElements;
-(NSArray*)createElementsStartingWithAST:(ANTLRDefAST*)_AST
stopOnTagNamed:(NSString*)_stopTagName;
-(BOOL)parseTag:(ANTLRDefAST)_AST;
-(NSString*)getTagNameFor:(ANTLRDefAST)_AST;
-(NSDictionary*)getTagAttrsFor:(ANTLRDefAST)_AST;
@end
#endif //_GSWTemplateParserANTLR_h__

View file

@ -0,0 +1,498 @@
/* GSWTemplateParserANTLR.m - GSWeb: Class GSWTemplateParserANTLR
Copyright (C) 1999 Free Software Foundation, Inc.
Written by: Manuel Guesdon <mguesdon@sbuilders.com>
Date: Mar 1999
This file is part of the GNUstep Web Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
static char rcsId[] = "$Id$";
#include <gsweb/GSWeb.framework/GSWeb.h>
//====================================================================
@implementation GSWTemplateParserANTLR
-(void)dealloc
{
DESTROY(_tagsNames);
DESTROY(_tagsAttrs);
[super dealloc];
};
-(NSArray*)templateElements
{
NSArray* elements=nil;
id<NSObject,ANTLRAST> htmlAST=nil;
NSAutoreleasePool* arpParse=nil;
ANTLRTextInputStreamString* htmlStream=nil;
GSWHTMLLexer* htmlLexer=nil;
ANTLRTokenBuffer* htmlTokenBuffer=nil;
GSWHTMLParser* htmlParser=nil;
LOGObjectFnStart();
NSDebugMLLog(@"low",@"template named:%@ frameworkName:%@ pageDefString=%@",
_templateName,
_frameworkName,
_definitionsString);
//TODO remove
/*
[ANTLRCharBuffer setTraceFlag_LA:YES];
[ANTLRCharScanner setTraceFlag_LA:YES];
[ANTLRLLkParser setTraceFlag_LA:YES];
[ANTLRTokenBuffer setTraceFlag_LA:YES];
*/
htmlStream=[[ANTLRTextInputStreamString newWithString:_string]
autorelease];
htmlLexer=[[[GSWHTMLLexer alloc]initWithTextStream:htmlStream]
autorelease];
htmlTokenBuffer=[ANTLRTokenBuffer tokenBufferWithTokenizer:htmlLexer];
htmlParser=[[[GSWHTMLParser alloc] initWithTokenBuffer:htmlTokenBuffer]
autorelease];
NSDebugMLLog(@"low",@"template named:%@ HTMLString=%@",
_templateName,
_string);
arpParse=[NSAutoreleasePool new];
NS_DURING
{
[htmlParser document];
if ([htmlParser isError])
{
LOGError(@"Parser Errors : %@",[htmlParser errors]);
ExceptionRaise(@"GSWTemplateParser",
@"GSWTemlateParser: Errors in HTML parsing template named %@: %@\nAST:\n%@",
_templateName,
[htmlParser errors],
[htmlParser AST]);
};
htmlAST=[htmlParser AST];
NSDebugMLLog0(@"low",@"HTML Parse OK!");
}
NS_HANDLER
{
LOGError(@"template named:%@ HTML Parse failed!",_templateName);
localException=ExceptionByAddingUserInfoObjectFrameInfo(localException,@"In [htmlParser document]... template named:%@ HTML Parse failed!",_templateName);
[localException retain];
DESTROY(arpParse);
[localException autorelease];
[localException raise];
}
NS_ENDHANDLER;
NSDebugMLLog0(@"low",@"arpParse infos:\n");
#ifndef NDEBUG
if ([NSThread currentThread])
{
NSDebugMLLog(@"low",@"thread current_pool=%@",
[NSThread currentThread]->_autorelease_vars.current_pool);
NSDebugMLLog(@"low",@"thread current_pool _parentAutoreleasePool=%@",
[[NSThread currentThread]->_autorelease_vars.current_pool _parentAutoreleasePool]);
};
#endif
NSDebugMLLog0(@"low",@"DESTROY(arpParse)\n");
[htmlAST retain];
DESTROY(arpParse);
arpParse=[NSAutoreleasePool new];
[htmlAST autorelease];
NSDebugMLLog0(@"low",@"DESTROYED(arpParse)\n");
if (htmlAST)
{
_tagsNames=[[NSMutableDictionary dictionary] retain];
_tagsAttrs=[[NSMutableDictionary dictionary] retain];
NS_DURING
{
elements=[self createElementsStartingWithAST:&htmlAST
stopOnTagNamed:nil];
NSDebugMLLog(@"low",@"template named:%@ _template=%@",
_templateName,
elements);
}
NS_HANDLER
{
LOGSeriousError(@"template named:%@ createElements failed!",
_templateName);
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,
@"In createElementsStartingWithAST...");
[localException raise];
}
NS_ENDHANDLER;
};
NSDebugMLLog0(@"low",@"ARP infos:\n");
#ifndef NDEBUG
if ([NSThread currentThread])
{
NSDebugMLLog(@"low",@"thread current_pool=%@",
[NSThread currentThread]->_autorelease_vars.current_pool);
NSDebugMLLog(@"low",@"thread current_pool _parentAutoreleasePool=%@",
[[NSThread currentThread]->_autorelease_vars.current_pool _parentAutoreleasePool]);
};
#endif
[elements retain];
NSDebugMLLog0(@"low",@"DESTROY(arp)\n");
DESTROY(arpParse);
NSDebugMLLog0(@"low",@"DESTROYED(arp)\n");
[elements autorelease];
NSDebugMLLog0(@"low",@"Display Template\n");
NSDebugMLLog(@"low",@"template named:%@ elements=%@",
_templateName,
elements);
LOGClassFnStop();
return elements;
};
//--------------------------------------------------------------------
-(BOOL)parseTag:(ANTLRDefAST)_AST
{
BOOL htmlAttrParseOK=YES;
NSString* tagName=[_tagsNames objectForKey:[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]; //TODO bad hack
LOGClassFnStart();
if (!tagName
&& ([_AST tokenType]==GSWHTMLTokenType_OPENTAG
|| [_AST tokenType]==GSWHTMLTokenType_CLOSETAG))
{
NSAutoreleasePool* arpParse=nil;
ANTLRTextInputStreamString* _tagStream=[[[ANTLRTextInputStreamString alloc]
initWithString:[_AST text]]
autorelease];
GSWHTMLAttrLexer* htmlAttrLexer=[[[GSWHTMLAttrLexer alloc]
initWithTextStream:_tagStream]
autorelease];
ANTLRTokenBuffer* htmlAttrTokenBuffer=[ANTLRTokenBuffer tokenBufferWithTokenizer:htmlAttrLexer];
GSWHTMLAttrParser* _tagParser=[[[GSWHTMLAttrParser alloc] initWithTokenBuffer:htmlAttrTokenBuffer]
autorelease];
NSString* tagName=nil;
NSDictionary* tagAttrs=nil;
NSDebugMLLog(@"low",@"PARSE:[%@]",[_AST text]);
NSDebugMLLog(@"low",@"stream:[%@]",_tagStream);
htmlAttrParseOK=NO;
arpParse=[NSAutoreleasePool new];
NS_DURING
{
[_tagParser tag];
if ([_tagParser isError])
{
LOGError(@"Parser Errors : %@",[_tagParser errors]);
ExceptionRaise(@"GSWTemplateParser",
@"GSWTemlateParser: Errors in HTML Tag parsing: %@",
[_tagParser errors]);
};
tagName=[_tagParser tagName];
tagAttrs=[_tagParser attributes];
NSDebugMLLog(@"low",@"tagName=%@ tagAttrs=%@",
tagName,
tagAttrs);
htmlAttrParseOK=YES;
}
NS_HANDLER
{
htmlAttrParseOK=NO;
LOGError(@"PARSE PB:[%@]",[_AST text]);//TODO
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,
@"In [_tagParser tag]...");
[localException raise];
}
NS_ENDHANDLER;
NSDebugMLLog0(@"low",@"arpParse infos:\n");
#ifndef NDEBUG
if ([NSThread currentThread])
{
NSDebugMLLog(@"low",@"thread current_pool=%@",
[NSThread currentThread]->_autorelease_vars.current_pool);
NSDebugMLLog(@"low",@"thread current_pool _parentAutoreleasePool=%@",
[[NSThread currentThread]->_autorelease_vars.current_pool _parentAutoreleasePool]);
};
#endif
NSDebugMLLog0(@"low",@"DESTROY(arpParse)\n");
DESTROY(arpParse);
NSDebugMLLog0(@"low",@"DESTROYED(arpParse)\n");
NSDebugMLLog(@"low",@"END PARSE:[%@]",[_AST text]);
if (htmlAttrParseOK && tagName)
{
NSDebugMLLog(@"low",@"tagName:[%@]",tagName);
if ([tagName hasPrefix:@"\""] && [tagName hasSuffix:@"\""])
tagName=[[tagName stringWithoutPrefix:@"\""]stringWithoutSuffix:@"\""];
NSDebugMLLog(@"low",@"Add tagName:[%@]",
tagName);
[_tagsNames setObject:tagName
forKey:[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]; //TODO bad hack
NSDebugMLLog(@"low",@"Verify tagName=%@",
[_tagsNames objectForKey:[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]); //TODO bad hack
NSDebugMLLog(@"low",@"Add tagsAttrs:[%@]",
tagAttrs);
if (tagAttrs)
{
[_tagsAttrs setObject:tagAttrs
forKey:[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]; //TODO bad hack
NSDebugMLLog(@"low",@"Verify tagAttrs=%@",
[_tagsAttrs objectForKey:[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]); //TODO bad hack
};
};
};
LOGClassFnStop();
return htmlAttrParseOK;
};
//--------------------------------------------------------------------
-(NSString*)getTagNameFor:(ANTLRDefAST)_AST
{
NSString* tagName=[_tagsNames objectForKey:[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]; //TODO bad hack
LOGClassFnStart();
NSDebugMLLog(@"low",@"[%@]",[_AST text]);
if (!tagName)
{
BOOL htmlAttrParseOK=[self parseTag:_AST];
if (htmlAttrParseOK)
tagName=[_tagsNames objectForKey:[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]; //TODO bad hack
};
NSDebugMLLog(@"low",@"tagName:[%@]",tagName);
LOGClassFnStop();
return tagName;
};
//--------------------------------------------------------------------
-(NSDictionary*)getTagAttrsFor:(ANTLRDefAST)_AST
{
NSDictionary* tagAttrs=[_tagsAttrs objectForKey:
[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]; //TODO bad hack
LOGClassFnStart();
NSDebugMLLog(@"low",@"[%@]",[_AST text]);
if (!tagAttrs)
{
BOOL htmlAttrParseOK=[self parseTag:_AST];
if (htmlAttrParseOK)
tagAttrs=[_tagsAttrs objectForKey:
[NSNumber numberWithUnsignedLong:(unsigned long)_AST]]; //TODO bad hack
};
NSDebugMLLog(@"low",@"tagAttrs:[%@]",tagAttrs);
LOGClassFnStop();
return tagAttrs;
};
//--------------------------------------------------------------------
-(NSArray*)createElementsStartingWithAST:(ANTLRDefAST*)_AST
stopOnTagNamed:(NSString*)_stopTagName
{
NSMutableArray* _elements=[NSMutableArray array];
ANTLRDefAST _currentAST=*_AST;
BOOL end=NO;
BOOL inHTMLBareString=NO;
NSMutableString* htmlBareString=nil;
LOGClassFnStart();
NSDebugMLLog(@"low",@"_stopTagName:[%@]",_stopTagName);
while(_currentAST && !end)
{
GSWElement* element=nil;
NSString* tagName=nil;
NSDictionary* tagAttrs=nil;
BOOL stopBareString=NO;
NSDebugMLLog(@"low",@"[_currentAST: text=[%@] Type=%d",
[_currentAST text],
[_currentAST tokenType]);
NSDebugMLLog(@"low",@"end=%s inHTMLBareString=%s stopBareString=%s",
end ? "YES" : "NO",
inHTMLBareString ? "YES" : "NO",
stopBareString ? "YES" : "NO");
if ([_currentAST tokenType]==GSWHTMLTokenType_OPENTAG
|| [_currentAST tokenType]==GSWHTMLTokenType_CLOSETAG)
{
tagName=[self getTagNameFor:_currentAST];
NSDebugMLLog(@"low",@"Result tagName:[%@]",tagName);
if (!tagName)
{
LOGError0(@"");//TODO
}
else
{
NSDebugMLLog(@"low",@"[_currentAST tokenType]=%d",(int)[_currentAST tokenType]);
if ([_currentAST tokenType]==GSWHTMLTokenType_OPENTAG)
{
NSDebugMLLog0(@"low",@"Found Open Tag");
tagAttrs=[self getTagAttrsFor:_currentAST];
NSDebugMLLog(@"low",@"tagAttrs=%@",tagAttrs);
if ([tagName caseInsensitiveCompare:@"gsweb"]==NSOrderedSame
|| [tagName caseInsensitiveCompare:@"webobject"]==NSOrderedSame)
{
NSDebugMLLog0(@"low",@"Found GSWeb Tag");
NSDebugMLLog(@"low",@"tagAttrs=%@",
tagAttrs);
if (inHTMLBareString)
{
NSDebugMLLog0(@"low",@"==>Stop BareString");
stopBareString=YES;
}
else
{
ANTLRDefAST nextAST=[_currentAST nextSibling];
NSString* name=[tagAttrs objectForKey:@"name"];
NSDebugMLLog0(@"low",@"Process GSWeb Tag");
NSDebugMLLog(@"low",@"GSWeb Tag: name:[%@]",
name);
if (!name)
{
LOGError(@"No name for Element:%@",
[_currentAST text]);//TODO
ExceptionRaise(@"GSWTemplateParser",
@"GSWTemlateParser: no name for GNUstepWeb tag in template named %@",
_templateName);
}
else
{
GSWPageDefElement* pageDefElement=[_definitions objectForKey:name];
NSDebugMLLog(@"low",@"pageDefElement:[%@]",
pageDefElement);
NSDebugMLLog(@"low",@"GSWeb Tag pageDefElement:[%@]",
pageDefElement);
if (pageDefElement)
{
NSDictionary* _associations=[pageDefElement associations];
NSString* className=nil;
className=[pageDefElement className];
NSDebugMLLog(@"low",@"GSWeb Tag className:[%@]",
className);
if (className)
{
NSArray* children=nil;
children=[self createElementsStartingWithAST:&nextAST
stopOnTagNamed:tagName];
NSDebugMLLog(@"low",@"CREATE Element of Class:%@",className);
NSDebugMLLog(@"low",@"children:%@",children);
NSDebugMLLog(@"low",@"associations:%@",_associations);
{
NSEnumerator* _tagAttrsEnum = [tagAttrs keyEnumerator];
id _tagAttrKey=nil;
id _tagAttrValue=nil;
NSMutableDictionary* _addedAssoc=nil;
while ((_tagAttrKey = [_tagAttrsEnum nextObject]))
{
if (![_tagAttrKey isEqualToString:@"name"]
&& ![_associations objectForKey:_tagAttrKey])
{
if (!_addedAssoc)
_addedAssoc=[NSMutableDictionary dictionary];
_tagAttrValue=[tagAttrs objectForKey:_tagAttrKey];
[_addedAssoc setObject:[GSWAssociation associationWithValue:_tagAttrValue]
forKey:_tagAttrKey];
};
};
if (_addedAssoc)
{
_associations=[_associations dictionaryByAddingEntriesFromDictionary:_addedAssoc];
};
};
element=[GSWApp dynamicElementWithName:className
associations:_associations
template:[[[GSWHTMLStaticGroup alloc]initWithContentElements:children]autorelease]
languages:_languages];
if (!element)
{
ExceptionRaise(@"GSWTemplateParser",
@"GSWTemplateParser: Creation failed for element named:%@ className:%@ in template named %@",
[pageDefElement elementName],
className,
_templateName);
};
}
else
{
ExceptionRaise(@"GSWTemplateParser",
@"GSWTemplateParser: No class name in page definition for tag named:%@ pageDefElement=%@ in template named %@",
name,
pageDefElement,
_templateName);
};
}
else
{
ExceptionRaise(@"GSWTemplateParser",
@"No element definition for tag named:%@ in template named %@",
name,
_templateName);
};
};
_currentAST=nextAST;
};
};
}
else
{
if (_stopTagName
&& [tagName caseInsensitiveCompare:_stopTagName]==NSOrderedSame)
{
NSDebugMLLog(@"low",@"_stopTagName found: %@",_stopTagName);
end=YES;
stopBareString=YES;
_currentAST=[_currentAST nextSibling];
};
};
};
}
else if ([_currentAST tokenType]==GSWHTMLTokenType_COMMENT)
{
stopBareString=YES;
element=[GSWHTMLComment elementWithString:[_currentAST text]];
_currentAST=[_currentAST nextSibling];
}
NSDebugMLLog(@"low",@"end=%s inHTMLBareString=%s stopBareString=%s",
end ? "YES" : "NO",
inHTMLBareString ? "YES" : "NO",
stopBareString ? "YES" : "NO");
if (!element && !end && !stopBareString)
{
NSDebugMLLog0(@"low",@"!element && !end && !stopBareString");
if (!inHTMLBareString)
{
NSDebugMLLog0(@"low",@"!inHTMLBareString ==> inHTMLBareString=YES");
inHTMLBareString=YES;
htmlBareString=[[NSMutableString new] autorelease];
};
NSDebugMLLog(@"low",@"inHTMLBareString: adding [%@]",[_currentAST text]);
if ([_currentAST tokenType]==GSWHTMLTokenType_OPENTAG)
[htmlBareString appendFormat:@"<%@>",[_currentAST text]];
else if ([_currentAST tokenType]==GSWHTMLTokenType_CLOSETAG)
[htmlBareString appendFormat:@"</%@>",[_currentAST text]];
else
[htmlBareString appendString:[_currentAST text]];
NSDebugMLLog(@"low",@"htmlBareString: ==> [%@]",htmlBareString);
_currentAST=[_currentAST nextSibling];
};
if (inHTMLBareString && (stopBareString || !_currentAST))
{
NSDebugMLLog0(@"low",@"inHTMLBareString && stopBareString");
NSDebugMLLog(@"low",@"CREATE GSWHTMLBareString:\n%@",htmlBareString);
element=[GSWHTMLBareString elementWithString:htmlBareString];
NSDebugMLLog(@"low",@"element:%@",element);
htmlBareString=nil;
inHTMLBareString=NO;
};
if (element)
{
NSDebugMLLog(@"low",@"element to add: element=[%@]",element);
[_elements addObject:element];
element=nil;
};
NSDebugMLLog(@"low",@"element:%@",element);
NSDebugMLLog(@"low",@"inHTMLBareString:%d",(int)inHTMLBareString);
NSDebugMLLog(@"low",@"htmlBareString:%@",htmlBareString);
};
*_AST=_currentAST;
NSDebugMLLog(@"low",@"_elements]:%@",_elements);
LOGClassFnStop();
return _elements;
};
@end

View file

@ -0,0 +1,78 @@
/* GSWTemplateParserXML.h - GSWeb: Class GSWTemplateParserXML
Copyright (C) 1999 Free Software Foundation, Inc.
Written by: Manuel Guesdon <mguesdon@sbuilders.com>
Date: Mar 1999
This file is part of the GNUstep Web Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
// $Id$
#ifndef _GSWTemplateParserXML_h__
#define _GSWTemplateParserXML_h__
#include "GSWTemplateParser.h"
#include <Foundation/GSXML.h>
#include <libxml/parser.h>
#include <libxml/parserInternals.h>
#include <libxml/SAX.h>
#include <libxml/HTMLparser.h>
@class GSWTemplateParser;
//====================================================================
@interface GSWTemplateParserSAXHandler : GSHTMLSAXHandler
{
GSWTemplateParser* _templateParser;
};
+(void)lock;
+(void)unlock;
+(NSString*)cachedDTDContentForKey:(NSString*)url;
+(void)setCachedDTDContent:(NSString*)externalContent
forKey:(NSString*)url;
+(id)handlerWithTemplateParser:(GSWTemplateParser*)templateParser;
-(id)initWithTemplateParser:(GSWTemplateParser*)templateParser_;
-(id)init;
-(xmlParserInputPtr)resolveEntity:(NSString*)publicIdEntity
systemID:(NSString*)systemIdEntity;
-(void)warning:(NSString*)message;
-(void)error:(NSString*)message;
-(void)fatalError:(NSString*)message;
@end
//====================================================================
@interface GSWTemplateParserXML : GSWTemplateParser
{
GSXMLDocument* _xmlDocument;
}
-(void)dealloc;
-(NSArray*)templateElements;
-(NSArray*)createElementsFromNode:(GSXMLNode*)node;
@end
//====================================================================
@interface GSWTemplateParserXMLHTML : GSWTemplateParserXML
{
};
@end
#endif //_GSWTemplateParserXML_h__

View file

@ -0,0 +1,789 @@
/* GSWTemplateParserXML.m - GSWeb: Class GSWTemplateParserXML
Copyright (C) 1999 Free Software Foundation, Inc.
Written by: Manuel Guesdon <mguesdon@sbuilders.com>
Date: Mar 1999
This file is part of the GNUstep Web Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
static char rcsId[] = "$Id$";
#include <gsweb/GSWeb.framework/GSWeb.h>
#include <libxml/SAX.h>
#include <libxml/xml-error.h>
extern xmlParserInputPtr xmlNewStringInputStream(xmlParserCtxtPtr ctxt,
const xmlChar *buffer);
static NSLock* GSXMLParserLock=nil;
static NSMutableDictionary* DTDCache=nil;
//====================================================================
@implementation GSWTemplateParserSAXHandler
//--------------------------------------------------------------------
+ (void) initialize
{
// Initialize DTD Cache, and Lock
if (self==[GSWTemplateParserSAXHandler class])
{
if (!DTDCache)
DTDCache=[NSMutableDictionary new];
if (!GSXMLParserLock)
GSXMLParserLock=[NSRecursiveLock new];
};
};
//--------------------------------------------------------------------
+(void)dealloc
{
// Dealloc DTD Cache and Lock
if (self==[GSWTemplateParserSAXHandler class])
{
DESTROY(DTDCache);
DESTROY(GSXMLParserLock);
};
};
//--------------------------------------------------------------------
/*"Lock"*/
+(void)lock
{
NS_DURING
{
[GSXMLParserLock lock];
}
NS_HANDLER
{
NSLog(@"EXCEPTION:(GSXMLParserLock lock) %@ (%@) [%s %d]",localException,[localException reason],__FILE__,__LINE__);
[localException raise];
};
NS_ENDHANDLER;
};
//--------------------------------------------------------------------
/*"Unlock"*/
+(void)unlock
{
NS_DURING
{
[GSXMLParserLock unlock];
}
NS_HANDLER
{
NSLog(@"EXCEPTION:(GSXMLParserLock unlock) %@ (%@) [%s %d]",localException,[localException reason],__FILE__,__LINE__);
[localException raise];
};
NS_ENDHANDLER;
};
//--------------------------------------------------------------------
/*"Find cached DTD Content for Key url"*/
+(NSString*)cachedDTDContentForKey:(NSString*)url
{
NSString* content=nil;
[self lock];
content=[DTDCache objectForKey:url];
[self unlock];
return content;
};
//--------------------------------------------------------------------
/*"Cache DTD Content externalContent for Key url"*/
+(void)setCachedDTDContent:(NSString*)externalContent
forKey:(NSString*)url
{
[self lock];
[DTDCache setObject:externalContent
forKey:url];
[self unlock];
};
//--------------------------------------------------------------------
+(id)handlerWithTemplateParser:(GSWTemplateParser*)templateParser_
{
return AUTORELEASE([[self alloc] initWithTemplateParser:templateParser_]);
};
extern void externalSubset (void *ctx,
const xmlChar *name,
const xmlChar *ExternalID,
const xmlChar *SystemID);
//--------------------------------------------------------------------
-(id)initWithTemplateParser:(GSWTemplateParser*)templateParser_
{
if ((self=[self init]))
{
_templateParser=templateParser_;
NSLog(@"my sax lib=%p",lib);
if (lib)
{
xmlSAXHandlerPtr def=NULL;
if ([_templateParser isKindOfClass:[GSWTemplateParserXMLHTML class]])
def=&htmlDefaultSAXHandler;
else
def=&xmlDefaultSAXHandler;
((xmlSAXHandlerPtr)lib)->internalSubset = def->internalSubset;
((xmlSAXHandlerPtr)lib)->isStandalone = def->isStandalone;
((xmlSAXHandlerPtr)lib)->hasInternalSubset = def->hasInternalSubset;
((xmlSAXHandlerPtr)lib)->hasExternalSubset = def->hasExternalSubset;
((xmlSAXHandlerPtr)lib)->resolveEntity = def->resolveEntity;
((xmlSAXHandlerPtr)lib)->getEntity = def->getEntity;
((xmlSAXHandlerPtr)lib)->entityDecl = def->entityDecl;
((xmlSAXHandlerPtr)lib)->notationDecl = def->notationDecl;
((xmlSAXHandlerPtr)lib)->attributeDecl = def->attributeDecl;
((xmlSAXHandlerPtr)lib)->elementDecl = def->elementDecl;
((xmlSAXHandlerPtr)lib)->unparsedEntityDecl = def->unparsedEntityDecl;
((xmlSAXHandlerPtr)lib)->startDocument = def->startDocument;
((xmlSAXHandlerPtr)lib)->endDocument = def->endDocument;
((xmlSAXHandlerPtr)lib)->startElement = def->startElement;
((xmlSAXHandlerPtr)lib)->endElement = def->endElement;
((xmlSAXHandlerPtr)lib)->reference = def->reference;
((xmlSAXHandlerPtr)lib)->characters = def->characters;
((xmlSAXHandlerPtr)lib)->ignorableWhitespace = def->ignorableWhitespace;
((xmlSAXHandlerPtr)lib)->processingInstruction = def->processingInstruction;
((xmlSAXHandlerPtr)lib)->comment = def->comment;
// ((xmlSAXHandlerPtr)lib)->warning = xmlParserWarning;
// ((xmlSAXHandlerPtr)lib)->error = xmlParserError;
// ((xmlSAXHandlerPtr)lib)->fatalError = xmlParserError;
((xmlSAXHandlerPtr)lib)->getParameterEntity = def->getParameterEntity;
((xmlSAXHandlerPtr)lib)->cdataBlock = def->cdataBlock;
((xmlSAXHandlerPtr)lib)->externalSubset = def->externalSubset;
};
};
return self;
};
-(id)init
{
if ((self=[super init]))
{
};
return self;
};
xmlParserInputPtr GSWTemplateParserSAXHandler_ExternalLoader(const char *systemId,
const char *publicId,
xmlParserCtxtPtr context)
{
/*
NSCAssert(context,@"No Parser Context");
NSCAssert(context->_private,@"No GSSAXHandler reference in Parser Context");
return [(GSSAXHandler*)(context->_private)resolveEntity:[NSString stringWithCString:publicId]
systemID:[NSString stringWithCString:systemId]];
*/
return NULL;
}
//--------------------------------------------------------------------
//exemple:
// publicIdEntity
// -//IETF//DTD HTML//EN
// -//W3C//ENTITIES Special for XHTML//EN
// -//W3C//ENTITIES Symbols for XHTML//EN
// -//W3C//ENTITIES Latin 1 for XHTML//EN
// -//W3C//DTD XHTML 1.0 Transitional//EN
// -//W3C//DTD XHTML 1.0 Strict//EN
// -//W3C//DTD XHTML 1.0 Frameset//EN
// -//W3C//DTD HTML 4.01//EN
// -//W3C//DTD HTML 4.01 Transitional//EN
// -//W3C//DTD HTML 4.01 Frameset//EN
// -//IETF//DTD HTML//EN
// -//W3C//DTD HTML 3.2//EN
// systemIdEntity
// http://www.w3c.org/html.dtd
// html.dtd
-(xmlParserInputPtr)resolveEntity:(NSString*)publicIdEntity
systemID:(NSString*)systemIdEntity
{
NSString* externalContent=nil;
xmlParserInputPtr result = 0;
LOGObjectFnStart();
NSLog(@"resolveEntity:%@ systemID:%@ inParserContext:%p\n",
publicIdEntity,
systemIdEntity,
lib);
NSAssert(publicIdEntity || systemIdEntity,
@"resolveEntity:systemIdEntity: publicIdEntity and systemIdEntity are both nil");
if (systemIdEntity)
{
externalContent=[[self class] cachedDTDContentForKey:systemIdEntity];
if (!externalContent)
{
NSString* fileName=nil;
NSString* resourceName=systemIdEntity;
if ([[resourceName pathExtension] isEqual:@"dtd"])
resourceName=[resourceName stringByDeletingPathExtension];
fileName=[NSBundle pathForGNUstepResource:resourceName
ofType:@"dtd"
inDirectory:@"DTDs"];
NSLog(@"systemIdEntity: fileName=%@ for Resource:%@",fileName,resourceName);
if (fileName)
{
externalContent=[NSString stringWithContentsOfFile:fileName];
};
externalContent=[NSString stringWithContentsOfFile:fileName];
if (externalContent)
{
NSString* gswebTag=@"\n<!ELEMENT gsweb %Flow;>
<!ATTLIST gsweb
%attrs;
>\n";
// name NMTOKEN; #IMPLIED
NSLog(@"gswebTag=\n%@",gswebTag);
externalContent=[externalContent stringByAppendingString:gswebTag];
[[self class] setCachedDTDContent:externalContent
forKey:systemIdEntity];
};
};
};
if (!externalContent && publicIdEntity)
{
externalContent=[[self class] cachedDTDContentForKey:publicIdEntity];
if (!externalContent)
{
//Well Known DTDs / Entities
if ([publicIdEntity hasPrefix:@"-//"])
{
// 0: -
// 1: W3C or IETF
// 2: DTD ... or ENTITIES ...
// 3: EN or ... (language)
NSArray* parts=[publicIdEntity componentsSeparatedByString:@"//"];
if ([parts count]>=2)
{
NSString* whatPart=[parts objectAtIndex:2];
if ([whatPart hasPrefix:@"DTD"])
{
NSString* resourceName=nil;
NSString* fileName=nil;
if ([whatPart rangeOfString:@"Transitional"].length>0)
resourceName=@"xhtml1-transitional.dtd";
else if ([whatPart rangeOfString:@"Strict"].length>0)
resourceName=@"xhtml1-strict.dtd";
else if ([whatPart rangeOfString:@"Frameset"].length>0)
resourceName=@"xhtml1-frameset.dtd";
else
{
NSLog(@"Unknown DTD: %@. Choose default: xhtml1-transitional.dtd",publicIdEntity);
resourceName=@"xhtml1-transitional.dtd"; // guess
};
if (resourceName)
{
if ([[resourceName pathExtension] isEqual:@"dtd"])
resourceName=[resourceName stringByDeletingPathExtension];
fileName=[NSBundle pathForGNUstepResource:resourceName
ofType:@"dtd"
inDirectory:@"DTDs"];
NSLog(@"systemIdEntity: fileName=%@ for Resource:%@",fileName,publicIdEntity);
if (fileName)
{
externalContent=[NSString stringWithContentsOfFile:fileName];
};
};
}
else if ([whatPart hasPrefix:@"ENTITIES"])
{
NSString* resourceName=nil;
NSString* fileName=nil;
if ([whatPart rangeOfString:@"Symbols"].length>0)
resourceName=@"xhtml-symbol.ent";
else if ([whatPart rangeOfString:@"Special"].length>0)
resourceName=@"xhtml-special.ent";
else if ([whatPart rangeOfString:@"Latin 1"].length>0)
resourceName=@"xhtml-lat1.ent";
else
{
NSLog(@"Unknown ENTITIES: %@",publicIdEntity);
};
if (resourceName)
{
if ([[resourceName pathExtension] isEqual:@"ent"])
resourceName=[resourceName stringByDeletingPathExtension];
fileName=[NSBundle pathForGNUstepResource:resourceName
ofType:@"ent"
inDirectory:@"DTDs"];
NSLog(@"systemIdEntity: fileName=%@ for Resource:%@",fileName,publicIdEntity);
if (fileName)
{
externalContent=[NSString stringWithContentsOfFile:fileName];
};
};
}
else
{
NSLog(@"Unknown publicIdEntity %@",publicIdEntity);
};
}
else
{
NSLog(@"Don't know how to parse publicIdEntity %@",publicIdEntity);
};
}
else
{
NSLog(@"Don't know what to do with publicIdEntity %@",publicIdEntity);
};
if (externalContent)
[[self class] setCachedDTDContent:externalContent
forKey:publicIdEntity];
};
};
if (externalContent)
{
result=xmlNewStringInputStream(lib,[externalContent cString]);
};
NSAssert2(result,@"Can't load external (publicIdEntity:%@ systemIdEntity:%@)",publicIdEntity,systemIdEntity);
NSLog(@"LOADED: resolveEntity:%@ systemID:%@ inParserContext:%p\n",
publicIdEntity,
systemIdEntity,
lib);
LOGObjectFnStop();
return result;
};
//--------------------------------------------------------------------
-(void)warning:(NSString*)message
{
[[GSWApplication application] logWithFormat:@"%@ Warning: %@",
[_templateParser logPrefix],
message];
};
//--------------------------------------------------------------------
-(void)error: (NSString*)message
{
[[GSWApplication application] logErrorWithFormat:@"%@ Error: %@",
[_templateParser logPrefix],
message];
};
//--------------------------------------------------------------------
-(void)fatalError: (NSString*)message
{
[[GSWApplication application] logErrorWithFormat:@"%@ Fatal Error: %@",
[_templateParser logPrefix],
message];
};
@end
//====================================================================
@implementation GSWTemplateParserXML
//--------------------------------------------------------------------
-(void)dealloc
{
DESTROY(_xmlDocument);
[super dealloc];
};
//--------------------------------------------------------------------
static NSString* TabsForLevel(int level)
{
int i=0;
NSMutableString* tabs=[NSMutableString string];
for (i=0;i<level;i++)
{
[tabs appendString:@"\t"];
};
return tabs;
};
//--------------------------------------------------------------------
-(NSString*)dumpNode:(GSXMLNode*)node
atLevel:(int)level
{
NSString* dumpString=[NSString string];
while (node)
{
dumpString=[dumpString stringByAppendingFormat:@"%@%@ [Type:%@] [%@]:\n%@\n",
TabsForLevel(level),
[node name],
[node typeDescription],
[node propertiesAsDictionary],
[node content]];
if ([node children])
dumpString=[dumpString stringByAppendingString:[self dumpNode:[node children]
atLevel:level+1]];
node=[node next];
};
return dumpString;
};
//--------------------------------------------------------------------
-(NSArray*)templateElements
{
NSArray* elements=nil;
LOGObjectFnStart();
if (!_xmlDocument)
{
BOOL parseOk=NO;
GSXMLParser* parser=nil;
GSWTemplateParserSAXHandler* sax=nil;
NSStringEncoding stringEncoding=_stringEncoding;
if (stringEncoding==GSUndefinedEncoding)
stringEncoding=NSISOLatin1StringEncoding;
sax=[GSWTemplateParserSAXHandler handlerWithTemplateParser:self];
//NSLog(@"SAX=%p",sax);
NSLog(@"self class=%@",[self class]);
if ([self isKindOfClass:[GSWTemplateParserXMLHTML class]])
parser=[GSHTMLParser parserWithSAXHandler:sax
withData:[_string dataUsingEncoding:stringEncoding]];
else
{
NSString* xmlHeader=nil;
NSRange docTypeRange=NSMakeRange(NSNotFound,0);
NSString* stringToParse=nil;
//NSLog(@"stringEncoding=%d",(int)stringEncoding);
NSString* encodingString=nil;
//NSLog(@"_string=%@",_string);
encodingString=[GSXMLParser xmlEncodingStringForStringEncoding:stringEncoding];
//NSLog(@"encodingString=%@",encodingString);
if (encodingString)
encodingString=[NSString stringWithFormat:@" encoding=\"%@\"",encodingString];
else
encodingString=@"";
//NSLog(@"encodingString=%@",encodingString);
xmlHeader=[NSString stringWithFormat:@"<?xml version=\"%@\"%@?>\n",
@"1.0",
encodingString];
//NSLog(@"xmlHeader=%@",xmlHeader);
//NSLog(@"_string=%@",_string);
docTypeRange=[_string rangeOfString:@"<!DOCTYPE"];
if (docTypeRange.length==0)
stringToParse=[@"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"xhtml1-transitional.dtd\">\n" stringByAppendingString:_string];
else
stringToParse=_string;
//NSLog(@"stringToParse=%@",stringToParse);
stringToParse=[xmlHeader stringByAppendingString:stringToParse];
NSLog(@"stringToParse=%@",stringToParse);
parser=[GSXMLParser parserWithSAXHandler:sax
withData:[stringToParse dataUsingEncoding:stringEncoding]];
};
[parser doValidityChecking:YES];
[parser getWarnings:YES];
[parser setExternalEntityLoader:GSWTemplateParserSAXHandler_ExternalLoader];
NS_DURING
{
parseOk=[parser parse];
}
NS_HANDLER
{
LOGError(@"%@ Exception in parse! Exception: %@",
[self logPrefix],
localException);
localException=ExceptionByAddingUserInfoObjectFrameInfo(localException,
@"%@ - In [parser parse] Exception!",
[self logPrefix]);
[localException retain];
[localException autorelease];
[localException raise];
}
NS_ENDHANDLER;
if (!parseOk)
{
NSDebugMLog(@"######Parse FAILED errNo=%d [parser doc]=%p",
[parser errNo],
[parser doc]);
// May be validity errors only (like no HTML root)
if ([parser doc])
parseOk=YES;
};
if (parseOk)
{
GSXMLNode* node=nil;
NSDebugMLog(@"Root");
ASSIGN(_xmlDocument,[parser doc]);
node=[_xmlDocument root];
NSAssert1(node,@"%@ Empty Document (root)",
[self logPrefix]);
#ifndef NDEBUG
{
NSString* dumpString=[self dumpNode:node
atLevel:0];
NSDebugMLLog(@"low",@"%@ _xmlDocument=\n%@",
[self logPrefix],
dumpString);
};
#endif
/* if (node->type!=XML_DTD_NODE)
{
NSLog(@"Bad first node type: %@ instead of %@",
[nodeTypes objectForKey:[NSString stringWithFormat:@"%d",(int)node->type]],
[nodeTypes objectForKey:[NSString stringWithFormat:@"%d",(int)XML_DTD_NODE]]);
};
*/
NSDebugMLog(@"Test Root");
if ([node type]!=XML_ELEMENT_NODE)
node=[node children];
NSDebugMLog(@"Test Root children");
NSAssert1(node,@"%@ Empty Document ([root children])",
[self logPrefix]);
if ([node type]!=XML_ELEMENT_NODE)
node=[node next];
NSDebugMLog(@"Test Root children Next");
NSAssert1(node,@"%@ Empty Document ([[root children] next])",
[self logPrefix]);
if (node)
{
NSDebugMLog(@"Call createElementsFromNode:");
NS_DURING
{
elements=[self createElementsFromNode:node];
}
NS_HANDLER
{
LOGError(@"%@ Exception in elements creation!",
[self logPrefix]);
localException=ExceptionByAddingUserInfoObjectFrameInfo(localException,
@"%@ - Exception in elements creation",
[self logPrefix]);
[localException retain];
[localException autorelease];
[localException raise];
}
NS_ENDHANDLER;
};
};
};
LOGObjectFnStop();
return elements;
};
//--------------------------------------------------------------------
/*
text [Type:XML_TEXT_NODE] [{}] ####
head [Type:XML_ELEMENT_NODE] [{}] ##(null)##
title [Type:XML_ELEMENT_NODE] [{}] ##(null)##
text [Type:XML_TEXT_NODE] [{}] ##MyTitle##
text [Type:XML_TEXT_NODE] [{}] ####
body [Type:XML_ELEMENT_NODE] [{bgcolor = white; }] ##(null)##
text [Type:XML_TEXT_NODE] [{}] ####
gsweb [Type:XML_ELEMENT_NODE] [{name = MyObject; }] ##(null)##
text [Type:XML_TEXT_NODE] [{}] ##AText##
p [Type:XML_ELEMENT_NODE] [{align = center; }] ##(null)##
text [Type:XML_TEXT_NODE] [{}] ##Text2##
b [Type:XML_ELEMENT_NODE] [{}] ##(null)##
text [Type:XML_TEXT_NODE] [{}] ##Text3##
text [Type:XML_TEXT_NODE] [{}] ####
text [Type:XML_TEXT_NODE] [{}] ##TEXTB##
comment [Type:XML_COMMENT_NODE] [{}] ##MyComment##
text [Type:XML_TEXT_NODE] [{}] ##TEXTC##
text [Type:XML_TEXT_NODE] [{}] ####
*/
-(NSArray*)createElementsFromNode:(GSXMLNode*)node
{
GSXMLNode* currentNode=node;
NSMutableArray* _elements=nil;
NSAutoreleasePool* arp = nil;
LOGObjectFnStart();
_elements=[NSMutableArray array];
arp=[NSAutoreleasePool new];
while(currentNode)
{
GSWElement* elem=nil;
NSDebugMLog(@"BEGIN node=%p %@ [Type:%@] [%@] ##%@##\n",
currentNode,
[currentNode name],
[currentNode typeDescription],
[currentNode propertiesAsDictionary],
[currentNode content]);
switch([currentNode type])
{
case XML_TEXT_NODE:
{
elem=[GSWHTMLBareString elementWithString:[currentNode content]];
NSDebugMLog(@"TEXT element=%@",elem);
};
break;
case XML_COMMENT_NODE:
{
elem=[GSWHTMLBareString elementWithString:[currentNode content]];
NSDebugMLog(@"COMMENT element=%@",elem);
};
break;
default:
{
NSArray* children=nil;
NSDictionary* nodeAttributes=nil;
NSString* nodeName=nil;
NSString* nodeNameAttribute=nil;
nodeName=[currentNode name];
NSDebugMLog(@"DEFAULT (%@)",nodeName);
if ([currentNode children])
{
children=[self createElementsFromNode:[currentNode children]];
NSDebugMLog(@"node=%p children=%@",currentNode,children);
};
//if (currentNode->type==XML_ELEMENT_NODE)
{
nodeAttributes=[currentNode propertiesAsDictionary];
nodeNameAttribute=[nodeAttributes objectForKey:@"name"];
NSDebugMLog(@"node=%p nodeAttributes=%@",currentNode,nodeAttributes);
NSDebugMLog(@"node=%p nodeNameAttribute=%@",currentNode,nodeNameAttribute);
if ([nodeName caseInsensitiveCompare:@"gsweb"]==NSOrderedSame)
{
GSWPageDefElement* definitionsElement=nil;
if (!nodeNameAttribute)
{
ExceptionRaise(@"GSWTemplateParser",
@"%@ No element name for gsweb tag",
[self logPrefix]);
}
else
{
definitionsElement=[_definitions objectForKey:nodeNameAttribute];
NSDebugMLLog(@"low",@"definitionsElement:[%@]",
definitionsElement);
NSDebugMLLog(@"low",@"GSWeb Tag definitionsElement:[%@]",
definitionsElement);
if (!definitionsElement)
{
ExceptionRaise(@"GSWTemplateParser",
@"%@ No element definition for tag named:%@",
[self logPrefix],
nodeNameAttribute);
}
else
{
NSDictionary* _associations=[definitionsElement associations];
NSString* className=[definitionsElement className];
NSDebugMLLog(@"low",@"node=%p GSWeb Tag className:[%@]",currentNode,className);
if (!className)
{
ExceptionRaise(@"GSWTemplateParser",
@"%@No class name in page definition for tag named:%@ definitionsElement=%@",
[self logPrefix],
nodeNameAttribute,
definitionsElement);
}
else
{
NSDebugMLLog(@"low",@"node=%p associations:%@",currentNode,_associations);
{
NSEnumerator* _nodeAttributesEnum = [nodeAttributes keyEnumerator];
id _tagAttrKey=nil;
id _tagAttrValue=nil;
NSMutableDictionary* _addedAssoc=nil;
while ((_tagAttrKey = [_nodeAttributesEnum nextObject]))
{
if (![_tagAttrKey isEqualToString:@"name"] && ![_associations objectForKey:_tagAttrKey])
{
if (!_addedAssoc)
_addedAssoc=(NSMutableDictionary*)[NSMutableDictionary dictionary];
_tagAttrValue=[nodeAttributes objectForKey:_tagAttrKey];
[_addedAssoc setObject:[GSWAssociation associationWithValue:_tagAttrValue]
forKey:_tagAttrKey];
};
};
if (_addedAssoc)
{
_associations=[_associations dictionaryByAddingEntriesFromDictionary:_addedAssoc];
};
};
NSDebugMLog(@"node=%p gsweb name=%@ dynamicElementWithName: children=%@",
currentNode,
nodeNameAttribute,
children);
NSDebugMLog(@"node=%p %@ [Type:%@] [%@] ##%@##\n",
currentNode,
[currentNode name],
[currentNode typeDescription],
[currentNode propertiesAsDictionary],
[currentNode content]);
elem=[GSWApp dynamicElementWithName:className
associations:_associations
template:[[[GSWHTMLStaticGroup alloc]initWithContentElements:children]autorelease]
languages:_languages];
NSDebugMLog(@"node=%p element=%@",currentNode,elem);
if (!elem)
{
ExceptionRaise(@"GSWTemplateParser",
@"%@ Creation failed for element named:%@ className:%@",
[self logPrefix],
[definitionsElement elementName],
className);
};
};
};
};
}
else
{
NSDictionary* _associations=nil;
NSEnumerator* _nodeAttributesEnum = [nodeAttributes keyEnumerator];
id _tagAttrKey=nil;
id _tagAttrValue=nil;
NSMutableDictionary* _addedAssoc=nil;
NSDebugMLog(@"node=%p Create nodeName=%@",currentNode,nodeName);
while ((_tagAttrKey = [_nodeAttributesEnum nextObject]))
{
if (![_tagAttrKey isEqualToString:@"name"] && ![_associations objectForKey:_tagAttrKey])
{
if (!_addedAssoc)
_addedAssoc=(NSMutableDictionary*)[NSMutableDictionary dictionary];
_tagAttrValue=[nodeAttributes objectForKey:_tagAttrKey];
[_addedAssoc setObject:[GSWAssociation associationWithValue:_tagAttrValue]
forKey:_tagAttrKey];
};
};
if (_addedAssoc)
{
_associations=[NSDictionary dictionaryWithDictionary:_addedAssoc];
};
NSDebugMLog(@"node=%p StaticElement: children=%@",currentNode,children);
elem=[[[GSWHTMLStaticElement alloc]initWithName:nodeName
attributeDictionary:_associations
contentElements:children]autorelease];
NSDebugMLog(@"node=%p element=%@",currentNode,elem);
};
};
};
break;
};
[_elements addObject:elem];
NSDebugMLog(@"END node=%p %@ [Type:%@] [%@] ##%@##\n",
currentNode,
[currentNode name],
[currentNode typeDescription],
[currentNode propertiesAsDictionary],
[currentNode content]);
currentNode=[currentNode next];
};
DESTROY(arp);
LOGObjectFnStop();
NSDebugMLog(@"_elements=%@",_elements);
return _elements;
};
@end
//====================================================================
// used only for XML/XMLHTML differences
@implementation GSWTemplateParserXMLHTML
@end

View file

@ -102,6 +102,7 @@ extern BOOL boolValueWithDefaultFor(id id_,BOOL default_);
extern BOOL isHeaderKeysEqual(NSString* headerKey,NSString* testKey);
extern BOOL SBIsEqual(id id1,id id2);
extern BOOL SBIsValueEqual(id id1,id id2);
extern BOOL SBIsValueIsIn(id id1,id id2);
extern id GetTmpName(NSString* dir,NSString* prefix);
extern NSTimeInterval NSTimeIntervalFromTimeVal(struct timeval* tv);
@ -417,7 +418,7 @@ extern NSData* HexStringToData(NSString* _string);
-(void)deleteFirstBytesCount:(unsigned int)bytesCount_;
-(void)deleteLastBytesCount:(unsigned int)bytesCount_;
@end
/*
//====================================================================
typedef enum _NSNumFmtType
{
@ -437,5 +438,5 @@ typedef enum _NSNumFmtType
forString:(NSString*)string
errorDescription:(NSString**)error;
@end
*/
#endif // _GSWebUtils_h__

View file

@ -127,22 +127,35 @@ BOOL SBIsValueEqual(id id1,id id2)
{
BOOL _equal=SBIsEqual(id1,id2);
if (!_equal
&& [id1 class]!=[id2 class])
{
if ([id1 isKindOfClass:[NSString class]])
{
NSString* _id2String=[NSString stringWithObject:id2];
_equal=[id1 isEqualToString:_id2String];
}
else if ([id2 isKindOfClass:[NSString class]])
{
NSString* _id1String=[NSString stringWithObject:id1];
_equal=[id2 isEqualToString:_id1String];
};
};
&& [id1 class]!=[id2 class])
{
if ([id1 isKindOfClass:[NSString class]])
{
NSString* _id2String=[NSString stringWithObject:id2];
_equal=[id1 isEqualToString:_id2String];
}
else if ([id2 isKindOfClass:[NSString class]])
{
NSString* _id1String=[NSString stringWithObject:id1];
_equal=[id2 isEqualToString:_id1String];
};
};
return _equal;
};
//--------------------------------------------------------------------
BOOL SBIsValueIsIn(id id1,id id2)
{
int i=0;
int count=[id2 count];
for(i=0;i<count;i++)
{
if (SBIsValueEqual(id1,[id2 objectAtIndex:i]))
return YES;
};
return NO;
};
//--------------------------------------------------------------------
id GetTmpName(NSString* dir,NSString* prefix)
{
@ -1980,7 +1993,7 @@ NSData* HexStringToData(NSString* _string)
};
@end
/*
//====================================================================
@implementation NSNumberFormatter
@ -2106,3 +2119,4 @@ NSData* HexStringToData(NSString* _string)
};
@end
*/

View file

@ -60,6 +60,7 @@
#include <Foundation/NSConcreteNumber.h>
#include <Foundation/NSGArray.h>
#include <Foundation/NSFormatter.h>
#include <Foundation/GSXML.h>
#include "GSCache.h"
@ -260,6 +261,8 @@
#include <gsweb/GSWeb.framework/GSWProjectBundle.h>
#include <gsweb/GSWeb.framework/GSWMultiKeyDictionary.h>
#include <gsweb/GSWeb.framework/GSWTemplateParser.h>
#include <gsweb/GSWeb.framework/GSWTemplateParserXML.h>
#include <gsweb/GSWeb.framework/GSWTemplateParserANTLR.h>
#include <gsweb/GSWeb.framework/GSWDynamicURLString.h>
#include <gsweb/GSWeb.framework/GSWBindingNameAssociation.h>
#include <gsweb/GSWeb.framework/GSWURLValuedElementData.h>

View file

@ -58,7 +58,13 @@ gsdocs:
cd ..; )
# Things to do after installing
# after-install::
after-install::
@if [ ! -f $(dstDTDDir) ]; then \
$(MKDIRS) $(dstDTDDir); \
fi; \
for file in $(DTD_FILES); do \
$(INSTALL_DATA) $(srcDTDDir)/$$file $(dstDTDDir)/$$file; \
done;
# Things to do before uninstalling
# before-uninstall::

View file

@ -38,7 +38,11 @@ ADDITIONAL_CPPFLAGS =
# Additional flags to pass to the Objective-C compiler
#new
ADDITIONAL_OBJCFLAGS = -DUSE_BUILTIN
ifeq ($(GDL2), yes)
ADDITIONAL_OBJCFLAGS = -DUSE_BUILTIN -DGDL2
else
ADDITIONAL_OBJCFLAGS = -DUSE_BUILTIN
endif
# Additional flags to pass to the C compiler
#new
@ -49,9 +53,9 @@ ADDITIONAL_INCLUDE_DIRS = -I. -I$(GNUSTEP_SYSTEM_ROOT)/db -I../..
# Additional LDFLAGS to pass to the linker
ifeq ($(debug), yes)
ADDITIONAL_LDFLAGS = -lFoundationExt_d
ADDITIONAL_LDFLAGS = -lFoundationExt_d -lxml -lz
else
ADDITIONAL_LDFLAGS = -lFoundationExt
ADDITIONAL_LDFLAGS = -lFoundationExt -lxml -lz
endif
# Additional library directories the linker should search

View file

@ -2,3 +2,4 @@
#
#
DYNAMIC_LINKER=simple
#GDL2=yes