Ada Semantic Interface Specification (ASIS) An Interface

Download Report

Transcript Ada Semantic Interface Specification (ASIS) An Interface

Introduction to Web Technologies
for Effective Dissemination
of Information
13 November 2000
SIGAda 2000
Mr. Currie Colket
SIGAda Home Page 
http://www.acm.org/sigada
SIGAda Vice Chair for Meetings and Conferences
Phone: (703) 883-7381; Email: [email protected] | [email protected]
Dr. John McCormick
SIGAda Secretary
Phone: (319) 273-2618; Email: [email protected] | [email protected]
Mr. David A. Wheeler
Institute for Defense Analyses
Phone: (703) 845-6662; Email: [email protected] | [email protected]
Mr. Clyde Roby
Institute for Defense Analyses
Phone: (703) 845-6666; Email: [email protected]
Motivation
This tutorial is designed for the SIGAda volunteer interested
in using WWW technologies to promote Local activities and
Working Group activities. At the end of this tutorial, you will
be able to:
•
•
•
•
•
•
•
Use simple web-authoring tools
Develop your own Home Page
Tailor it to effectively communicate to your audience
Establish Home Page on ACM host
Use simple web-posting tools
Use simple web-verification tools
Establish maillists for your activity
13 November 2000
SIGAda WWW 2
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Overview
• Introduction to WWW and SIGAda Home Page as Notional Example
(John McCormick ~ 20 minutes)
• Introduction to HTML and use of Netscape Composer
(Currie Colket ~ 90 minutes)
• Effective Design Strategies Appropriate to Disseminating Information
(Clyde Roby ~ 30 minutes)
• Tools to Manage Development of Web Pages
(Clyde Roby ~ 40 minutes)
• Introduction to Ada CGI (David A. Wheeler ~ 90 minutes)
• Using ACM WWW and Maillist Facilities
(John McCormick ~ 60 minutes)
Start:
Break:
Lunch:
Back:
Break:
End:
8:30
10:00
12:00
1:30
3:00
5:00
• Introduction to XML (Currie Colket ~ 30 minutes)
13 November 2000
SIGAda WWW 3
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Introduction to
SIGAda Home Page
as Notional Example
John McCormick
SIGAda Secretary
13 November 2000
SIGAda WWW 4
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Home Page - 1
13 November 2000
SIGAda WWW 5
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Home Page - 2
13 November 2000
SIGAda WWW 6
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Home Page - 3
13 November 2000
SIGAda WWW 7
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Home Page - 4
13 November 2000
SIGAda WWW 8
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Home Page - 5
13 November 2000
SIGAda WWW 9
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Home Page - 6
13 November 2000
SIGAda WWW 10
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Home Page - 7
13 November 2000
SIGAda WWW 11
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Introduction to HTML and
use of Netscape Composer
Currie Colket
MITRE
SIGAda Vice Chair
for
Meetings and Conferences
13 November 2000
SIGAda WWW 12
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Introduction to HTML
•
•
•
•
•
•
•
•
•
•
•
•
•
HTML Basics
Fonts; Colors; Bold; Italics
Creating Lists
Creating Links to URLs
Creating Anchors/Targets
Creating Relative Links
Creating Mailto Links
Incorporating Images
Putting Code On-line
Forms
Using the HTML <Head>
Netscape Composer (a WYSIWYG)
Creating Tables
13 November 2000
SIGAda WWW 13
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Motivation for Knowing HTML
Many WYSIWYG Tools- Why Learn HTML?
• Output of tools is not always portable
• Some use advanced features of HTML
• Some use non-standard extensions of HTML
• Some tools generate XML instead of HTML
• Browsers typically omit information not understood
• Many browsers can’t handle XML
• Tools can not always support desired goals
• Occasionally cleanup of HTML code is required
• Porting from one tool to another
• Eliminate garbage automatically generated
• Strengthens understanding of WWW capabilities
• Understanding HTML is good foundation for XML
13 November 2000
SIGAda WWW 14
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
What is HTML
• Lingua franca for publishing hypertext on the World Wide Web
• Non-proprietary format based upon SGML
• Created and processed by a wide range of tools
from simple plain text editors to sophisticated WYSIWYG authoring tools
• Uses tags such as <h1> and </h1> to structure text for Presentation
• Browsers attempt to produce page even when there are errors
• Produced by W3C as recommendation; voted on by Consortium members
http://www.w3.org/MarkUp/
• Status: Version 4.01 is current recommendation, replacing Version 3.2
• Support for Style Sheets - Control color, font, and layout
• Internationalization Features - text right to left (Hebrew & Arabic)
• Accessibility Features - Braille and speech synthesizers
• Tables and Forms - many new features
• Scripting and Multimedia - many new features
• 3 Flavors of HTML:
• Transitional - take some advantage of 4.0, but primarily support 3.2
• Strict - use style sheets, i.e., free of tags associated with layout
• Frameset - used to partition browser into one or more frames
13 November 2000
SIGAda WWW 15
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
HTML Basics
HTML: HyperText Markup Language is Semantic Markup
physical: indent 1.0”, Use 24-Point Roman Font, Print “Hello”
•
•
•
•
•
semantic: <H1>Hello</H1>
uses markup tags
Physical is WYSIWYG; HTML will differ on each system
Designed to be extensible, in fact, still evolving
Uses HyperText Transport Protocol (HTTP)
Tag names are case insensitive
• Some Tags have attributes
HTML Program Structure:
<HTML>
<HEAD>
<Title>
<!--Non-visible stuff here-->
</heaD>
<Body>
<!--Visible stuff here-->
</BODY>
</HTML>
<BODY BACKGROUND=“my_file.jpg”
T EXT="#000000" LINK="#0000ff"
VLINK="#ff0000" BGCOLOR="#ffffef">
• Text is continuous
regardless of spaces/CR
• Most Tags in pairs; solo:
<P> Paragraph Break
<Br> Line Break
<HR> Horizontal Rule
13 November 2000
SIGAda WWW 16
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Fonts; Colors; Bold; Italics
<H1> Highlighting HTML </H1>
Characters can be highlighted using
<B>Boldfaced</B>,
<BIG>Big and <BIG>Bigger</BIG></BIG> text,
<I>Italicized text</I>,
<S>Strike-through Text</S>,
<SMALL> Small and <SMALL>
Smaller </SMALL> </SMALL> text,
with <SUB>Subscripts</SUB> and
<SUP>Superscripts</SUP>,
with <TT>Typewriter font</TT> and even
<U> underlining for emphasis. </U>
<P>There is also a concept of
Logical Highlighting using
<STRONG>Strongly Emphasized</STRONG> Text,
<CODE>Computer Code</CODE> Text,
<KBD>Keyboard Character</KBD> Text,
<SAMP>Literal Character</SAMP> Text,
<DFN>Defining Instance</DFN> Text,
<EM>Emphasized</EM> Text,
<VAR>Variable</VAR> Text,
<STRIKE>Strike-out</STRIKE> Text.
<P><CENTER><FONT COLOR="#009900">
<FONT SIZE=+4>SIGAda</FONT></FONT>
<BR><FONT COLOR="#FF0000"> <FONT SIZE=+3>
WWW Tutorial</FONT></FONT>
<FONT COLOR="BLUE"> <FONT SIZE=+2>
<P> Sunday, 7:30 - 11:30 PM</FONT></FONT></CENTER>
13 November 2000
SIGAda WWW 17
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Creating Lists
<H1> List Example </H1>
<P>The 3 most important things in
real estate are: [Ordered Lists]
<OL>
<Li> Location,
<Li> Location, and </Li>
<Li> Location (It should be noted that all
lists will wrap around with the correct
indentation desired for the screen.
</OL>
The most important things in talking
about software are: [UnOrdered Lists]
<UL>
<Li> Using Bullets Correctly
<Li> Using Plenty of Bullets, and
<Li> Using Subordinate Bullets When Necessary
<OL TYPE="a">
<Li> With Letters
<Li> Again with Letters
<OL TYPE="i">
<Li> With Small Roman Numerals </OL>
<OL TYPE="I">
<Li> With Large Roman Numerals</OL>
<OL TYPE="1">
<Li> With Numbers </OL>
<OL TYPE="1" START="7">
<Li> Even With Numbers Out of Sequence </OL>
</OL></UL>
13 November 2000
SIGAda WWW 18
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Creating Links to URLs - 1
<H1> Link Example </H1>
<P>The following URLs contain useful information on using html:
<OL>
<LI> <A HREF="http://www.w3.org/MarkUp/">W3C HTML Home Page</A> <I>http://www.w3.org/MarkUp/</I>
<LI> <A HREF="http://www.w3.org/MarkUp/Activity.html">W3C User Interface Domain</A> <I>http://www.w3.org/MarkUp/Activity.html</I>
<LI> <A HREF="http://www.cc.ukans.edu/~acs/docs/other/HTML_quick.shtml">HTML Quick Reference</A> <I>http://www.cc.ukans.edu/~acs/docs/other/HTML_quick.shtml</I>
<LI> <A HREF="http://werbach.com/barebones/">The Bare Bones Guide to HTML</A> <I>http://werbach.com/barebones/</I>
<LI> <A HREF="http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/d2-htmlinfo.html">
Creating HTML Documents</A> <I>http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/d2-htmlinfo.html</I>
<LI> <A HREF="http://www.eclipse.net/derek/">HTML Primers and Tutorials</A> <I>http://www.eclipse.net/derek/</I>
<LI> <A HREF="http://www.bbsinc.com/symbol.html">
ISO Latin 1 Character Entities and HTML Escape Sequence Table</A> <I>http://www.bbsinc.com/symbol.html</I>
<LI> <A HREF="http://www.willcam.com/cmat/html/crossref.html">Compact Index of HTML Tags</A> <I>http://www.willcam.com/cmat/html/crossref.html</I>
<LI> <A HREF="http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/d2-tech.html">
HTML, URL, and HTTP Technical Information and Specifications</A> <I>http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/d2-tech.html</I>
<LI> <A HREF=”
http://dir.yahoo.com/Computers_and_Internet/Information_and_Documentation/Data_Formats/HTML/">
Yahoo HTML Search Node</A> <I>http://dir.yahoo.com/Computers_and_Internet/Information_and_Documentation/Data_Formats/HTML/</I>
</OL>
13 November 2000
SIGAda WWW 19
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Creating Links to URLs - 2
13 November 2000
SIGAda WWW 20
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Creating Anchors/Targets
<HTML>
<HEAD>
<TITLE>Anchors/Targets Example</TITLE>
</HEAD>
<BODY>
<H1>Anchors/Targets Example</H1>
<P>Navigation:
<A HREF="#Email">Email Addresses</A> |
<A HREF="#News">News</A> |
<A HREF="#Weather">Weather</A> <Br></P>
<H2><A NAME="Email">Email Addresses</H2>
<UL>
<LI><A HREF="email.html">
Pelot Email Addresses</A> </LI>
<LI><A HREF="email.html#Colket">
Colket Email Addresses</A>
<IMG SRC="gif/updated.gif"
WIDTH=46 HEIGHT=11></LI>
<LI><A HREF="email.html#Colcord">
Colcord Email Addresses</A> </LI>
</UL>
<H2><A NAME="News">News</H2>
News stuff
<H2><A NAME="Weather">Weather</H2>
Weather Stuff
</HTML>
13 November 2000
SIGAda WWW 21
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Creating Relative Links
<H1><A NAME="Top">Relative Link Example</H1>
<P>Navigation:
<A HREF="http://www.colket.org/">
To www.colket.org</A> |
<A HREF="file:///c|/www/index.html">
To C Drive</A> <Br>
</P>
Technology Resources:
<A HREF="acronyms.html">Acronyms</A> |
<A HREF="Ada.html">Ada</A> |
<A HREF="confere.html#Conferences_Future">
Conferences</A> |
<A HREF="html.html">HTML</A> |
<A HREF="internet.html">Internet</A> |
<A HREF="java.html#Internet">Java</A> |
<A HREF="OO.html#OO">OO</A> |
<A HREF="Reuse.html">Reuse</A> |
<A HREF="email.html">Email Addresses</A> <Br>
Useful for Program Development
File on local system has same
relative name as file on remote
system
Switch from one system to other
with simple click
13 November 2000
SIGAda WWW 22
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Creating Mailto Links
<HTML>
<HEAD>
<TITLE>Mailto Example </TITLE>
</HEAD>
<BODY>
<H1> Mailto Example </H1>
Please email comments on this course to
<A HREF="mailto:
&quot;Currie Colket&quot;
&lt;[email protected]&gt;,
&quot;Brad Balfour&quot;
&lt;[email protected]&gt;,
&quot;Clyde Roby&quot;
&lt;[email protected]&gt;,
&quot;John McCormick&quot;
&lt;[email protected]&gt;"
TITLE="Comments on Course">
Currie, Brad, Clyde, and John</A>
<P><ADDRESS>Currie Colket
<A HREF="mailto:[email protected]">
([email protected])</A> </ADDRESS>
</BODY>
</HTML>
&quot;Currie Colket&quot; &lt;[email protected]&gt;
is equivalent to
“Currie Colket” <[email protected]>
13 November 2000
SIGAda WWW 23
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Incorporating Images
<H1> Image Example </H1>
<P>
ASIS is an interface
between an Ada environment
as defined by ISO/IEC
8652:1995 (the Ada
Reference Manual)
<IMG Align=bottom SRC="gif/new.gif">
and any tool requiring
Bad Form
information from this
environment, as shown below:
<IMG SRC="gif/updated.gif"
WIDTH=46 HEIGHT=11>
Good Form
<Center>
<IMG SRC="gif/asis.gif" Better Form
ALT="ASIS as interface to
Ada compilation environment"
WIDTH=488 HEIGHT=306><BR>
<B>ASIS as interface to Ada
compilation environment</B>
Above image made in PowerPoint by:
</Center>
• Creating image; cutting it from page
• Using Page Setup, selecting landscape, 3”x5”
Size is important; allows
• Pasting image onto page; aligning it to center
for building page sans images
• Saving as gif (or jpeg)
ALT for browsers without graphics • Obtaining size using Photo Editor Resize function
or browsers turned off
13 November 2000
SIGAda WWW 24
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Putting Code On-line
<H1> Code Example </H1>
<P>
EXAMPLE:
<pre>
Loop iteration scheme
List : constant Asis.Element_List :=
-- 3.7
<I>&lt;ASIS function returning a list>;</I>
An_Element : Asis.Element;
-- 3.6
begin
for I in List'Range loop
An_Element := List (I);
<STRONG>Process (An_Element);
</STRONG>end loop;
</pre>
Use <PRE> for large blocks of code
•For Preformatted text
•Characters in fixed width
•Preserves space characters, CR
•Allows for character emphasis
•Anchors and text highlighting tags only
13 November 2000
SIGAda WWW 25
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Forms - 1
<H1> Form Example </H1>
<FORM ACTION="mailto:[email protected]" METHOD="POST">
<B>Last Name: </B><INPUT TYPE="TEXT" MAXLENGTH="255" NAME="Lastname">
<B>First Name: </B><INPUT TYPE="TEXT" MAXLENGTH="255" NAME="Firstname"><Br>
<B>Address Line 1: </B><INPUT TYPE="TEXT" MAXLENGTH="255" SIZE="50" NAME="Address1"><Br>
<B>Address Line 2: </B><INPUT TYPE="TEXT" MAXLENGTH="255" SIZE="50" NAME="Address2"><Br>
<B>City: </B><INPUT TYPE="TEXT" MAXLENGTH="40" NAME="City">
<B>State: </B><SELECT NAME="State" >
<OPTION SELECTED> DC
<OPTION> MD
<OPTION> VA
</SELECT>
<B>Zip: </B><INPUT TYPE="TEXT" MAXLENGTH="15" NAME="Zip">
Action
Text Input
Text Options
<P><B>Area Code: </B><INPUT TYPE="TEXT" MAXLENGTH="3" SIZE="3" NAME="Area_Code">
<B>Phone: </B><INPUT TYPE="TEXT" MAXLENGTH="15" NAME="Phone">
<B>E-mail: </B><INPUT TYPE="TEXT" MAXLENGTH="80" SIZE="30" NAME="Email">
<P><B>Volunteer Interests:</B>
[<INPUT TYPE="checkbox" NAME="Interests" VALUE="Program" CHECKED>Program]
[<INPUT TYPE="checkbox" NAME="Interests" VALUE="Publicity">Publicity]
[<INPUT TYPE="checkbox" NAME="Interests" VALUE="Local">Local Arrangements]
<SMALL><EM>(Multiple items can be selected.)</EM></SMALL>
<P><B>Ada Awareness Initiative: </B>
<INPUT TYPE="radio" NAME="Ada_awareness" VALUE="Yes" CHECKED > Yes
<INPUT TYPE="radio" NAME="Ada_awareness" VALUE="No" >
No
<INPUT TYPE="radio" NAME="Ada_awareness" VALUE="Maybe"> Maybe
<SMALL><EM>(Only one item can be selected.)</EM></SMALL><Br>
<CENTER><TEXTAREA COLS=60 ROWS=4 WRAP="on" NAME="Special_Notes">
Enter any special comments you might have here.
</TEXTAREA></CENTER>
<P> <INPUT TYPE="submit" NAME="sub" VALUE="Send Form">
<INPUT TYPE="reset" VALUE="Reset Form">
</FORM>
Checkboxes
Radios
Text Areas
Submit/Reset
13 November 2000
SIGAda WWW 26
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Forms - 2
13 November 2000
SIGAda WWW 27
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Forms - 3
<FORM ACTION="mailto:[email protected]" METHOD="POST">
Netscape returns as attachment Type:
Email = Subject: Form posted from Mozilla
application/x-www-form-urlencoded
Lastname=Colket&Firstname=Currie
Others return in different formats.
&Address1=9906+Dale+Ridge+Court
&Address2=&City=Vienna&State=VA&Zip=22181-5348
&Area_Code=703&Phone=883-7381
&Email=colket%40acm.org
&Interests=Program&Ada_awareness=Yes
&Special_Notes=This+is+a+demonstration+of+posting+forms.
+Notice+how+the+text+automatically+wraps
+around+as+the+information+is+typed.%0D%0A++&sub=Send+Form
< FORM ACTION ="https://swww.acm.org/signup.cgi" method="post">
Use Ada95 bindings to CGI to automatically process form.
• Automatically confirm submission of form
• Automatically update database
• Perform other analysis of submitted information
13 November 2000
David Wheeler
will address
Ada95 Bindings
to CGI
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda WWW 28
Using the HTML <Head>
TITLE (Only required <HEAD> Element)
• Used as name for Bookmarks (those >60 are blank)
• Used to label display window or text screen
• Used by browsers as quick index mechanism
Example: <TITLE> ACM SIGAda Home Page </TITLE>
META (Optional - But highly recommended)
• Used for Meta information not explicitly defined elsewhere, Examples:
<META NAME=“Keywords” CONTENT= “Ada, Safety-Critical, SE”>
<META HTTP-EQUIV=“Creation-Date” CONTENT= “17-Oct-99”>
BASE (Optional & NOT Recommended)
• Used for recording the base URL of the document
• Prevents relative links from developmental environments
• Recorded as URL in Bookmarks instead of actual URL
Example: <BASE HREF=“http://www.acm.org/SIGAda/index.html” >
13 November 2000
SIGAda WWW 29
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Netscape Composer
13 November 2000
SIGAda WWW 30
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Creating Tables
13 November 2000
SIGAda WWW 31
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Effective
Design Strategies
Appropriate to
Disseminating Information
Clyde Roby
IDA
Note: Originally developed by Brad Balfour of Objective Interface
13 November 2000
SIGAda WWW 32
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
This Section: Concept and Goals
• Main Goal:
– To help understand the many ways that the WWW can be used
to communicate information
• Secondary Goal:
– To help new “designers” to effectively choose appropriate
techniques from among the many that the web provides
• Technique: Descriptive rather than Prescriptive
• Present a series of questions to be asked in order
to decide what structure and techniques to use to
build the web pages (web site)
• Also will present a list of “rules” (both the
commonly agreed upon and the controversial)
13 November 2000
SIGAda WWW 33
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Building A Collection of Web Pages —
Things to Think About
•
•
•
•
•
•
•
•
•
•
The Audience
Ways the Audience Gets Info and Gets Notified of Changes
Frequency of Browsing by Audience
Why Does the Audience Need Your Site
What Makes the Site Attractive
Kinds of Sites
Types of Information Provided
Organizing the Information
Types of Content
Design Tips/“Rules”
13 November 2000
SIGAda WWW 34
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
The Audience
•Who are they?
•What do they need?
•What do they want?
•How experienced are they?
•What do they already know?
•What do they want to find out?
•How similar are they to the webmaster?
•How different are they from the webmaster?
•Are they using modern browsers on fast machines?
•Are their graphics enabled?
13 November 2000
SIGAda WWW 35
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Ways the Audience Gets Info
and Gets Notified of Changes
• Push versus Pull Site Info
• Push versus Pull Change Notification
– Interrupt versus Polling
– Most web sites are pull only and have no push content
» Not even for notification of changes/updates/new info
•
•
•
•
•
Browsing oriented site info organization
Search oriented site info organization
“Channels”
E-mail notification plus Web-Site
Print “Ads” notification of web-site (or TV)
13 November 2000
SIGAda WWW 36
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Frequency of Browsing
by Audience
•
•
•
•
•
•
Multiple Times a Day
Daily
Weekly
Monthly
When Notified
Only when first found
– Or found via a search engine
– Or found via a link to the site from the outside
• When ready to purchase
• Reference Only (based on external need for info)
13 November 2000
SIGAda WWW 37
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Why Does the Audience
Need Your Site
•
•
•
•
•
Uniqueness?
Timeliness?
Loyalty?
Membership?
Who is your Competition?
–
–
–
–
–
Within SIGAda
Within Ada Community
Within ACM
Within the community of programming languages
With the software development community
13 November 2000
SIGAda WWW 38
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
What Makes the Site Attractive
•
•
•
•
•
•
•
Content?
Look and Feel?
Responsiveness?
Satisfying the Audience’s need?
How much is too much?
How much is too little?
Issues:
–
–
–
–
Connection Speed (everyone focuses on this)
Form versus Content (is it “versus”?)
Uniqueness versus Sameness
Freshness of content and form
13 November 2000
SIGAda WWW 39
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Kinds of Sites
• Informational
– e.g., medicine, academia, most .org
• News
– e.g., CNN, MSNBC, ESPN
• Product/Service Oriented (Sales secondary via ads)
– e.g., Kelly Blue Book
• Sales/Selling Oriented
– e.g., “catalog” ordering, Ford, most product companies
• Organizational - Member Oriented
– e.g., info to members only or predominately
• Organizational - Outreach Oriented
– e.g., get new members to join based on info
13 November 2000
SIGAda WWW 40
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Types of Information Provided
(SIGAda specific)
•
•
•
•
•
•
•
Technical info
Copies of printed publications
Software (source code and/or executables)
Papers
Data on experiences/results
Membership info
Organizational infrastructure (e.g., meeting minutes,
org. structure, motions, charter, etc)
• Historical info (e.g., past e-mail list traffic archive,
conference results)
• Contact info
• Links to other sites
13 November 2000
SIGAda WWW 41
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Organizing the Information
• Types:
–
–
–
–
•
•
•
•
Linear
Hierarchy
Graph (DAG)
Random
Depth of Links
Breadth of Links
What is the relationship between the contents
What do people need to find?
– What do they know when they want to find it?
• Search oriented users versus Browsing users
13 November 2000
SIGAda WWW 42
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Types of Content
• Text
• Graphics
• Multimedia
– Video
– Sound
• Stored Documents
– Ftp
– Served Interactively
– (format: PDF, PS, text)
• Software
–
–
–
–
Source
Executable
Browsed on-line (hyperlinked)
Downloaded
• Steak versus Sizzle
• Content versus
Presentation
• Competition
• General overall Level of
“Professionalism”
• Native to the browser
versus needs plug-in
• Use of JavaScript
• Use of Java
• Use of cgi
13 November 2000
SIGAda WWW 43
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Design Tips/“Rules”
Commonly Agreed Upon
Controversial
(like Multiple Inheritance)
• No blinking text
• KISS
• Frames
• Don’t overwhelm with
• All sites must be fast to
graphics
download
– What’s the connection speed
• Navigate with text instead
of your users (home versus
of/in addition to any image
work)
maps (unless the
navigation is truly
graphical like a map)
• Make the organization
obvious (and help show
users where they are at all
times)
• Keep links & site up to date
13 November 2000
SIGAda WWW 44
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Tools to
Manage Development
of Web Pages
Clyde Roby
IDA
[email protected]
13 November 2000
SIGAda WWW 45
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Goal and Concepts
• Goal: Development, Management, and Update of
a Web Site (many web pages)
• Development and Organization
• Management
• Updating the Web Site
• Fixing the Web Site
• Tools to do the Job
• An Example: The ASIS Web Site
13 November 2000
SIGAda WWW 46
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Web Development
• Local Development of Web Pages
• Development of Informational Materials
• Moving Your Web Pages to the Web Site
13 November 2000
SIGAda WWW 47
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Web Management
•
•
•
•
•
Who Comes to the Web Site?
What do they Visit on the Web Site?
How Often do they Visit/Return?
How do they Retrieve/Use the Information?
Why do they Visit the Web Site?
13 November 2000
SIGAda WWW 48
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Updating the Web Site
• Local Update of Web Pages
• Updating of Informational Materials
• Updating Pages on the Web Site
13 November 2000
SIGAda WWW 49
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Fixing the Web Site
•
•
•
•
•
Broken Links
Wrong Information
Outdated Information
ISP Problems
Notification to the Webmaster
13 November 2000
SIGAda WWW 50
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
WWW Tools
•
•
•
•
Tools to Develop the Web Site
Tools to Manage the Web Site
Tools to Update the Web Site
Tools to Find and Fix the Problems
13 November 2000
SIGAda WWW 51
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
The ASIS Web Site
• ASIS Specification
• ASIS Tutorial Pages
• Information Updates
– Technical Information
– Vendor Product Information
• ASIS Bibliography
• Notification to SIGAda-ASIS members
• Membership Updates
13 November 2000
SIGAda WWW 52
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
What This Means
• Test your web site locally
• Follow a few simple rules
– Information on Home Page
– Links Among Pages on Web Site
– ALT for ALL Graphics Images
<IMG SRC=“stuff.gif” ALT=“Description of Stuff”>
– Use height and width in graphics
– Information and Documents served via links “Save As”
– Relatively Short Pages (50K Bytes Max)
– For links greater than 50K Bytes, indicate size
13 November 2000
SIGAda WWW 53
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Easy Web Site Development
• Home Page Information
– Table of Contents
– Points of Contact
– Becoming Involved
• RELATIVE links
– Facilitates development of Web pages
– Avoid links with .. Or ../.. (viewed as a security violation)
• Directory Structure “behind the scenes”
• Internal links to main/home page and to sponsoring
organization
• Proof pages likely to be printed (e.g., maps, program)
– Verify colors are easily readable when printed on black & white
– Verify likely page break does not interfere with content use
13 November 2000
SIGAda WWW 54
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Page Creation Web Sites
•
•
•
•
•
•
•
•
www.microsoft.com/sitebuilder
members.aol.com/royalef/gifanim.htm
ds.dial.pipex.com/fw/animgifs.htm
www.barebones.com
www.demon.co.uk/Tangent/butwor.html
www.webtechs.com/html-val-svc/
htc.rit.edu/klephacks/markup.html
web.cs.bgsu.edu/morph/morphapplet.html
13 November 2000
SIGAda WWW 55
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
HTML Editors for Macs
• www.yahoo.com/Computers/World_Wide_Web/HT
ML_Editors/Macintosh
• www.uwtc.washington.edu/Computing/WWW/Mac
/Directory.html
• www.awa.com/nct/software/webtools.html
• www.vermeer.com/soft.htm
13 November 2000
SIGAda WWW 56
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Mac HTML Editors
•
•
•
•
•
•
•
www.navisoft.com/register/client/MP_Trial_1.01.sit.hqx
www.navisoft.com/NS/InsertRow/navipress pre
ftp://bradley.bradley.edu/pub/guru/ps2html/ps2html-v2.html
dragon.acadiau.ca/~giles/HTML_Editor_Documentation.html
sec-look.uiowa.edu/about/projects/arachnid-page.html
ftp://ftp.cray.com/src/WWWstuff/RTF/Users_Guide.html
www.ceneca.com/Ordering.html
13 November 2000
SIGAda WWW 57
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
General Info for Web Developers
•
•
•
•
•
•
•
•
•
•
•
the-tech.mit.edu:80/KPT/Toms/index.html
linestone.kosone.com/people/nelsonl/nl.htm
www.info.net/~rdralph/icons/symbols/
abs.apple.com/apple-internet/authoring/
the-tech.mit.edu/cgi-bin/KPT_bgs.pl
www.netscape.com/assist/net_sites/bg/backgrounds.html
www.issi.com/people/russ/backgrounds.html
www.primenet.com/~piglett/textures.html
www.designsys.com/champ/background.html
www.sci.kun.nl/thalia/guide/color/faq.html
www.vmedia.com/archives/clipart/index.html
• www.cuteftp.com
13 November 2000
SIGAda WWW 58
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Using
ACM WWW
and
Mailing List Facilities
John McCormick
University of Northern Iowa
13 November 2000
SIGAda WWW 59
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
The SIGAda Home Page
• Is a gateway to a lot of good information for the
Ada community
• It is difficult for one volunteer with a full time job
to keep all of this information up to date
– Bad links sprout like mushrooms
– Lots of old news
13 November 2000
SIGAda WWW 60
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Solution - More Volunteers
• We already have
– Volunteers from some local SIGAda Chapters
– Volunteers from some SIGAda working groups
13 November 2000
SIGAda WWW 61
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Local SIGAda Chapters
with Web Presence
•
•
•
•
Baltimore
Jersey Shore
Twin Cities
Washington, DC
13 November 2000
SIGAda WWW 62
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Working Groups
with “Recent” Web Presence
•
•
•
•
•
Ada as an HDL WG (forming)
Ada Bindings
ASIS
Commercial Ada Users
Education
– Jobs page (Searching for student worker)
• Safety and Security
13 November 2000
SIGAda WWW 63
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
More Help Needed in
•
•
•
•
•
Tools, bindings, and components
Ada news
Ada advocacy
Additional locals
Additional working groups
13 November 2000
SIGAda WWW 64
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
This Tutorial
• Stated agenda
– Provide volunteers (including myself) with the basic
information necessary to effectively disseminate information
using the world wide web.
• My personal agenda
– Recruit volunteers
13 November 2000
SIGAda WWW 65
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
ACM WWW
• ACM hosts SIG websites
– RS/6000 UNIX server
– turing.acm.org
– Moving to perl.acm.org running Red Hat Linux 6.1
• Home directory for SIGAda is
/acminfo/1/sigs/sigada or
/usr2/info/sigs/sigada
13 November 2000
SIGAda WWW 66
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Procedures for Setting up a
Local or Working Group
Home Page
• Option 1
Set up on your own machine
and send me the URL
– Currently used by all locals except DC
– Not used by any Working Group
• Option 2
Set up on ACM’s Turing
– Currently used by all active working groups
13 November 2000
SIGAda WWW 67
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Setting up Pages on Turing
• Requires an account on Turing
• I will set up a subdirectory in which to put the
home page
• We use UNIX groups and permissions to control
access to SIGAda subdirectories
13 November 2000
SIGAda WWW 68
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Getting a Turing Account
• Send me the following information
–
–
–
–
–
–
–
Name
Company / Institution
Address
Telephone and FAX numbers
e-mail address
ACM membership number
Preferred login name (8 character limit)
13 November 2000
SIGAda WWW 69
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Who Can Update a Page?
• Whoever is in the group that owns the file
• I welcome suggestions for policy and means of
enforcement.
13 November 2000
SIGAda WWW 70
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Guidance for Organizing Files
• Each working group and local chapter on Turing
is rooted in their own subdirectory
• All groups currently use a flat organization
• There are currently 19 subdirectories in the
SIGAda root directory
13 November 2000
SIGAda WWW 71
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Suggestions for Pages
• Link to SIGAda home page
• Link to ACM home page
• Page owner name with e-mail link
(blank if maintained by SIGAda Secretary)
• Date last modified
• Should we design templates?
13 November 2000
SIGAda WWW 72
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Use of Private Directories
with Passwords
• ACM now provides this ability via their member
account names
• www.acm.org/infodir/services/access_control.html
• Access control lists set up by ACM support
– Based on subscription services or
– list individual account names maintained by SIG Information
Director
13 November 2000
SIGAda WWW 73
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
CGI
• SIGAda used CGI scripts for SIGAda 2000
Conference Registration
• turing.acm.org did not have an Ada compiler
available; perl.acm.org does have an Ada
compiler
• SIGAda is working with ACM to have the Ada95
cgi interfaces available on perl.acm.org
• ACM policy is that each SIG is on its own
13 November 2000
SIGAda WWW 74
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
ACM Mailing Lists
• ACM uses Listserv software
• Complete documentation at
– http://www.acm.org/infodir/services/listserv/doc.html (links to)
– http://www.lsoft.com/manuals/1.8d/index.html:
»
LISTSERV List Owner's Quick Start
»
LISTSERV List Owner's Manual
»
LISTSERV General User's Guide
• All lists
@acm.org
– http://www.lsoft.com/SCRIPTS/WL.EXE?XH=ACM.ORG
13 November 2000
SIGAda WWW 75
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Mailing Lists - 1
SIGADA-ABWG
SIGADA-ANNOUNCE
SIGADA-ASIS
SIGADA-ASIS-OFFICERS
SIGADA-ASIS-TECH
SIGADA-AWARDS
SIGADA-DC
SIGADA-DC-EC
SIGADA-EC
SIGADA-EDITORS
SIGADA-EEC
SIGADA-LIAISONS
SIGADA-LOCALS
SIGADA-MEETINGS
SIGADA-MEMBERS
SIGADA-OOWG
SIGADA-PAST-EC
SIGADA-TALK
SIGADA-WG
SIGADA2000-COMMITTEE
SIGADA2001-COMMITTEE
SIGADA99-COMMITTEE
Ada Bindings Working Group (63 subscribers)
Announcement List (846 subscribers)
Ada Semantic Interface Spec. Working Group (21 subscribers)
ASIS Officers Mailing List (11 subscribers)
ASIS Technical Discussion Group (93 subscribers)
Awards Announcement List (2 subscribers)
DC SIGAda Chapter Mailing List (229 subscribers)
DC SIGAda Chapter Officers Mailing List (16 subscribers)
SIGAda Executive Committee Mailing List (8 subscribers)
Ada Letters Editors (2 subscribers)
SIGAda Extended Executive Committee (no subscriber)
Liaisons to Ada Organizations Around the World (16 subscribers)
SIGAda Local Chapter Chairs (17 subscribers)
Meetings Committee (1 subscriber)
Discussion List (2 subscribers)
Object Oriented Working Group (36 subscribers)
Previous Executive Committee Mailing List (7 subscribers)
Ongoing Discussion (56 subscribers)
Working Group Chairs (22 subscribers)
SIGAda 1999 COMMITTEE email distribution list (20 subscribers)
SIGAda 2000 COMMITTEE email distribution list (28 subscribers)
SIGAda 2001 COMMITTEE email distribution list (25 subscribers)
13 November 2000
SIGAda WWW 76
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
SIGAda Mailing Lists - 2
ADA-COMMENT
ADASAGE
ARG
TEAM-ADA
WG9
Public Comments on the International Ada Standard (1 subscriber)
AdaSage tool discussion (448 subscribers)
Ada Rapporteur Group of WG9; managing the Ada issues
(33 subscribers)
Team Ada: Ada Advocacy Issues (83 & 95) (331 subscribers)
ISO/IEC JTC1/SC22/WG9 (Ada) - Ada standardization topics
(62 subscribers)
13 November 2000
SIGAda WWW 77
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Requesting a List
• Send me the necessary information (detailed on
following slides)
• I’ll arrange for ACM Support to set up the list
13 November 2000
SIGAda WWW 78
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Name and Description
• List Name
– Prefix with SIGAda
– Maximum of 24 characters
• Descriptive Title
– Prefix with ACM SIGAda
– Maximum of 70 characters
13 November 2000
SIGAda WWW 79
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Subscription Options
• By owner Requests to subscribe are forwarded
to the list owner for approval
• Open Requests to subscribe are accepted;
anyone can join
• Closed Requests to subscribe are rejected. List
owner adds subscribers
13 November 2000
SIGAda WWW 80
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Senders (who can post)
• Public
Anyone can post
• Editors/Moderators
Messages posted from
non-editors are forwarded to moderators for
approval
• Owners Only list owners can post
• Private
Only list subscribers can post (this
option can be problematic)
13 November 2000
SIGAda WWW 81
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Review (who can see who subscribes)
• Private
• Owner
• Public
Subscribers can review
Only the list owner can review
Anyone can review
13 November 2000
SIGAda WWW 82
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
List Archive
•
•
•
•
No
Monthly
Weekly
Yearly
13 November 2000
SIGAda WWW 83
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Sample List Announcement
Welcome To The Washington DC SIGAda Chapter Announcements List.
This list is intended to keep you informed of important ACM SIGAda information in the Washington DC area
including upcoming local DC and Baltimore SIGAda chapter meetings, local software engineering conferences,
and other professional activities.
You may leave this list at any time by sending mailto:[email protected] with the following one line body:
SIGNOFF SIGAda_DC
If you need to change your email address, please signoff from your old system, as above, and resubcribe to the
maillist from your new system by sending mailto:[email protected] with the following one line body:
SUBSCRIBE SIGAda_DC
If you no longer have access to your old email address, please send mailto:[email protected]
requesting that your old address be removed and your new address be added.
If you have any questions about this list, please mailto: [email protected].
Additional information on the SIGAda_DC maillist is available on the DC SIGAda Home Page at:
http://www.acm.org/sigs/sigada/locals/dc/
You are encouraged to notify your colleagues about this opportunity for professional software information. You do
not need to be a member of ACM to subscribe. Please save this message for future reference.
13 November 2000
SIGAda WWW 84
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Useful Listserv Commands - 1
Send messages to: [email protected]
• To add a person (to [email protected]):
Add SIGAda_DC [email protected] Currie Colket pw=123456
Quiet Add SIGAda_DC [email protected] Currie Colket pw=123456
• To delete a person
Delete SIGAda_DC [email protected] pw=1234546
Quiet Delete SIGAda_DC [email protected] pw=123456
• To see the current list
Review SIGAda_DC pw=123456
Warning: if outgoing messages wrap at 72 characters, a CR is
added and message is not recognized by listserv
13 November 2000
SIGAda WWW 85
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Useful Listserv Commands - 2
• To add many people at a time
ADD SIGAda_DC DD=InitialList
//InitialList DD *
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
/*
IMPORT PW=123456
Ben Brosgol
Clyde Roby
Hal Hart
Bard Crawford
Karlotto Mangold
Currie Colket
John McCormick
Ron Oliver
No commas,
Clyde Roby
Use quotes
Currie Colket
etc.
Warning: if outgoing messages wrap at 72 characters, a CR is
added and listserv may process things very wrong
13 November 2000
SIGAda WWW 86
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Useful Listserv Commands - 3
• To update list header
PUT SIGAda_DC LIST PW=123456
Added
* ACM DC SIGAda email distribution list
* Owner= [email protected] (Currie Colket)
* Owner= [email protected] (Currie Colket)
* Owner= Quiet:
* Owner= [email protected] (John McCormick)
* Notebook=Yes,/home/listserv/home/notebooks/sigada_DC,Monthly,Private
* Errors-To= Owner
* Subscription= by owner
* Ack= Yes
* Confidential= No
* Files= No
* Notify= No
* Mail-Via= Distribute
* Validate= No
* Reply-to= Sender,Respect
* Review= Private
* Send= Public
* Stats= Normal,Private
* X-Tags= Yes
* Default-Options= NoFiles,NoRepro
*
Warning: if outgoing
messages wrap at 72
characters, a CR is added
and message is not
recognized by listserv
13 November 2000
SIGAda WWW 87
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Introduction to AdaCGI
David A. Wheeler
IDA
13 November 2000
SIGAda WWW 88
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Outline
•
•
•
•
•
Intro: myself, AdaCGI, CGI, Alternatives
Using Ada for Web Apps (+ and -)
High-Level: License, Basics
Using AdaCGI: Minimal Example, Debugging and Installing
Special: Get/Post, Cookies, Security, Recent Additions,
Limitations
• AdaCGI spec & Long Example (“Search”)
13 November 2000
SIGAda WWW 89
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
What is AdaCGI?
• Ada Library implementing the
“Common Gateway Interface” (CGI)
– CGI is the most common interface for web-enabled programs
(“web apps”)
– CGI is language & platform neutral
• Permits development of cross-platform webenabled Ada programs
• http://www.dwheeler.com/adacgi
13 November 2000
SIGAda WWW 90
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
CGI: General Concept (1 of 2)
1
Web Browser
(Client)
6
HTTP
Web Server
CGI
(2)
3
4
Web Program/
(5)
Application
13 November 2000
SIGAda WWW 91
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
CGI: General Concept (2 of 2)
• When CGI is used, the following occurs:
1. Web browser sends request to web server
2. Web server determines that it must start web application; determines
which one & starts it
3. Web application starts, loads data sent by web server (primarily as
keys and their values; keys can duplicate)
4. Web application responds (via stdout), with a header (saying what it’s
replying) followed by data
5. Web application exits (quits) once done
6. Web server passes this data on to user’s browser
13 November 2000
SIGAda WWW 92
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
CGI Alternatives
• FastCGI
–
–
–
–
Keeps web app alive (instead of restarting per request)
(+) Better performance (eliminates startup)
(-) More work developing app (must reset all state)
(-) Less robust (app must survive many requests)
• Server-specific (proprietary) APIs
– (+) Even better performance (eliminates startup & IPC)
– (-) Lock-in to a particular web server
– (-) Even less robust (error may take down server)
13 November 2000
SIGAda WWW 93
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Alternatives
• Doug Smith’s WebAda CGI
–
–
–
–
–
Derived from an old version of AdaCGI
(+) generic iterators, can remove keys, re-parser
(-) no cookies, complex use, buggy decoders, little doc, unmaintained
We’ve agreed that I’ll remerge his into mine (in time)
www.adasmith.com/webada/source
• Binding to C (ugh)
• Un-CGI
– Converts CGI data to environment vars “WWW_name”
– No cookies, multivalue keys ambiguous, slow, ugh
13 November 2000
SIGAda WWW 94
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Why use Ada for Web Apps?
• Excellent Run-Time Performance
– better than interpreters (Perl), can be > typical JVM
– CGI low performance, so relevant iff compute-bound
•
•
•
•
•
Excellent compile-time checking
Highly readable (especially vs. Perl)
Increased security over C/C++ (bounds checking)
Prefer Ada
Have existing Ada applications
13 November 2000
SIGAda WWW 95
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Weaknesses of Ada for
Web Apps
• Wordiness (not best for short scripts)
• Less convenient string handling
• Regular expressions not built-in
– Can use GNAT’s library, but fewer capabilities and can’t
optimize like Perl
• Fewer web-app-specific and related support
libraries
• Often, must separately install Ada library
13 November 2000
SIGAda WWW 96
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI License
• AdaCGI is free, free software, open source
• Open Source License: LGPL + 2 clauses:
– “GNAT clause”: don’t need to distribute separate object files
– Web users must be able to get and redistribute your version of
the AdaCGI library
• Can use to develop proprietary programs, but the
AdaCGI library must stay open
13 November 2000
SIGAda WWW 97
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Basics
• “with CGI”: initialization autoloads data
• Two ways to access CGI data:
– an associative array (given key & optional key count, returns
value)
– indexed sequence (given index, =>key or value)
• Call Put_CGI_Header to start returning data
– by default, to return HTML
• Then send results (HTML?) to standard out
• Use String or Unbounded_String directly
13 November 2000
SIGAda WWW 98
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Minimal” Web App Example
with CGI, Text_IO; use CGI, Text_IO;
procedure Minimal is
begin
Put_CGI_Header; -- We will reply with a generated HTML document.
-- Output <HTML><HEAD>….</HEAD><BODY>:
Put_HTML_Head("Minimal Form Demonstration”);
if CGI.Input_Received then -- Check if input was received.
Put_Variables; -- Input received; show all variable values.
else
-- No input received; reply with a simple HTML form.
Put_Line("<FORM METHOD=POST>What's your Name?<INPUT
NAME=""name""><INPUT TYPE=""submit""></FORM>");
end if;
Put_HTML_Tail; -- End HTML doc, sending </BODY></HTML>
end Minimal;
13 November 2000
SIGAda WWW 99
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Debugging/Testing a
Web Program
• For debugging & test scripts, can start directly:
– setenv REQUEST_METHOD GET
– setenv QUERY_STRING key1=value1&key2=...
– compile, link, run (“./minimal”)
• Output should look like:
Content-type: text/html
<HTML><HEAD><TITLE>Minimal Form Demonstration</TITLE>
</HEAD><BODY>
<FORM METHOD=POST>What's your Name?<INPUT NAME="username">
<INPUT TYPE="submit"></FORM>
</BODY></HTML>
13 November 2000
SIGAda WWW 100
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Installing a Web Program
• To really use it, set up with web server, e.g.:
– su
– cp minimal /home/httpd/cgi-bin
• Run
– http://localhost/cgi-bin/minimal
– http://localhost/cgi-bin/minimal?
name=David%20Wheeler&
[email protected]
• Odd problems? Try Put_Variables
13 November 2000
SIGAda WWW 101
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Get vs. Post
• CGI supports two sub-protocols
– Get: data can be included in URLs
– Post: data can be voluminous
• AdaCGI supports both, merging them
– Can use either subprotocol at any time
– API hides difference; access data the same way
– If you need to know, AdaCGI will say which, but using this
difference is not recommended
13 November 2000
SIGAda WWW 102
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Cookies
• Cookies are small pieces of data
– Sent by the server
– Stored by the client and sent back when the client recommunicates with the server
• Often used in e-commerce (the cookie is an ID
indicating the transaction we’re in)
• Potential privacy risk: Permits servers to track
users (loss of anonymity)
13 November 2000
SIGAda WWW 103
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Security Issues
• CGI data comes from untrusted users
– identify legal values, and prohibit anything not meeting the legal
criteria (min, max, patterns, etc.)
– don’t assume that these values are trustworthy (“price”)
– in particular, never trust a filename or directory name
– you may need to escape all metacharacters
– NIL character
• See the many documents available on CGI
programming security
13 November 2000
SIGAda WWW 104
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Additions in Version 1.5
• AdaCGI Version 1.5 added the following:
WebAda
Inspired
–
–
–
–
–
Cookie_Count
HTML_Encode: & becomes &amp;
URL_Encode/Decode: % becomes %25
Generic Iterators
Key_Value_Exists: Has Key been given Value?
13 November 2000
SIGAda WWW 105
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Important Limitations
• No separate IndexedKey ADT/OO type for
parameters & cookies
– parse, modify, remove, save, reload
• Doesn’t support file uploads
– Rarely used in practice
• Only supports GET/POST commands
– Others useful for web maintenance (WebDAV)
13 November 2000
SIGAda WWW 106
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Less Important Limitations
• Auto-initializes data on startup
• Doesn’t support FastCGI
– Usually implemented separately anyway
• Doesn’t auto-gen form with initial values
– Can be done with a higher-level package
• String/Unbounded_String awkward
• Some subprogram names too similar
• Could be broken into multiple packages (?!)
13 November 2000
SIGAda WWW 107
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec: Get-by-key
• function Value(Key : in String;
Index : in Positive := 1;
Required : in Boolean := False)
return Unbounded_String;
• function Key_Exists(Key : in String;
Index : in Positive := 1)
return Boolean;
• function Key_Count(Key : in String)
return Natural;
13 November 2000
SIGAda WWW 108
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec: Get-by-Position
• function Argument_Count return Natural;
• function Key(Position : in Positive) return String;
• function Value(Position : in Positive)
return String;
13 November 2000
SIGAda WWW 109
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec: Starting Output
• procedure Put_CGI_Header(Header : in String := "Contenttype: text/html");
–
–
–
–
Puts CGI Header to Current_Output, followed by two carriage returns.
This header determines the program's reply type.
Default is to return a generated HTML document.
Warning: Make calls to Set_Cookie before calling this procedure!
13 November 2000
SIGAda WWW 110
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec:
Generating HTML Basics
• procedure Put_HTML_Head(Title : in String;
Mail_To : in String := "");
– Puts an HTML header with title “Title”: <HTML><HEAD><TITLE> _Title_ </TITLE>
<LINK REV="made" HREF="mailto: _Mail_To_ ">
</HEAD><BODY>
• procedure Put_HTML_Heading(Title : in String;
Level : in Positive);
– Put an HTML heading, e.g. <H1>Title</H1>.
• procedure Put_HTML_Tail;
– P ut HTML tail, I.e.: </BODY></HTML>
13 November 2000
SIGAda WWW 111
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec:
Watch Out, Excessively Similar Names!
• Put_CGI_Header
– Content-type: text/html
• Put_HTML_Head
– <HTML><HEAD>…</HEAD><BODY>
• Put_HTML_Heading
– <H1>…</H1>
13 November 2000
SIGAda WWW 112
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec:
Generating HTML Miscellania
• procedure Put_Error_Message(Message : in String);
– This Puts an HTML_Head, an HTML_Heading, the message, and an
HTML_Tail.
– Call "Put_CGI_Header" before calling this.
• procedure Put_Variables;
– Put to Current_Output all of the CGI variables as an HTML-formatted
String.
13 November 2000
SIGAda WWW 113
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec: Miscellaneous
•
•
•
•
function Input_Received return Boolean
function My_URL return String;
function Get_Environment(Variable : in String) return String;
Line_Count, Line_Count_of_Value, Line, Value_of_Line:
handle multi-line values
13 November 2000
SIGAda WWW 114
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
AdaCGI Spec: Cookies
(new feature of AdaCGI 1.4)
• Set_Cookie(Key : String;Value : String;
Expires : String := "";
Path: String := …; Domain: String := …;
Secure: Boolean := False );
– Sets a cookie value; call this BEFORE calling Put_CGI_Header.
• function Cookie_Value(Key : in String;
Index : in Positive := 1; Required : in Boolean := False)
return Unbounded_String;
• function Cookie_Value(Position : in Positive) return String;
13 November 2000
SIGAda WWW 115
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Search” Example: Top
with CGI, …; use CGI, …;
procedure Search is ...
begin
Put_CGI_Header;
if Key_Exists("query") and Key_Exists("file") then
Process_Query;
else
Generate_Blank_Form;
end if;
Put_HTML_Tail;
end Search;
13 November 2000
SIGAda WWW 116
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Search” Example:
Generate_Blank_Form (1 of 4)
Put_HTML_Head("Text Search Form");
Put_HTML_Heading("Text Search Form", 1);
Put_Line("<P>You may search for a text phrase from any of the given
files.<P><FORM METHOD=POST>");
Put_Line("What do you want to search for:<P>");
declare
Query_String : constant String := CGI.Value ("query");
File_Value : constant String := CGI.Value ("file");
begin
Put_Line("<INPUT NAME=""query"" SIZE=40");
if Query_String /= "" then - - if query set, use as default
Put(" VALUE="); Put(String'(Value("query")));
end if;
Put_Line("><P>");
13 November 2000
SIGAda WWW 117
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Search” Example:
Generate_Blank_Form (2 of 4)
- - if file set, then save it in form & display its value.
- - otherwise, let the user select the file to search.
if Key_Exists("file") and File_Value /= "" then
Put("<INPUT TYPE=""hidden"" NAME=""file"" VALUE=""");
Put(String'(Value("file") & """>"));
Put("<P>You will be searching file <I>");
Put(String'(Value("file")));
Put_Line("</I><P>");
else
Put_Line("Where do you want to search?<P>");
Put_Select_List;
end if;
end; -- declare block
13 November 2000
SIGAda WWW 118
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Search” Example:
Generate_Blank_Form (3 of 4)
- - if “casesensitive” set, save in form invisibly, else ask user
if Key_Exists("casesensitive") then
Put_Line(String'("<INPUT TYPE=""hidden"" NAME=""casesensitive""
VALUE=""" & Value("casesensitive") & """>"));
else
Put_Line("Do you want this search to be case-sensitive?");
Put_Line(”<DL><DD><INPUT TYPE=""radio""
NAME=""casesensitive" " VALUE=""yes""> <I>Yes.</I>");
Put_Line("<DD><INPUT TYPE=""radio"" NAME=""casesensitive""
VALUE=""no"" CHECKED> <I>No.</I>");
Put_Line("</DL>");
end if;
13 November 2000
SIGAda WWW 119
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Search” Example:
Generate_Blank_Form (4 of 4)
- - Generate submit and reset buttons for form
Put_Line("<P> <INPUT TYPE=""submit"" VALUE=""Submit Query"">");
Put_Line("<INPUT TYPE=""reset""> ");
Put_Line("</FORM>");
13 November 2000
SIGAda WWW 120
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Search” Example:
Process_Query (1 of 2)
procedure Process_Query is
User_File_To_Search : constant String := CGI.Value("file");
File_To_Search : constant String := - - Don’t trust user to set this!
Real_File_Name(U(User_File_To_Search));
Pattern : constant String := Value("query");
Case_Sensitive : Boolean := False;
Case_Sensitivity : constant String := Value ("casesensitive");
begin
Put_HTML_Head("Query Result");
Put_HTML_Heading("Query Result", 1);
Put_Line(String'("<P>The search for <I>" & Value("query") & "</I>"));
Put_Line(String'(" in file <I>" & Value("file") & "</I>"));
13 November 2000
SIGAda WWW 121
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
“Search” Example:
Process_Query (2 of 2)
if Case_Sensitivity = "yes" then
Case_Sensitive := True;
Put_Line(" in a case-sensitive manner");
end if;
Put_Line("produced the following result:<P>");
Put_Line("<PRE>");
Flush;
Put_Matches(File_To_Search, Pattern, Case_Sensitive);
Put_Line("</PRE>");
end Process_Query;
13 November 2000
SIGAda WWW 122
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
In Conclusion...
• You can make web apps in Ada!
– Get it at http://www.dwheeler.com/adacgi
– EMailing: [email protected] message body
“subscribe”
– Linux packaging: http://www.gnuada.org
• Use the current version of AdaCGI
– Currently version 1.5
• Patches welcome
• Go forth & have fun!
13 November 2000
SIGAda WWW 123
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Introduction to XML
Currie Colket
MITRE
13 November 2000
SIGAda WWW 124
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Motivation for XML
Book
Title
Author
Date
ISBN
Publisher
HTML
Dumbs Down
<html>
...
<P>
Title: Programming in Ada95 (Second Edition)<Br>
Author: John Barnes<Br>
Date: July, 1998 <Br>
ISBN: 0-201-34293-6 <Br>
Useful for Presentation only
Publisher: Addison-Wesley <Br>
Limited Content accessibility
</P>
...
</html>
13 November 2000
SIGAda WWW 125
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
What is XML
• Produced by W3C as recommendation; voted on by Consortium members
http://www.w3.org/XML/
• XML is a method for putting structured data in a text file
• XML looks a bit like HTML but isn't HTML
tags delimit data; in HTML tags communicate presentation
• XML is text, but isn't meant to be read
strict rules; a forgotten tag makes the entire file useless
• XML is a family of specifications
XML 1.0 - specifies tags and attributes, and Document Type Definition (DTD) guidelines
Xlink - describes a standard way to add links to an XML file
Xpointers and Xfragments point to portions of an XML file
CSS
- Cascading Style Sheets provide mechanism to present content documents
XSL
- Extensible Style Language is the advanced language for expressing style sheets
XSLT - Transformations (XSLT) is the semantics for transforming one
XML document into another
DOM - Document Object Model allows programs and scripts to dynamically access
and update the content, structure and style of documents
XML Namespaces - specifies how you can associate a URL with every single tag
and attribute in an XML document
RDF
- Resource Description Framework (RDF) is a foundation for processing metadata;
it provides interoperability between applications that exchange data on the Web.
Xschema - Specifications help developers define their own schemas
and many more
13 November 2000
SIGAda WWW 126
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
XML Interfaces
Validation
XML Parser
e.g., msxml
DTD
“Produce content XML
once and output
From library of common DTDs
in many different
formats.”
XML
Other
Application
XML
DOM
Processing
Apps
XSL
1
HTML
Browser
User 1
XSL
2
HTML
Browser
User 2
XSL
3
Output
for
Printer
13 November 2000
Database
Query
Application
SIGAda WWW 127
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
XML Schema Example
Book_Catalogue
Note: “*” means “zero or many”
“?” means “is optional ”
“+” means “one or more”
Book*
Title
Author+
Date
ISBN
Publisher
Month? Year
Attributes for each book:
Category - autobiography/non-fiction/fiction
In_Stock - yes/no (no default)
Reviewer - null default
13 November 2000
SIGAda WWW 128
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
XML DTD Example
<!-- A book catalogue contains zero or more books -->
<!ELEMENT Book_Catalogue (Book)*>
<!-- A Book has a Title, one or more Authors, a Date, an ISBN, and a Publisher -->
<!ELEMENT Book (Title, Author+, Date, ISBN, Publisher)>
<!-- A Book has three attributes - Category, In_Stock, and Reviewer. -->
<!-- Category must be either “autobiography”, “non-fiction”, or “fiction”. -->
<!-- A value must be supplied whenever a Book element is used within a document. -->
<!-- In_Stock can be either “yes” or “no”. If not supplied it defaults to “no”. -->
<!-- Reviewer contains the name of the reviewer. It defaults to "" if not supplied -->
<!ATTLIST Book
Category (autobiography | non-fiction | fiction) #REQUIRED
In_Stock (yes | no) “no”
Reviewer CDATA “” >
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Author (#PCDATA)>
<!-- A Date may have a Month. It must have a Year. -->
<!ELEMENT Date (Month?, Year)>
<!ELEMENT ISBN (#PCDATA)>
<!ELEMENT Publisher (#PCDATA)>
<!ELEMENT Month (#PCDATA)>
<!ELEMENT Year (#PCDATA)>
Book_Catalogue.dtd
13 November 2000
SIGAda WWW 129
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
XML Code Example
<xml version=“1.0”>
<!DOCTYPE Book_Catalogue SYSTEM “http://www.DTD_host.org/Book_Catalogue.dtd”>
<Book_Catalogue>
<Book
Need to suck
Category = “non-fiction”
in the DTD file
In_Stock = “yes”
Reviewer = “Pat Rogers”>
<Title>Programming in Ada95 (Second Edition)</Title>
<Author>John Barnes</Author>
<Date>
<Year>1998</Year>
</Date>
<ISBN>0-201-34293-6</ISBN>
<Publisher>Addison-Wesley</Publisher>
</Book>
<Book
Category = “non-fiction”
In_Stock = “no”
Reviewer = “Ted Baker”>
<Title>Ada 95: Problem Solving and Program Design, 3rd Edition</Title>
<Author>Michael Feldman</Author>
<Author>Elliot Koffman</Author>
<Date>
<Month>July</Month>
<Year>1999</Year>
</Date>
<ISBN>0-201-36123-X</ISBN>
<Publisher>Addison-Wesley</Publisher>
</Book>
13 November 2000
SIGAda WWW 130
</Book_Catalogue> © Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Book_Catalogue.xml
What is XHTML







Produced by W3C as recommendation; voted on by Consortium members
http://www.w3.org/TR/xhtml1/
Reformulation of HTML 4.0 in XML 1.0
XHTML is intended to be used in conjunction with tags from other X3 tag
sets , so that in principle, you can combine XHTML tags with:
 XML tags
 Scalable Vector Graphics (SVG) tags
 Synchronized Multimedia Integration Language (SMIL) tags
 Mathematical Markup Language (MathML) tags
 etc.
XML syntax is used for XHTML, for example:
 Make tags case-sensitive
 Include end tags e.g. </p> and </li>
 Add a / to empty tags, e.g. <br /> and <hr />
 Quote all attribute values, e.g. <img src="duck.jpg" />
 Use lower-case for tags and attributes
Old browsers can render XHTML 1.0 if simple guidelines are followed.
New specification for FORMS based on Data, Logic, and Presentation
New specification for Modules to subset and extend XHTML
13 November 2000
SIGAda WWW 131
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
XML Observations/Opinions




Technology in early adopter phase - Too early for true
lessons learned
Phenomenal Excitement: XML is the latest “web thing”
Low Barriers to Entry - Incremental development, low
investment requirements
Significant Industry Offerings in products and tools Reaching critical mass
Already internet output for Word in Microsoft Office instead of HTML



Cross Disciplines- Unifying framework for exchanging
data
Requires Tools - Specialized tools needed to develop and
use XML; not supported by many browsers
HTML Still Viable - XML will not replace HTML for basic
presentation of information for many years, if ever
13 November 2000
SIGAda WWW 132
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda
Summary
•
•
•
•
•
•
•
Introduction to WWW and SIGAda Home Page as Notional Example
Introduction to HTML and use of Netscape Composer
Effective Design Strategies Appropriate to Disseminating Information
Tools to Manage Development of Web Pages
Introduction to Ada CGI
Using ACM WWW and Maillist Facilities
Introduction to XML
You should now be able to:
• Use simple web-authoring tools
• Develop your own Home Page
• Tailor it to effectively communicate to your audience
• Establish Home Page on ACM host
• Use simple web-posting tools
• Use simple web-verification tools
• Establish maillists for your activity
We are looking for volunteers to “own” portions of the ACM SIGAda Home Page
Please contact us if you are interested!
13 November 2000
SIGAda WWW 133
© Currie Colket, Brad Balfour, John McCormick, Clyde Roby, & David Wheeler for ACM SIGAda