stefano 00/06/21 15:04:50
Modified: xdocs/drafts Tag: xml-cocoon2 sitemap-working-draft.xmap
Log:
lotsa changes this time
Revision Changes Path
No revision
No revision
1.1.2.3 +278 -271 xml-cocoon/xdocs/drafts/Attic/sitemap-working-draft.xmap
Index: sitemap-working-draft.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon/xdocs/drafts/Attic/sitemap-working-draft.xmap,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- sitemap-working-draft.xmap 2000/06/20 10:09:19 1.1.2.2
+++ sitemap-working-draft.xmap 2000/06/21 22:04:47 1.1.2.3
@@ -91,7 +91,7 @@
10) resources must be matched with all possible state variables, not
only with URI (http parameters, enviornment variables, server
parameters, time, etc...).
-11) sitemaps should embed the notion of °semantic resources° to be
+11) sitemaps should embed the notion of "semantic resources" to be
future-compatible with sematic crawling and indexing.
12) sitemaps should be flexible enough to allow a complete web site to
be built with Cocoon.
@@ -101,7 +101,7 @@
<!--
The default namespaces are used mainly for versioning, instead of using
- attributes such as version="2.0" which could create confusion. People are
+ attributes such as version="1.0" which could create confusion. People are
used to writing URIs with no spelling mistakes, while versioning could be
used for their own sitemap versions and this might break operation.
@@ -109,141 +109,129 @@
by one each time a new release breaks back compatibility, while minor
is increased each time a change has been made that doesn't create
back incompatible problems.
-
- The "src:" namespace is associated with loaders. This implies a schema for
- loaders to be maintained by the Cocoon project if the indicated namespace
- for loaders is used.
-
- In the future if the need for custom loaders emerges, we'll provide
- ways to extend this, but for now we'll assume Cocoon maintains the list
- of resource loaders.
-
- The "local" attribute is used when the resource is _local_ to the
- sitemap. This doesn't have an absolute meaning, but depends on the _where_
- the sitemap was found. For example, if the root sitemap was found on a
- file system, all local resources are interpreted as files and passed
- to the "local" loader. While, if the "file" attribute is used, the file
- loader is always used. This is mostly important when the sitemap is
- found inside compressed archives or loaded with non-standard loading
- methods such as CVS, WebDAV or other forms of databases.
-
- NOTE (SM)
-
- Note that sitemap operation is URI based and relativity is always based
- on URI locations (for example, there is no language-relativity or
- machine-load-relativity for mounted sitemaps). This might considered
- an asymmetry in respect to the uri-abstracted conditional model, but
- I think that providing uri-abstracted way of doing sitemap mounting is
- FS.
-
--->
+ -->
+
<!--
- The Sitemap
+
+ NOTE (SM)
+
+ the syntax
+
+ <xxx map:value="yyy">
+
+ is completely equivalent to
+
+ <xxx>yyy</xxx>
+
+ throughout the entire sitemap.. the "value" attribute is a reserved one.
+
+ [XXX] (SM) should we use the "map" namespace for this special attribute?
+
-->
-<sitemap
- xmlns="http://xml.apache.org/cocoon/sitemap/1.0"
- xmlns:src="http://xml.apache.org/cocoon/loaders/1.0"
->
- <!--
- Pipeline components
- -->
- <components>
+<map:sitemap xmlns:map="http://xml.apache.org/cocoon/sitemap/1.0">
+<!-- =========================== Components ================================
-->
+
+ <map:components>
+
<!--
Generators generate XML content as SAX events and initialize the
pipeline processing.
-->
- <generators>
- <generator type="parser"
src:class="org.apache.cocoon.generator.FileGenerator"/>
- <generator type="dir"
src:file="/home/mystuff/java/MyDirGenerator.class"/>
- <generator type="xsp"
src:class="org.apache.cocoon.generators.XSPGenerator">
+ <map:generators default="parser">
+ <map:generator type="parser"
src="class://org.apache.cocoon.generator.FileGenerator"/>
+ <map:generator type="dir"
src="file:///home/mystuff/java/MyDirGenerator.class"/>
+ <map:generator type="xsp"
src="class://org.apache.cocoon.generators.XSPGenerator">
...
- </generator>
- </generators>
+ </map:generator>
+ </map:generators>
<!--
Filters transform SAX events in SAX events.
-->
- <filters>
- <filter type="xslt" src:class="org.apache.cocoon.filter.XSLTFilter"/>
- <filter type="xinclude"
src:class="org.apache.cocoon.filter.XIncludeFilter"/>
- </filters>
+ <map:filters default="xslt">
+ <map:filter type="xslt" src="class://org.apache.cocoon.filter.XSLTFilter">
+ <compile-stylesheets value="true"/>
+ </map:filter>
+ <map:filter type="xinclude"
src="class://org.apache.cocoon.filter.XIncludeFilter"/>
+ </map:filters>
<!--
Serializers transform SAX events in binary or char streams for
final client consumption.
-->
- <serializers>
- <serializer type="html" mime-type="text/html"
src:class="org.apache.cocoon.serializer.HTMLSerializer">
- <param name="doctype-public" value="-//W3C//DTD HTML 4.0
Transitional//EN"/>
- <param name="doctype-system"
value="http://www.w3.org/TR/REC-html40/loose.dtd"/>
- <param name="preserve-space" value="true"/>
- <param name="encoding" value="UTF-8"/>
- <param name="indent" value="1"/>
- <param name="line-width" value="120"/>
- </serializer>
-
- <serializer type="wap" mime-type="text/vnd.wap.wml"
src:class="org.apache.cocoon.serializer.XMLSerializer">
- <param name="doctype-public" value="-//WAPFORUM//DTD WML 1.1//EN"/>
- <param name="doctype-system"
value="http://www.wapforum.org/DTD/wml_1.1.xml"/>
- <param name="encoding" value="UTF-8"/>
- </serializer>
-
- <serializer type="svg2jpg" mime-type="image/jpg"
src:class="org.apache.cocoon.serializer.SVGSerializer">
- <param name="format" value="jpg"/>
- <param name="compression-level" value="80%"/>
- </serializer>
-
- <serializer type="svg2png" mime-type="image/png"
src:class="org.apache.cocoon.serializer.SVGSerializer">
- <param name="format" value="png"/>
- <param name="color-depth" value="24"/>
- </serializer>
- </serializers>
-
+ <map:serializers default="html">
+ <map:serializer type="html" mime-type="text/html"
src="class://org.apache.cocoon.serializer.HTMLSerializer">
+ <doctype-public value="-//W3C//DTD HTML 4.0 Transitional//EN"/>
+ <doctype-system value="http://www.w3.org/TR/REC-html40/loose.dtd"/>
+ <preserve-space value="true"/>
+ <encoding value="UTF-8"/>
+ <indent value="1"/>
+ <line-width value="120"/>
+ </map:serializer>
+
+ <map:serializer type="wap" mime-type="text/vnd.wap.wml"
src="class://org.apache.cocoon.serializer.XMLSerializer">
+ <doctype-public>-//WAPFORUM//DTD WML 1.1//EN</doctype-public>
+ <doctype-system>http://www.wapforum.org/DTD/wml_1.1.xml</doctype-system>
+ <encoding>UTF-8</encoding>
+ </map:serializer>
+
+ <map:serializer type="svg2jpg" mime-type="image/jpg"
src="class://org.apache.cocoon.serializer.SVGSerializer">
+ <format value="jpg"/>
+ <compression-level>80%</compression-level>
+ </map:serializer>
+
+ <map:serializer type="svg2png" mime-type="image/png"
src="class://org.apache.cocoon.serializer.SVGSerializer">
+ <format>png</format>
+ <color-depth value="24"/>
+ </map:serializer>
+ </map:serializers>
+
<!--
Choosers are classes that contain programming logic that perform
- matching based on variable contained in the request, in the server
state
- or generally based on any information available during the matching
evaluation.
-
- The main matching type, URI matching, is hardcoded into the sitemap
schema
- because, by far, the most used. But it was identified as a clear need
the
- ability to extend such matching capabilities to "react" on different
- parameters. Choosers are components invoked at runtime and returning
- a boolean value indicating the class matched the request or not
depending
- on internal logic, configuration parameters and current state.
-
- [FIXME] (SM) should we use a better name for this?
+ boolean evaluation based on enviornment state during the call (state
+ includes request parameters, machine state as well as any other
+ accessible information)
+ Choosers can only respond with true/false when called.
-->
- <choosers>
- <chooser type="browser"
src:class="org.apache.cocoon.chooser.BrowserChooser">
+ <map:choosers default="browser">
+ <map:chooser type="load"
src="class://org.apache.cocoon.chooser.MachineLoadChooser">
...
- </chooser>
+ </map:chooser>
- <chooser type="load"
src:class="org.apache.cocoon.chooser.MachineLoadChooser">
+ <map:chooser type="user"
src="class://org.apache.cocoon.chooser.AuthenticationChooser">
...
- </chooser>
+ </map:chooser>
- <chooser type="user"
src:class="org.apache.cocoon.chooser.AuthenticationChooser">
+ <map:chooser type="browser"
src="class://org.apache.cocoon.matcher.BrowserChooser">
...
- </chooser>
+ </map:chooser>
+ </map:choosers>
- <chooser type="ip-filter" src:local="./classes/IPValidityChooser.class">
+ <!--
+ Matchers are classes that are able to test if the request parameters
+ match the given pattern and, if this is the case, they are able to
+ return a collection of tokens that resulted from the matching or any
+ depending on the matcher own logic (this is up to the matcher
implementation).
+ -->
+ <map:matchers default="uri-wildcard">
+ <map:matcher type="uri-wildcard"
src="class://org.apache.cocoon.matcher.WildcardURIMatcher">
...
- </chooser>
+ </matcher>
- <chooser type="semantic-view"
src:class="org.apache.cocoon.chooser.SemanticView">
+ <map:matcher type="uri-regexp"
src="class://org.apache.cocoon.matcher.RegexpURIMatcher">
...
- </chooser>
- </choosers>
+ </map:matcher>
+ </map:matcher>
- </components>
+ </map:components>
+<!-- =========================== Resources =================================
-->
<!--
-
the <resource> element is used as a placeholder for pipelines
that are used several times inside the document. This element
is redundant and its functionality is not directly related
@@ -256,185 +244,204 @@
it is much easier to include such an element instead of forcing
the use of xinclude/xpointer.
-->
- <resources>
+ <map:resources>
- <resource name="Access refused">
- <generator type="parser" src:local="./error-pages/restricted.xml"/>
- <filter type="xslt" src:local="./stylesheets/general-browser.xsl"/>
- <serializer type="html" status-code="401"/>
- </resource>
+ <map:resource name="Access refused">
+ <map:generator type="parser" src:local="./error-pages/restricted.xml"/>
+ <map:filter type="xslt" src:local="./stylesheets/general-browser.xsl"/>
+ <map:serializer type="html" status-code="401"/>
+ </map:resource>
- </resources>
+ </map:resources>
- <!--
- Mount points allow sitemaps to be cascaded and site management
- workload to be parallelized.
- -->
- <mounts>
- <mount uri="regexp('^/xerces-(j|c|p)/(.*)$')" src:cvs=":pserver:[EMAIL
PROTECTED]:/home/cvs/xerces-{1}/xdocs/{2}" />
- <mount uri="cocoon/*" src:cvs=":pserver:[EMAIL
PROTECTED]:/home/cvs/cocoon/xdocs/{1}" />
- <mount uri="bugs/*" src:jar="./apps/bugs.cocoon#{1}" />
- <mount uri="dist/*" src:local="./dist/{1}" />
- <mount uri="faq/*" src:jar="./apps/faq-o-matic.cocoon#{1}" />
- </mounts>
+<!-- =========================== Sitemap ===================================
-->
+ <!--
+ Mount points allow sitemaps to be cascaded and site management
+ workload to be parallelized.
+ -->
+ <map:match pattern="cocoon/*">
+ <map:mount src="cvs:pserver:[EMAIL
PROTECTED]://home/cvs/cocoon/xdocs/{1}"/>
+ </map:match>
+
+ <map:match pattern="bugs/*">
+ <map:mount src="jar://apps/bugs.cocoon#{1}"/>
+ </map:match>
+
+ <map:match pattern="dist/*">
+ <map:mount src="./dist/{1}"/>
+ </map:match>
+
+ <map:match pattern="faq/*">
+ <map:mount src="jar://apps/faq-o-matic.cocoon#{1}"/>
+ </map:match>
+
+ <map:match type="uri-regexp" pattern="^/xerces-(j|c|p)/(.*)$">
+ <map:mount src="cvs:pserver:[EMAIL
PROTECTED]://home/cvs/xerces-{1}/xdocs/{2}"/>
+ </map:match>
+ <!--
+ Matchers declarative dispatch the requests to the pipelines that
+ match some of their parameters
+ -->
+ <map:match pattern="cocoon/dist/*">
+ <map:choose type="ip-filter">
+ <map:when test="allowsAddress()">
+ <!--
+ the <redirect> element is used to redirect one requested URI
+ to another. This is somewhat equivalent to URI rewriting.
+ -->
+ <map:redirect to="dist/cocoon/{1}"/>
+ </map:when>
+ <map:otherwise>
+ <map:resource name="Access refused"/>
+ </map:otherwise>
+ </map:choose>
+ </map:match>
+
+ <!--
+ When no "type" attribute is present, the sitemap intepreter will use
the
+ default one, this allows a very compact and user friendly syntax as the
+ one below
+ -->
+ <map:match pattern="printer-friendly/*">
+ <map:generate src:local="{1}.xml"/>
+ <map:filter src:local="./stylesheet/printer-friendly.xsl"/>
+ <map:serialize/>
+ </map:match>
+
+ <map:match pattern="images/logo">
+ <map:choose>
+ <map:when test="accepts('image/svg')">
+ <!--
+ the <read> element is used to read the src directly without
+ applying any processing. This is mostly useful when clients
+ are capable of handling XML content directly.
+ -->
+ <map:read src="./images/logo.svg"/>
+ </map:when>
+ <map:otherwise>
+ <map:generate src="./images/logo.svg"/>
+ <map:choose>
+ <map:when test="accepts('image/png')">
+ <map:serialize type="svg2png"/>
+ </map:when>
+ <map:otherwise>
+ <map:serialize type="svg2jpg"/>
+ </map:otherwise>
+ </map:choose>
+ </map:otherwise>
+ </map:choose>
+ </map:match>
+
+ <map:match pattern="restricted/*">
+ <map:choose type="user">
+ <map:when test="is('administrator')">
+ <map:generate src="./restricted/{1}"/>
+ <map:filter src="./stylesheets/restricted.xsl"/>
+ <map:serialize/>
+ </map:when>
+ <map:otherwise>
+ <map:resource name="Access refused"/>
+ </map:otherwise>
+ </map:choose>
+ </map:match>
+
<!--
- the pipeline is the collection of declarative instructions for the
- engine to generate the resources out of the declared components.
- -->
- <pipeline>
-
- <!--
- The choose element executes the specified matching test and performs
the
- resource construction based on the pipeline routing information it
- contains. Mapping rules for <mount> apply here as well.
+ Complex example to show how some xpath-like syntax is used to get access
+ to the pattern tokens generated by the matchers.
+ -->
+ <map:match pattern="nested-matchers/*">
+ <map:match type="browser" pattern="name('Mozilla ?\?*')">
+ <map:mount src="file:///home/www/mozilla-{1}-{2}/{../1}"/>
+ </map:match>
+ </map:match>
+
+ <map:match pattern="complex-semantics/*">
+
+ <!--
+ The semantic view should contain all the information that semantic
+ crawlers need to fully understand this resource. It normally means
+ that RDF, XLink and PI are contained in this view of the resource
+ and Cocoon will be able to interrupt the pipeline at this point
+ if the client is requesting this.
+
+ This will be used for offline crawlers, metadata indexers and
+ XML-capable browsers.
-->
- <choose type="uri">
- <when test="cocoon/dist/*">
- <choose type="ip-filter">
- <when test="allowsAddress()">
- <!--
- the <redirect> element is used to redirect one requested URI
- to another. This is somewhat equivalent to URI rewriting.
- -->
- <redirect to="dist/cocoon/{1}"/>
- </when>
- <default>
- <resource name="Access refused"/>
- </default>
- </choose>
- </when>
-
- <when test="printer-friendly/*">
- <generate type="parser" src:local="{1}.xml"/>
- <filter type="xslt" src:local="./stylesheet/printer-friendly.xsl"/>
- <serialize type="html"/>
- </when>
-
- <when test="images/logo">
- <choose type="browser">
- <when test="accepts('image/svg')">
- <!--
- the <read> element is used to read the src directly without
- applying any processing. This is mostly useful when clients
- are capable of handling XML content directly.
- -->
- <read src:local="./images/logo.svg"/>
- </when>
- <default>
- <generate type="parser" src:local="./images/logo.svg"/>
- <choose type="browser">
- <when test="accepts('image/png')">
- <serialize type="svg2png"/>
- </when>
- <default>
- <serialize type="svg2jpg"/>
- </default>
- </choose>
- </default>
- </choose>
- </when>
-
- <when test="restricted/*">
- <choose type="user">
- <when test="is('administrator')">
- <generate type="parser" src:local="./restricted/{1}"/>
- <filter type="xslt" src:local="./stylesheets/restricted.xsl"/>
- <serialize type="html"/>
- </when>
- <default>
- <resource name="Access refused"/>
- </default>
- </choose>
- </when>
-
- <when test="complex-semantics/*">
- <generate type="parser" src:local="./complex-semantics/{1}"/>
- <filter type="xslt" src:local="./stylesheet/rdf-izer.xsl"/>
- <filter type="xslt" src:local="./stylesheet/xlink-izer.xsl"/>
- <!--
- The semantic view should contain all the information that semantic
- crawlers need to fully understand this resource. It normally means
- that RDF, XLink and PI are contained in this view of the resource
- and Cocoon will be able to interrupt the pipeline at this point
- if the client is requesting this.
-
- This will be used for offline crawlers, metadata indexers and
- XML-capable browsers.
- -->
-
- <!-- NOTE (SM)
- The semantic-view element might become too specific if the new
- CC/PP (http://www.w3.org/TR/CCPP-ra/) user-agent capabilities
- architecture proposal is implemented. If this happens, the need for
- multiple pipeline exit points depending on the requestor
capabilities
- will emerge. But this is clearly _way_ too early to expect,
anyway...
-
- -->
-
- <choose type="view">
- <when test="isSemantic()">
- <serialize type="xml"/>
- </when>
- <default>
- <choose type="browser">
- <when test="accepts('text/vnd.wap.wml')">
- <filter type="xslt" src:local="./stylesheet/rdf2wml.xsl"/>
- <serialize type="xml"/>
- </when>
- <default>
- <filter type="xslt" src:local="./stylesheet/rdf2html.xsl"/>
- <serialize type="html"/>
- </default>
- </choose>
- </default>
- </choose>
- </when>
-
- <when test="regexp('/\([0-9]\{4\}\)/\([0-9]\{2\}\)/\([0-9]\{2\}\)/')">
- <!--
- Here we implement the ability to indicate semantic information
- on the processed URI. This is mostly used to avoid to encode
- URI specific information in the XSP since the sitemap maintainer
- is the only one responsible to manage the URI space. This removes
- a URI contract between the XSP writer and the URI space manager,
- moving it to parameter names which normally change less
frequently.
- -->
- <set-parameter name="year" value="{1}"/>
- <set-parameter name="month" value="{2}"/>
- <set-parameter name="day" value="{3}"/>
-
- <generator name="serverpages" src="/dailynews.xsp"/>
- <filter type="xslt" src:local="./stylesheet/{1}/news.xsl"/>
- <serializer type="html"/>
- </when>
-
- <default>
- <generate type="parser" src:local="{1}.xml"/>
- <choose type="load">
- <when test="greaterThen('2.5')">
- <filter type="xslt" src:local="./stylesheet/low-graphics.xsl"/>
- </when>
- <default>
- <choose type="browser">
- <when test="is('Mozilla5')">
- <filter type="xslt" src:local="./stylesheet/xul-enabled.xsl"/>
- </when>
- <default>
- <filter type="xslt"
src:local="./stylesheet/general-browser.xsl"/>
- </default>
- </choose>
- </default>
- </choose>
- <serializer type="html"/>
- </default>
-
- </choose>
+ <!-- NOTE (SM)
+
+ The semantic-view element might become too specific if the new
+ CC/PP (http://www.w3.org/TR/CCPP-ra/) user-agent capabilities
+ architecture proposal is implemented. If this happens, the need for
+ multiple pipeline exit points depending on the requestor capabilities
+ will emerge. But this is clearly _way_ too early to expect, anyway...
+
+ -->
- </pipeline>
+ <map:view type="semantic">
+ <map:generate src="./complex-semantics/{1}"/>
+ <map:filter src="./stylesheet/rdf-izer.xsl"/>
+ <map:filter src="./stylesheet/xlink-izer.xsl"/>
+ </map:view>
+
+
+ <map:choose>
+ <map:when test="accepts('text/vnd.wap.wml')">
+ <map:filter src="./stylesheet/rdf2wml.xsl"/>
+ <map:serialize type="wap"/>
+ </map:when>
+ <map:otherwise>
+ <map:filter src="./stylesheet/rdf2html.xsl"/>
+ <map:serialize/>
+ </map:otherwise>
+ </map:choose>
+ </map:match>
+
+ <map:match type="uri-regexp"
pattern="/\([0-9]\{4\}\)/\([0-9]\{2\}\)/\([0-9]\{2\}\)/">
+ <!--
+ Here we implement the ability to indicate semantic information
+ on the processed URI. This is mostly used to avoid to encode
+ URI specific information in the XSP since the sitemap maintainer
+ is the only one responsible to manage the URI space. This removes
+ a URI contract between the XSP writer and the URI space manager,
+ moving it to parameter names which normally change less frequently.
+ -->
+ <map:param name="year" value="{1}"/>
+ <map:param name="month" value="{2}"/>
+ <map:param name="day" value="{3}"/>
+
+ <map:generator name="serverpages" src="./dailynews.xsp"/>
+ <map:filter src="./stylesheet/{1}/news.xsl"/>
+ <map:serializer/>
+ </map:match>
+
+ <map:match pattern="*">
+ <map:generate src:local="{1}.xml"/>
+ <map:choose type="load">
+ <map:when test="greaterThen('2.5')">
+ <map:filter src"./stylesheet/low-graphics.xsl"/>
+ </map:when>
+ <map:otherwise>
+ <choose>
+ <map:when test="is('Mozilla5')">
+ <map:filter src="./stylesheet/xul-enabled.xsl"/>
+ </map:when>
+ <map:otherwise>
+ <map:filter src="./stylesheet/general-browser.xsl"/>
+ </map:otherwise>
+ </map:choose>
+ </map:otherwise>
+ </map:choose>
+ <map:serializer/>
+ </map:match>
+
+</map:sitemap>
-</sitemap>
+<<<<<<< sitemap-working-draft.xmap
+<!-- end of file -->
+=======
<!-- end of file -->
+>>>>>>> 1.1.2.2