An XML framework for interactive publishing

This article describes the systems developed for publishing articles at ApacheTutor. The goal was a highly lightweight but extensible framework for interactive authoring and publication, offering full guarantees of Accessibility and Quality. We discuss reasons why existing blog and wiki software was not considered adequate, and describe the design and implementation of this application, including new modules, an XML namespace, and a DTD.

Add Comment

Introduction


The concept of ApacheTutor is one of an interactive, online book. High quality content (which is gradually being written) should be accompanied by genuine interactivity. Subject to permissions, reviewers, editors and readers should be able to attach notes to an article, and authorised editors should be able to work on the document text itself. The system is required to manage this process, including retaining a full revision history.

Coincidentally, while the site was in preparation, I was asked to do the technical review for a forthcoming book. This required me to find out about and use broadly comparable capabilities in a modern wordprocessor, which permits an editor to make changes or enter notes anywhere, while the software takes care of attaching my name and the date to my edits. But publishing on the Web opens this process up, and permits not only expert reviewers but also general readers to participate. So if anything is inaccurate or unclear, there is a readily-available builtin mechanism to ask for review and clarification.

Wearing my other hat, I am concerned about web standards and accessibility, and I am not prepared to accept sub-standard publishing 'solutions'. ApacheTutor is required to ensure that all HTML delivered over the web is both valid and fully accessible. To the best of my knowledge, this is the first and only web-based system that can offer such a guarantee while permitting editors the flexibility of working on 'raw' markup.

show annotation

Note by anonymous, Tue Aug 24 11:13:01 2004

show annotation

Note by anonymous, Tue Aug 24 14:22:03 2004

bcd

show annotation

Note by anonymous, Tue Aug 24 15:36:48 2004

asf

show annotation

Note by anonymous, Sat Apr 12 19:33:18 2008

sweet, all what attempt. even know berries. front yard my dad the vast

show annotation

Note by anonymous, Tue Apr 15 15:57:59 2008

108BUb 0f9v37f7d2g9flas5

show annotation

Note by anonymous, Thu Apr 17 02:03:21 2008

c742t

show annotation

Note by anonymous, Fri Apr 18 17:57:30 2008

often Forest. my misguided along Behind stretching leaf

show annotation

Note by anonymous, Mon Apr 21 11:46:34 2008

c9t

show annotation

Note by anonymous, Wed Apr 23 22:58:24 2008

c836t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:10:33 2008

c307t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:16:29 2008

c168t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:22:23 2008

c425t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:28:05 2008

c600t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:34:03 2008

c710t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:39:50 2008

c507t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:45:34 2008

c916t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:51:31 2008

c934t [a] [/a]

show annotation

Note by anonymous, Wed Apr 23 23:57:18 2008

c122t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:09:24 2008

c725t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:15:14 2008

c710t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:21:10 2008

c73t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:32:50 2008

c791t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:38:45 2008

c257t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:44:51 2008

c469t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:51:12 2008

c538t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 00:57:39 2008

c694t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 01:10:27 2008

c165t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 01:16:23 2008

c277t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 01:42:18 2008

c663t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 01:54:33 2008

c763t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 02:01:00 2008

c157t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 02:07:17 2008

c127t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 02:21:25 2008

c844t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 02:27:16 2008

c849t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 02:33:27 2008

c241t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 02:40:11 2008

c586t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 05:29:30 2008

work where I spent spent days could reach. pretty done it. or burnt, done it. We had sour, well playing were the best,

show annotation

Note by anonymous, Thu Apr 24 06:23:15 2008

c328t [a] [/a]

show annotation

Note by anonymous, Thu Apr 24 06:29:49 2008

c753t [a] [/a]

show annotation

Note by anonymous, Fri Apr 25 23:43:00 2008

c765t [a] [/a]

show annotation

Note by anonymous, Fri Apr 25 23:50:55 2008

c752t [a] [/a]

show annotation

Note by anonymous, Fri Apr 25 23:58:46 2008

c270t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 00:06:18 2008

c33t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 00:14:51 2008

c846t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 00:23:12 2008

c346t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 00:30:25 2008

c581t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 00:38:09 2008

c757t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 00:46:51 2008

c810t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 00:54:45 2008

c231t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 01:02:40 2008

c728t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 01:11:04 2008

c950t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 01:19:07 2008

c108t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 01:27:22 2008

c610t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 01:35:04 2008

c211t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 01:44:14 2008

c319t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 01:52:20 2008

c614t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 02:00:37 2008

c404t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 02:08:52 2008

c20t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 02:19:21 2008

c24t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 02:27:42 2008

c837t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 02:37:47 2008

c532t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 02:48:56 2008

c410t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 02:57:30 2008

c801t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 03:07:58 2008

c805t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 03:16:53 2008

c578t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 03:25:07 2008

c510t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 03:33:13 2008

c245t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 03:41:28 2008

c427t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 03:49:37 2008

c930t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 03:58:02 2008

c311t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 04:06:23 2008

c200t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 04:14:50 2008

c721t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 04:23:17 2008

c443t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 04:30:52 2008

c603t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 04:39:44 2008

c142t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 04:48:16 2008

c433t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 04:56:23 2008

c931t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 05:04:24 2008

c963t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 05:13:14 2008

c49t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 05:21:35 2008

c965t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 05:29:33 2008

c434t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 05:45:42 2008

c261t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 05:53:45 2008

c710t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 06:02:18 2008

c216t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 06:18:56 2008

c809t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 06:27:05 2008

c232t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 06:43:35 2008

c152t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 06:52:15 2008

c639t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 07:00:32 2008

c801t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 07:17:26 2008

c812t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 07:25:23 2008

c628t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 07:33:45 2008

c94t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 07:42:07 2008

c542t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 07:58:45 2008

c342t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 08:06:48 2008

c106t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 08:15:23 2008

c872t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 08:31:28 2008

c419t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 08:39:41 2008

c590t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 08:48:09 2008

c366t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 08:56:13 2008

c389t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 09:04:49 2008

c553t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 09:13:24 2008

c121t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 09:30:03 2008

c630t [a] http://blogs.grab.com/Bolivia_Ringtv63/490777 [/a] [a] http://blogs.grab.com/Buy_One_Ringtf63/490778 [/a] [a] http://blogs.grab.com/Free_Ringtoneu96/490779 [/a] bolivia ringtone - http://blogs.grab.com/Bolivia_Ringtv63/490777

show annotation

Note by anonymous, Sat Apr 26 09:38:56 2008

c961t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 09:55:22 2008

c438t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 11:39:37 2008

c743t [a] http://blogs.grab.com/Free_Downloadx39/491036 [/a] [a] http://blogs.grab.com/Free_Samsung_p45/491037 [/a] [a] http://blogs.grab.com/Motorola_V3_Rz87/491038 [/a] free download ringtones - http://blogs.grab.com/Free_Downloadx39/491036

show annotation

Note by anonymous, Sat Apr 26 11:48:57 2008

c254t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 11:58:34 2008

c233t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 13:19:07 2008

c968t [a] http://blogs.grab.com/Verison_Ringtt59/491167 [/a] [a] http://blogs.grab.com/Download_Freep49/491168 [/a] [a] http://blogs.grab.com/Download_Freex88/491169 [/a] [a] http://blogs.grab.com/Download_Freer10/491170 [/a] verison ringtones - http://blogs.grab.com/Verison_Ringtt59/491167 download free ringtones free - http://blogs.grab.com/Download_Freep49/491168

show annotation

Note by anonymous, Sat Apr 26 13:28:14 2008

c363t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 13:36:32 2008

c906t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 13:45:23 2008

c260t [a] [/a]

show annotation

Note by anonymous, Sat Apr 26 13:54:00 2008

c44t [a] [/a]

show annotation

Note by anonymous, Mon Apr 28 13:18:53 2008

c256t [a] [/a]

show annotation

Note by anonymous, Mon Apr 28 13:27:00 2008

c289t [a] [/a]

show annotation

Note by anonymous, Mon Apr 28 13:35:09 2008

c264t [a] [/a]

show annotation

Note by anonymous, Wed May 7 10:53:57 2008

c87t [a] http://www.google.com/notebook/public/03860456968237671158/BDR24IgoQ0_qRkJwj [/a] [a] http://www.google.com/notebook/public/03860456968237671158/BDSGpIgoQlpySkJwj [/a] yahoo video tips2008 - http://www.google.com/notebook/public/03860456968237671158/BDR24IgoQ0_qRkJwj

show annotation

Note by anonymous, Mon May 12 09:47:29 2008

c610t [a] http://journals.aol.com/williamkhardman/palm-treo-ringtone/ [/a] [a] http://journals.aol.com/williamkhardman/palm-treo-ringtones/ [/a] [a] http://journals.aol.com/williamkhardman/panther-pink-ringtone/ [/a] [a] http://journals.aol.com/williamkhardman/papa-roach-ringtone/ [/a] palm treo ringtone - http://journals.aol.com/williamkhardman/palm-treo-ringtone/ palm treo ringtones - http://journals.aol.com/williamkhardman/palm-treo-ringtones/

show annotation

Note by anonymous, Mon May 12 09:59:32 2008

c581t [a] [/a]

show annotation

Note by anonymous, Mon May 12 10:10:36 2008

c42t [a] [/a]

show annotation

Note by anonymous, Tue May 13 14:39:48 2008

c492t [a] [/a]

show annotation

Note by anonymous, Tue May 20 08:47:24 2008

c783t [a] [/a]

show annotation

Note by anonymous, Tue May 20 14:04:41 2008

c7t [a] http://www.google.com/notebook/public/17169207797223145002/BDQGpIgoQ2binqaAj [/a] [a] http://www.google.com/notebook/public/17169207797223145002/BDQGpIgoQpdinqaAj [/a] [a] http://www.google.com/notebook/public/16009210870621698647/BDQ6oIgoQ4LeoqaAj [/a] Payday Cash Tips2008 - http://www.google.com/notebook/public/17169207797223145002/BDQGpIgoQ2binqaAj

show annotation

Note by anonymous, Sun May 25 14:35:05 2008

c292t [a] [/a]

show annotation

Note by anonymous, Sun May 25 18:50:26 2008

c711t [a] [/a]

show annotation

Note by anonymous, Sun May 25 21:36:17 2008

c175t [a] [/a]

show annotation

Note by anonymous, Mon May 26 13:36:03 2008

c154t [a] [/a]

show annotation

Note by anonymous, Fri May 30 18:53:40 2008

c492t [a] [/a]

show annotation

Note by anonymous, Sat May 31 02:18:53 2008

c877t [a] [/a]

show annotation

Note by anonymous, Sat May 31 17:56:49 2008

c76t [a] [/a]

show annotation

Note by anonymous, Sat May 31 23:15:26 2008

c611t [a] [/a]

show annotation

Note by anonymous, Sun Jun 8 03:51:02 2008

c899t [a] http://www.google.com/notebook/public/10122935110512819198/BDSD6IgoQgr_ViaEj [/a] [a] http://www.google.com/notebook/public/10122935110512819198/BDQKlIgoQs-DViaEj [/a] [a] http://www.google.com/notebook/public/10122935110512819198/BDRteIgoQvobWiaEj [/a] Poker Games For Freee - http://www.google.com/notebook/public/10122935110512819198/BDSD6IgoQgr_ViaEj

show annotation

Note by anonymous, Sun Jun 8 04:16:14 2008

c263t [a] [/a]

show annotation

Note by anonymous, Sun Jun 8 04:39:41 2008

c735t [a] [/a]

show annotation

Note by anonymous, Sun Jun 8 05:01:58 2008

c145t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 13:38:58 2008

c656t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 13:51:01 2008

c984t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 14:04:22 2008

c974t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 14:17:20 2008

c536t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 14:29:14 2008

c188t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 14:40:37 2008

c228t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 14:52:18 2008

c724t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 15:04:14 2008

c868t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 15:16:52 2008

c901t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 15:29:47 2008

c856t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 15:42:01 2008

c398t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 15:53:35 2008

c78t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 16:04:55 2008

c22t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 16:16:39 2008

c407t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 16:28:44 2008

c304t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 16:41:07 2008

c514t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 16:52:57 2008

c8t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 17:04:06 2008

c628t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 17:04:07 2008

c592t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 17:15:15 2008

c506t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 17:26:36 2008

c199t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 17:38:48 2008

c449t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 17:51:11 2008

c594t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 18:03:03 2008

c6t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 18:14:18 2008

c168t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 18:25:31 2008

c64t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 18:36:47 2008

c594t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 19:01:04 2008

c457t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 19:13:34 2008

c518t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 19:25:32 2008

c489t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 19:36:49 2008

c678t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 19:48:14 2008

c93t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 19:48:17 2008

c63t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:00:04 2008

c954t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:00:04 2008

c537t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:00:05 2008

c242t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:12:22 2008

c753t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:24:33 2008

c32t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:36:16 2008

c756t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:47:06 2008

c852t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 20:58:15 2008

c376t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 21:09:54 2008

c280t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 21:22:04 2008

c599t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 21:34:03 2008

c596t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 21:45:34 2008

c971t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 21:56:24 2008

c334t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 22:14:28 2008

c540t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 22:23:42 2008

c673t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 22:32:58 2008

c66t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 22:41:17 2008

c332t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 22:42:22 2008

c415t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 22:52:42 2008

c107t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:03:33 2008

c228t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:12:13 2008

c679t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:21:38 2008

c951t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:26:42 2008

c784t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:31:09 2008

c944t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:40:50 2008

c277t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:50:44 2008

c41t [a] [/a]

show annotation

Note by anonymous, Tue Jun 10 23:52:19 2008

c411t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 00:03:18 2008

c111t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 00:05:50 2008

c301t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 00:20:49 2008

c208t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 00:28:36 2008

c377t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 00:40:20 2008

c825t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 00:45:29 2008

c594t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 00:50:55 2008

c636t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:06:08 2008

c122t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:07:34 2008

c214t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:12:47 2008

c500t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:25:11 2008

c115t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:29:55 2008

c962t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:33:08 2008

c594t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:36:12 2008

c307t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:47:50 2008

c437t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:54:03 2008

c512t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:57:51 2008

c877t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 01:58:39 2008

c586t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 02:09:00 2008

c776t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 02:11:06 2008

c437t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 02:21:34 2008

c920t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 02:32:05 2008

c692t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 02:33:42 2008

c821t [a] [/a]

show annotation

Note by anonymous, Wed Jun 11 02:46:21 2008

c528t [a] [/a]

Add Comment

Design Goals


Our design goals fall into three categories: functional (required capabilities), System (few dependencies, high performance) and Web Standards Compliance. To meet these requirements, we can also consider non-requirements. The system should offer strong support for technical and scholarly publishing to support authors, editors and readers. But there is no expectation that it will be used in high-volume discussions.

show annotation

Note by anonymous, Thu May 15 06:19:07 2008

Add Comment

Interactive Features


Permissions Framework
The system should permit or deny privilege to annotate or edit it, and should different levels of access to different users, including anonymous users where appropriate. It should be possible for each document to have its own permissions.
Editing facilities
Subject to permissions, it should be possible to edit the markup of a section and to add an annotation (margin-note) to a section.
Granular comment framework
It should be possible to edit or annotate sections individually, and to attach annotations to the section to which they apply. Structurally each section is an independent unit.
Concurrency Management
It is essential that concurrency is properly managed. In addition to locking a document for updates, any change or annotation to a section must be coordinated to avoid the risk of conflicting changes. Changes to different sections of a document are not considered to be in conflict, even if made simultaneously.
Versioning
Strong versioning (such as provided by CVS) is not a requirement, but it should at least be possible for a document owner and/or system administrator to restore an older version if required. It should mark annotations as old once the section has been updated to reflect the comments.
Add Comment

General


Simplicity
This should not require the addition of any substantial new software that might prove problematic to introduce on an operational server or risk compromising performance on older hardware.
Lightweight application
Reading a document should be a very low overhead on the server, preferably avoiding any such overheads as a database query or multiple filesystem accesses. Write operations should also be fast but are considered less critical.
Extensibility
Many planned capabilities are not yet implemented, but the design must accommodate introducing them at a later date without disrupting the existing site.
show annotation

Note by anonymous, Wed Apr 30 16:54:08 2008

http://pharma21.com - Our online shop of the drugstore is an excellent resource for people to get their medicine without any dispute or awkwardness. We lay hard to make sure You to save the money every time, which You shop with us. In our online shop, You pay less and become more.

show annotation

Note by anonymous, Sun May 18 17:37:16 2008

Pharma21.com - best online drugstore I long ago show the regular customers and for the last 5 years of the best drugstore did not see, particularly please the price, advise all use their skilled service.

Add Comment

Web Standards


Guaranteed Valid Markup
A system that permits an editor to enter markup risks collecting garbage, whether through ignorance or simple typos. The system must prevent that happening.
Accessibility and Graceful Degredation
Although the system may take advantage of graphics, stylesheets and clientside scripting to deliver a complete presentation, all contents must be available and clearly presented even in a text-only rendering such as Lynx.
Add Comment

The Solution


The basic solution adopted is to make each article a single XML file, containing all the data and metadata relevant to the article (except history information). The XML format adopted contains three types of data:

  • XHTML (namespace http://www.w3.org/1999/xhtml) for display
  • DublinCore (namespace http://purl.org/dc/elements/1.1/) for metadata
  • Annot (namespace http://apache.webthing.com/annot) for annotation and document management information. This is the only new markup introduced by this system.

Documents are presented using Apache's namespace support (mod_xmlns), based on a SAX parser that dispatches to different namespace handlers. A new namespace module mod_annot_view was developed to handle the annotations namespace. A second module mod_annot was developed to edit the articles. Other elements of the site development are a DTD used to validate document edits, and site design elements including CSS and Javascript.

The core of the system is therefore the design of the annotations namespace and document structure, and the implementation of the editor.

Add Comment

The Document Structure


The XML source is delivered on the Web as XHTML, which is required to be valid and accessible. To implement this with a fast SAX parser requires that the XML be ordered as it will be served, and that document-level metadata appear at the top of the file.

The structure of the XHTML served is constrained by accessibility to follow the logical order of the material presented. Apart from that, it needs hooks for CSS and Javascript to enhance the presentation.

The document root element is html. It is followed by annotation metadata describing ownership and access control. The data that will be served on the Web comprise the article's title, an Abstract, and one or more Section. Each section comprises a section title, section contents (html), and annotations, in that order.

All interactive features are at the level of the Section, which contains relevant metadata including in particular a last-modified timestamp and editor (this information is updated only by edits, not by annotations).

Add Comment

The Annotations Namespace


The annotations namespace http://apache.webthing.com/annot is introduced by this application, and comprises application-specific metadata and structure:

editor
element listing a named editor, and noting owner
protection
sets protection for annot or edit to No (not allowed), Yes (allowed for anyone), or Auth (allow only identified/authorised users)
lock
Sets a temporary lock against any edits or annotations
article
container for all article content, with title and hooks for templated header and footer. Contains abstract and one or more section.
abstract
Document abstract (html markup)
section
container for a section, with title, editor and timestamp information, containing content element and zero or more annots.
content
Contents of the section. (Editable HTML markup).
annot
An annotation (margin note), with identifier of who made it and when. Plain text.
show annotation

Note by anonymous, Sun May 11 10:59:45 2008

Add Comment

Displaying an Article


Articles are served using the generic namespace processor mod_xmlns, together with the mod_xhtml XHTML namespace implementation and a new module mod_annot_view, implementing the annotations namespace. The document is displayed in order: title, abstract, sections, within a page template incorporating a sitewide header and footer, and document information. Each section is displayed in order: section title, content, annotations, together with Annotate and Edit buttons if the user has the relevant permissions.

On the browser side (and subject to browser support for CSS and javascript), annotations are transformed into margin notes and collapsed to icons. Selecting an icon will display the annotation, while a simple mouseover will show who made the annotation and when.

Add Comment

The Editor


The editor supports two handlers: editing or annotating a section. Each operation has two parts: displaying a Form, and submitting the Form to commit the update.

This is not considered so performance-critical ad displaying an article, as it is likely to be a relatively infrequent (and non-cacheable) operation. Nevertheless, it is implemented as a module mod_annot. But mod_annot does allow itself the overhead of parsing the document to a DOM and using XPATH expressions to check document metadata and extract the section we are working on. If a document is not well-formed, the parse will fail and an HTTP Error 500 will be returned.

On all requests, mod_annot first checks that the user is authorised for the attempted operation and that the document is not locked against any update. If this check fails an HTTP 401 or 503 error response will be returned as appropriate.

After these checks, one of two things happen. If the request was an HTTP GET, it will display an editor form. If the request was a POST, it will submit the form, making the update.

In either case, the next operation is to extract the section we are working on from the DOM. This relies on the user submitting valid inputs to the editor: if the inputs are not acceptable to the system (i.e. if someone is trying to tamper with it), it will return an HTTP 400 error. If the section cannot be extracted despite well-formed inputs, it will return an HTTP 500 error: this could happen either on a tamper attempt or because the section was updated between loading a page and selecting the editor operation.

Either the annotation or edit forms are displayed within a general page template. The annotation form displays the section with an empty text box to enter the user's comment, while the edit form displays the section title and the section contents (markup) in form fields to be edited.

Submitting either of the forms causes an update to the document. So in the case of a POST operation, the editor will take an exclusive lock to prevent a race condition. It will also check the section timestamp to ensure that the section is still the same as what the user is working on, and hasn't been updated by someone else in the meantime, returning an HTTP 409 error on failure.

An Annotation operation will insert a new annot node in the section, escaping any markup to plain text.

An Edit operation will first validate the markup, returning an HTTP 422 error on failure (if no section DTD is supplied, it would merely check well-formedness). If successful, it will replace the section title and contents in the DOM with the new values entered, together with the timestamp and editor id.

The DOM will then be saved to a new file, and moved atomically to the filename used to display the document. Finally, an internal redirect returns the updated document to the user.

Add Comment

Appendix: httpd.conf



LoadModule	xmlns_module		modules/mod_xmlns.so
LoadModule	xhtml_module		modules/mod_xhtml.so
LoadModule	annotate_module		modules/mod_annot.so
LoadModule	annot_view_module	modules/mod_annot_view.so
LoadModule	dublincore_module	modules/mod_dublincore.so

<VirtualHost 195.224.39.74>
ServerName	www.apachetutor.org
DocumentRoot	/usr/www/atutor

AnnotSectionDTD file:///usr/www/atutor/section.dtd
AliasMatch	/([a-z]+)\/$	/usr/www/atutor/$1.html
AliasMatch	/auth/([a-z]+)\/$ /usr/www/atutor/$1.html
Alias /auth	/usr/www/atutor

<Directory /usr/www/atutor>
	AddType text/html;charset=utf-8 .edit .annot
	AddHandler	annot-edit	.edit
	AddHandler	annot-annot	.annot
	AnnotHeader	/path/to/header
	AnnotFooter	/path/to/footer
	<FilesMatch "^[a-z-]+$">
		SetOutputFilter	 xmlns
		ForceType		text/html;charset=utf-8
		XMLNSUseNamespace	http://apache.webthing.com/annot on view
		XMLNSUseNamespace	http://www.w3.org/1999/xhtml on 1.0
		XMLNSUseNamespace	http://purl.org/dc/elements/1.1/ on hide
	</FilesMatch>
</Directory>

<Location /auth>
	AuthType	Basic
	AuthName	"Apache Tutorials"
	Require		valid-user
	#(details chopped)
</Location>

</VirtualHost>