You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cr...@apache.org on 2003/12/12 06:13:01 UTC
cvs commit: cocoon-2.1/src/documentation/xdocs/plan linkalarm-broken.txt
crossley 2003/12/11 21:13:01
Modified: src/blocks/portal/samples/coplets sitemap.xmap
src/blocks/portal/samples/skins/basic/css page.css
src/blocks/portal/samples/skins/common/css page.css
src/blocks/slide/samples flow.js
src/documentation/xdocs/plan linkalarm-broken.txt
Log:
Fix dos2unix line-endings.
PR: 25381
Revision Changes Path
1.2 +43 -43 cocoon-2.1/src/blocks/portal/samples/coplets/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/samples/coplets/sitemap.xmap,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sitemap.xmap 11 Dec 2003 16:05:01 -0000 1.1
+++ sitemap.xmap 12 Dec 2003 05:13:01 -0000 1.2
@@ -1,43 +1,43 @@
-<?xml version="1.0"?>
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-<map:pipelines>
-
- <map:pipeline>
-
- <!-- this is a gallery coplet -->
- <map:match pattern="gallery">
- <map:generate type="directory" src="../../petstore/images">
- <map:parameter name="include" value=".jpg"/>
- </map:generate>
- <map:transform src="gallery/dir2pic.xsl">
- <map:parameter name="dirprefix" value="../petstore/images"/>
- </map:transform>
- <map:transform type="xslt" src="gallery/picture.xsl">
- <map:parameter name="pic" value="{coplet:attributes/picture}"/>
- <map:parameter name="fullscreen" value="{coplet:aspectDatas/fullScreen}"/>
- </map:transform>
- <map:transform type="portal-coplet"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="galleryviewer">
- <map:generate type="directory" src="../../petstore/images">
- <map:parameter name="include" value=".jpg"/>
- </map:generate>
- <map:transform src="gallery/dir2pic.xsl">
- <map:parameter name="dirprefix" value="../petstore/images"/>
- </map:transform>
- <map:transform type="xslt" src="gallery/picture.xsl">
- <map:parameter name="pic" value="{coplet:attributes/picture}"/>
- <map:parameter name="fullscreen" value="{coplet:aspectDatas/fullScreen}"/>
- <map:parameter name="navigation" value="false"/>
- </map:transform>
- <map:transform type="portal-coplet"/>
- <map:serialize type="xml"/>
- </map:match>
-
- </map:pipeline>
-
-</map:pipelines>
-</map:sitemap>
+<?xml version="1.0"?>
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<map:pipelines>
+
+ <map:pipeline>
+
+ <!-- this is a gallery coplet -->
+ <map:match pattern="gallery">
+ <map:generate type="directory" src="../../petstore/images">
+ <map:parameter name="include" value=".jpg"/>
+ </map:generate>
+ <map:transform src="gallery/dir2pic.xsl">
+ <map:parameter name="dirprefix" value="../petstore/images"/>
+ </map:transform>
+ <map:transform type="xslt" src="gallery/picture.xsl">
+ <map:parameter name="pic" value="{coplet:attributes/picture}"/>
+ <map:parameter name="fullscreen" value="{coplet:aspectDatas/fullScreen}"/>
+ </map:transform>
+ <map:transform type="portal-coplet"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:match pattern="galleryviewer">
+ <map:generate type="directory" src="../../petstore/images">
+ <map:parameter name="include" value=".jpg"/>
+ </map:generate>
+ <map:transform src="gallery/dir2pic.xsl">
+ <map:parameter name="dirprefix" value="../petstore/images"/>
+ </map:transform>
+ <map:transform type="xslt" src="gallery/picture.xsl">
+ <map:parameter name="pic" value="{coplet:attributes/picture}"/>
+ <map:parameter name="fullscreen" value="{coplet:aspectDatas/fullScreen}"/>
+ <map:parameter name="navigation" value="false"/>
+ </map:transform>
+ <map:transform type="portal-coplet"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ </map:pipeline>
+
+</map:pipelines>
+</map:sitemap>
1.2 +6 -6 cocoon-2.1/src/blocks/portal/samples/skins/basic/css/page.css
Index: page.css
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/samples/skins/basic/css/page.css,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- page.css 25 Jun 2003 08:23:17 -0000 1.1
+++ page.css 12 Dec 2003 05:13:01 -0000 1.2
@@ -1,6 +1,6 @@
-body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%;}
-
-.tab { font-size : 85%; border: 0 }
-.tab a:link { text-decoration : none; color: #000066; }
-.tab a:visited { text-decoration : none; color: #2A4A6D }
-.tab a:hover { color: #0000FF; }
+body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%;}
+
+.tab { font-size : 85%; border: 0 }
+.tab a:link { text-decoration : none; color: #000066; }
+.tab a:visited { text-decoration : none; color: #2A4A6D }
+.tab a:hover { color: #0000FF; }
1.2 +6 -6 cocoon-2.1/src/blocks/portal/samples/skins/common/css/page.css
Index: page.css
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/samples/skins/common/css/page.css,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- page.css 25 Jun 2003 08:23:16 -0000 1.1
+++ page.css 12 Dec 2003 05:13:01 -0000 1.2
@@ -1,6 +1,6 @@
-body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%;}
-
-.tab { font-size : 85%; border: 0 }
-.tab a:link { text-decoration : none; color: #000066; }
-.tab a:visited { text-decoration : none; color: #2A4A6D }
-.tab a:hover { color: #0000FF; }
+body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%;}
+
+.tab { font-size : 85%; border: 0 }
+.tab a:link { text-decoration : none; color: #000066; }
+.tab a:visited { text-decoration : none; color: #2A4A6D }
+.tab a:hover { color: #0000FF; }
1.3 +184 -184 cocoon-2.1/src/blocks/slide/samples/flow.js
Index: flow.js
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/slide/samples/flow.js,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- flow.js 10 Dec 2003 17:20:25 -0000 1.2
+++ flow.js 12 Dec 2003 05:13:01 -0000 1.3
@@ -1,184 +1,184 @@
-
-importPackage(Packages.org.apache.cocoon.components.slide);
-importPackage(Packages.org.apache.cocoon.components.source.helpers);
-importPackage(Packages.org.apache.excalibur.source);
-
-var repository = cocoon.getComponent("org.apache.cocoon.components.repository.SourceRepository");
-var provider = cocoon.getComponent(PrincipalProvider.ROLE + "Selector").select("slide");
-var resolver = cocoon.getComponent(SourceResolver.ROLE);
-
-// ---------------------------------------------- utility functions
-
-function getBaseURI() {
- var namespace = cocoon.parameters["namespace"];
- var caller = cocoon.parameters["caller"];
- return "slide://" + caller + "@" + namespace;
-}
-
-function getParentPath() {
- var parentPath = cocoon.request.getParameter("parentPath");
- if (!parentPath.lastIndexOf('/') != parentPath.length-1) {
- parentPath = parentPath + "/";
- }
- return parentPath;
-}
-
-function getResourcePath() {
- return cocoon.request.getParameter("resourcePath");
-
-}
-
-// ---------------------------------------------- authentication
-
-function authenticate() {
- var userid = cocoon.request.getParameter("userid");
- var password = cocoon.request.getParameter("password");
- // TODO: if (password = correct) ..
- cocoon.sendPage("authentication",{id:userid,role:"root"});
-}
-
-// ---------------------------------------------- file management
-
-// make a new collection
-function public_mkcol() {
- var baseUri = getBaseURI();
- var parentPath = getParentPath();
- var collectionName = cocoon.request.getParameter("collectionName");
- var location = baseUri + parentPath + collectionName;
- var status = repository.makeCollection(location);
-
- cocoon.redirectTo("content" + parentPath);
-}
-
-// upload a file
-function public_upload() {
- var baseUri = getBaseURI();
- var parentPath = getParentPath();
- var resourceName = cocoon.request.getParameter("resourceName");
- var dest = baseUri + parentPath + resourceName;
- var src = "upload://uploadFile";
-
- var status = repository.save(src,dest);
- cocoon.redirectTo("content" + parentPath);
-}
-
-// delete a resource
-function public_delete() {
- var baseUri = getBaseURI();
- var parentPath = getParentPath();
- var resourceName = cocoon.request.getParameter("resourceName");
- var location = baseUri + parentPath + resourceName;
-
- var status = repository.remove(location);
- cocoon.redirectTo("content" + parentPath);
-}
-
-// ---------------------------------------------- property management
-
-function public_addproperty() {
- var baseUri = getBaseURI();
- var resourcePath = getResourcePath();
- var location = baseUri + resourcePath;
- var source = null;
- try {
- source = resolver.resolveURI(location);
- var name = cocoon.request.getParameter("name");
- var namespace = cocoon.request.getParameter("namespace");
- var value = cocoon.request.getParameter("value");
- var property = new SourceProperty(namespace,name,value);
- cocoon.log.info("setting property " + property + " on source " + location);
- source.setSourceProperty(property);
- }
- finally {
- if (source != null) {
- resolver.release(source);
- }
- }
- cocoon.redirectTo("properties" + resourcePath);
-}
-
-function public_removeproperty() {
- var baseUri = getBaseURI();
- var resourcePath = getResourcePath();
- var location = baseUri + resourcePath;
- var source = null;
- try {
- source = resolver.resolveURI(location);
- var name = cocoon.request.getParameter("name");
- var namespace = cocoon.request.getParameter("namespace");
- cocoon.log.info("removing property " + namespace + "#" + name + " from source " + location);
- source.removeSourceProperty(namespace,name);
- } finally {
- if (source != null) {
- resolver.release(source);
- }
- }
- cocoon.redirectTo("properties" + resourcePath);
-}
-
-// ---------------------------------------------- lock management
-
-function public_removelock() {
- var baseUri = getBaseURI();
- var resourcePath = getResourcePath();
- var subject = cocoon.request.getParameter("subject");
- var location = baseUri + resourcePath;
-
- cocoon.log.info("removing lock " + subject + " from source " + location);
-
- // TODO: remove lock
-
- cocoon.redirectTo("locks" + resourcePath);
-}
-
-function public_addlock() {
- var baseUri = getBaseURI();
- var resourcePath = getResourcePath();
- var subject = cocoon.request.getParameter("subject");
- var type = cocoon.request.getParameter("type");
- var inheritable = cocoon.request.getParameter("inheritable");
- var exclusive = cocoon.request.getParameter("exclusive");
- var location = baseUri + resourcePath;
-
- cocoon.log.info("adding lock " + subject + " to source " + location);
-
- // TODO: add lock
-
- cocoon.redirectTo("locks" + resourcePath);
-}
-
-// ---------------------------------------------- user management
-
-function public_adduser() {
- var username = cocoon.request.getParameter("username");
- var password = cocoon.request.getParameter("password");
- var role = cocoon.request.getParameter("role");
- var caller = cocoon.parameters["caller"];
-
- provider.addPrincipal(new Principal(caller),new Principal(username,role,password));
- cocoon.redirectTo("users/");
-}
-
-function public_removeuser() {
- var username = cocoon.request.getParameter("username");
- var caller = cocoon.parameters["caller"];
-
- provider.removePrincipal(new Principal(caller),new Principal(username));
- cocoon.redirectTo("users/");
-}
-
-function public_addgroup() {
- var groupname = cocoon.request.getParameter("groupname");
- var caller = cocoon.parameters["caller"];
-
- provider.addPrincipalGroup(new Principal(caller),new PrincipalGroup(groupname));
- cocoon.sendPage("users/",null);
-}
-
-function public_removegroup() {
- var groupname = cocoon.request.getParameter("groupname");
- var caller = cocoon.parameters["caller"];
-
- provider.removePrincipalGroup(new Principal(caller),new PrincipalGroup(groupname));
- cocoon.sendPage("users/",null);
-}
\ No newline at end of file
+
+importPackage(Packages.org.apache.cocoon.components.slide);
+importPackage(Packages.org.apache.cocoon.components.source.helpers);
+importPackage(Packages.org.apache.excalibur.source);
+
+var repository = cocoon.getComponent("org.apache.cocoon.components.repository.SourceRepository");
+var provider = cocoon.getComponent(PrincipalProvider.ROLE + "Selector").select("slide");
+var resolver = cocoon.getComponent(SourceResolver.ROLE);
+
+// ---------------------------------------------- utility functions
+
+function getBaseURI() {
+ var namespace = cocoon.parameters["namespace"];
+ var caller = cocoon.parameters["caller"];
+ return "slide://" + caller + "@" + namespace;
+}
+
+function getParentPath() {
+ var parentPath = cocoon.request.getParameter("parentPath");
+ if (!parentPath.lastIndexOf('/') != parentPath.length-1) {
+ parentPath = parentPath + "/";
+ }
+ return parentPath;
+}
+
+function getResourcePath() {
+ return cocoon.request.getParameter("resourcePath");
+
+}
+
+// ---------------------------------------------- authentication
+
+function authenticate() {
+ var userid = cocoon.request.getParameter("userid");
+ var password = cocoon.request.getParameter("password");
+ // TODO: if (password = correct) ..
+ cocoon.sendPage("authentication",{id:userid,role:"root"});
+}
+
+// ---------------------------------------------- file management
+
+// make a new collection
+function public_mkcol() {
+ var baseUri = getBaseURI();
+ var parentPath = getParentPath();
+ var collectionName = cocoon.request.getParameter("collectionName");
+ var location = baseUri + parentPath + collectionName;
+ var status = repository.makeCollection(location);
+
+ cocoon.redirectTo("content" + parentPath);
+}
+
+// upload a file
+function public_upload() {
+ var baseUri = getBaseURI();
+ var parentPath = getParentPath();
+ var resourceName = cocoon.request.getParameter("resourceName");
+ var dest = baseUri + parentPath + resourceName;
+ var src = "upload://uploadFile";
+
+ var status = repository.save(src,dest);
+ cocoon.redirectTo("content" + parentPath);
+}
+
+// delete a resource
+function public_delete() {
+ var baseUri = getBaseURI();
+ var parentPath = getParentPath();
+ var resourceName = cocoon.request.getParameter("resourceName");
+ var location = baseUri + parentPath + resourceName;
+
+ var status = repository.remove(location);
+ cocoon.redirectTo("content" + parentPath);
+}
+
+// ---------------------------------------------- property management
+
+function public_addproperty() {
+ var baseUri = getBaseURI();
+ var resourcePath = getResourcePath();
+ var location = baseUri + resourcePath;
+ var source = null;
+ try {
+ source = resolver.resolveURI(location);
+ var name = cocoon.request.getParameter("name");
+ var namespace = cocoon.request.getParameter("namespace");
+ var value = cocoon.request.getParameter("value");
+ var property = new SourceProperty(namespace,name,value);
+ cocoon.log.info("setting property " + property + " on source " + location);
+ source.setSourceProperty(property);
+ }
+ finally {
+ if (source != null) {
+ resolver.release(source);
+ }
+ }
+ cocoon.redirectTo("properties" + resourcePath);
+}
+
+function public_removeproperty() {
+ var baseUri = getBaseURI();
+ var resourcePath = getResourcePath();
+ var location = baseUri + resourcePath;
+ var source = null;
+ try {
+ source = resolver.resolveURI(location);
+ var name = cocoon.request.getParameter("name");
+ var namespace = cocoon.request.getParameter("namespace");
+ cocoon.log.info("removing property " + namespace + "#" + name + " from source " + location);
+ source.removeSourceProperty(namespace,name);
+ } finally {
+ if (source != null) {
+ resolver.release(source);
+ }
+ }
+ cocoon.redirectTo("properties" + resourcePath);
+}
+
+// ---------------------------------------------- lock management
+
+function public_removelock() {
+ var baseUri = getBaseURI();
+ var resourcePath = getResourcePath();
+ var subject = cocoon.request.getParameter("subject");
+ var location = baseUri + resourcePath;
+
+ cocoon.log.info("removing lock " + subject + " from source " + location);
+
+ // TODO: remove lock
+
+ cocoon.redirectTo("locks" + resourcePath);
+}
+
+function public_addlock() {
+ var baseUri = getBaseURI();
+ var resourcePath = getResourcePath();
+ var subject = cocoon.request.getParameter("subject");
+ var type = cocoon.request.getParameter("type");
+ var inheritable = cocoon.request.getParameter("inheritable");
+ var exclusive = cocoon.request.getParameter("exclusive");
+ var location = baseUri + resourcePath;
+
+ cocoon.log.info("adding lock " + subject + " to source " + location);
+
+ // TODO: add lock
+
+ cocoon.redirectTo("locks" + resourcePath);
+}
+
+// ---------------------------------------------- user management
+
+function public_adduser() {
+ var username = cocoon.request.getParameter("username");
+ var password = cocoon.request.getParameter("password");
+ var role = cocoon.request.getParameter("role");
+ var caller = cocoon.parameters["caller"];
+
+ provider.addPrincipal(new Principal(caller),new Principal(username,role,password));
+ cocoon.redirectTo("users/");
+}
+
+function public_removeuser() {
+ var username = cocoon.request.getParameter("username");
+ var caller = cocoon.parameters["caller"];
+
+ provider.removePrincipal(new Principal(caller),new Principal(username));
+ cocoon.redirectTo("users/");
+}
+
+function public_addgroup() {
+ var groupname = cocoon.request.getParameter("groupname");
+ var caller = cocoon.parameters["caller"];
+
+ provider.addPrincipalGroup(new Principal(caller),new PrincipalGroup(groupname));
+ cocoon.sendPage("users/",null);
+}
+
+function public_removegroup() {
+ var groupname = cocoon.request.getParameter("groupname");
+ var caller = cocoon.parameters["caller"];
+
+ provider.removePrincipalGroup(new Principal(caller),new PrincipalGroup(groupname));
+ cocoon.sendPage("users/",null);
+}
1.2 +20 -20 cocoon-2.1/src/documentation/xdocs/plan/linkalarm-broken.txt
Index: linkalarm-broken.txt
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/documentation/xdocs/plan/linkalarm-broken.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linkalarm-broken.txt 9 Mar 2003 00:08:10 -0000 1.1
+++ linkalarm-broken.txt 12 Dec 2003 05:13:01 -0000 1.2
@@ -1,20 +1,20 @@
-#----------------------------------------------------------------
-# LinkAlarm last run on 2002-10-19
-#
-#status problem_link referring_page response_code meaning comment
-#----------------------------------------------------------------
-1 http://buglet.sourceforge.net/ http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
-1 http://devnet.hp.com/projects/deli/ http://xml.apache.org/cocoon/installing/jars.html 408 Request timeout (5 attempts) -
-1 http://editxml.sourceforge.net/ http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
-1 http://jakarta.apache.org/avalon/excalibur/logger.html http://xml.apache.org/cocoon/faq/faq-configure-c2.html 404 Not Found -
-1 http://jeuclid.sourceforge.net/ http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
-1 http://opensource.bibop.it/bbp/xforge/index.html http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
-1 http://www.belfoot.tv/ http://xml.apache.org/cocoon/link/livesites.html 408 Request timeout (5 attempts) -
-6 http://www.bigfoot.com/~davidsont/jstyle http://xml.apache.org/cocoon/userdocs/xsp/xsp-internals.html 404 Not Found -
-1 http://www.elysee.tv/ http://xml.apache.org/cocoon/link/livesites.html 408 Request timeout (5 attempts) -
-1 http://www.intelinet.com.br/ http://xml.apache.org/cocoon/link/livesites.html 408 Request timeout (5 attempts) -
-2 http://www.medisite-pro.fr/ http://xml.apache.org/cocoon/link/livesites.html 904 Can't connect to www.medisite-pro.fr:80 (Bad hostname 'www.medisite-pro.fr') -
-1 http://www.s-und-n.de/services/training/cocoonschulungen_english.htm http://xml.apache.org/cocoon/link/training.html 404 Not Found -
-1 http://www.weft.co.uk/library/maybeupload/ http://xml.apache.org/cocoon/installing/jars.html 904 Can't connect to www.weft.co.uk:80 (Bad hostname 'www.weft.co.uk') -
-2 http://www.xslt-patterns.com/ http://xml.apache.org/cocoon/link/livesites.html 904 Can't connect to www.xslt-patterns.com:80 (Bad hostname 'www.xslt-patterns.com') -
-? http://xml.apache.org/cocoon/bylaws-addendum.html http://xml.apache.org/cocoon/ 404 Not Found same link is busted in 15 top-level docs
+#----------------------------------------------------------------
+# LinkAlarm last run on 2002-10-19
+#
+#status problem_link referring_page response_code meaning comment
+#----------------------------------------------------------------
+1 http://buglet.sourceforge.net/ http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
+1 http://devnet.hp.com/projects/deli/ http://xml.apache.org/cocoon/installing/jars.html 408 Request timeout (5 attempts) -
+1 http://editxml.sourceforge.net/ http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
+1 http://jakarta.apache.org/avalon/excalibur/logger.html http://xml.apache.org/cocoon/faq/faq-configure-c2.html 404 Not Found -
+1 http://jeuclid.sourceforge.net/ http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
+1 http://opensource.bibop.it/bbp/xforge/index.html http://xml.apache.org/cocoon/link/projects.html 404 Not Found -
+1 http://www.belfoot.tv/ http://xml.apache.org/cocoon/link/livesites.html 408 Request timeout (5 attempts) -
+6 http://www.bigfoot.com/~davidsont/jstyle http://xml.apache.org/cocoon/userdocs/xsp/xsp-internals.html 404 Not Found -
+1 http://www.elysee.tv/ http://xml.apache.org/cocoon/link/livesites.html 408 Request timeout (5 attempts) -
+1 http://www.intelinet.com.br/ http://xml.apache.org/cocoon/link/livesites.html 408 Request timeout (5 attempts) -
+2 http://www.medisite-pro.fr/ http://xml.apache.org/cocoon/link/livesites.html 904 Can't connect to www.medisite-pro.fr:80 (Bad hostname 'www.medisite-pro.fr') -
+1 http://www.s-und-n.de/services/training/cocoonschulungen_english.htm http://xml.apache.org/cocoon/link/training.html 404 Not Found -
+1 http://www.weft.co.uk/library/maybeupload/ http://xml.apache.org/cocoon/installing/jars.html 904 Can't connect to www.weft.co.uk:80 (Bad hostname 'www.weft.co.uk') -
+2 http://www.xslt-patterns.com/ http://xml.apache.org/cocoon/link/livesites.html 904 Can't connect to www.xslt-patterns.com:80 (Bad hostname 'www.xslt-patterns.com') -
+? http://xml.apache.org/cocoon/bylaws-addendum.html http://xml.apache.org/cocoon/ 404 Not Found same link is busted in 15 top-level docs