On Fri, 2006-02-10 at 14:53 +0100, Josias Thoeny wrote:
> On Fri, 2006-02-10 at 08:27 -0500, Doug Chestnut wrote:
> > Hi Josias,
> > 
> > Josias Thoeny wrote:
> > > On Thu, 2006-02-09 at 21:56 +0000, [EMAIL PROTECTED] wrote:
> > > 
> > >>Author: chestnut
> > >>Date: Thu Feb  9 13:56:04 2006
> > >>New Revision: 376448
> > >>
> > >>URL: http://svn.apache.org/viewcvs?rev=376448&view=rev
> > >>Log:
> > >>removal of fallback:// from external relaxng schemas, 
> > >>while still utilizing fallback functionality by specifying 
> > >>the publication the schema is being used in
> > > 
> > > 
> > > Hi Doug,
> > > 
> > > Thanks for fixing this.
> > > I just wanted to ask how this relates to the following pipeline in
> > > global-sitemap.xmap:
> > > 
> > > <!-- RNG fallback requests -->
> > > <map:match pattern="fallback/**.rng">
> > >   <map:generate src="fallback://{1}.rng"/>
> > >     <map:transform src="lenya/xslt/util/translate-rng-includes.xsl">
> > >        <map:parameter name="contextprefix"
> > > value="{request:contextPath}"/>
> > >     </map:transform>
> > >   <map:serialize type="xml"/>
> > > </map:match>
> > > 
> > > Is this pipeline now obsolete?
> > Yes, I think so, but I will do a search just to make sure it is still 
> > being used, then remove.
> > > It uses translate-rng-includes.xsl to replace the schema include. Is
> > > this xsl still necessary now?
> > Same here. I will also take a look at translate-rng-includes.xsl to be 
> > sure I have the logic correct in external-relax.xsl.  While at it I will 
> > rename to translate-rng-includes.xsl since it is more descriptive.
> > 
> > This fallback/**.rng match wasn't working properly since the pubid 
> > wasn't specified.  The core rng was always used (by bxe).  We could have 
> > fixed this by just changing the match pattern to {pubid}/fallback/**.rng 
> > but I figured that this was better handled by our new 
> > modules-resources.xmap.
> > 
> 
> A few more comments:
> I noticed that BXE is not saving properly. The cause seems to be the
> following include in xhtml.rng:
> 
> <include href="fallback://lenya/resources/schemas/lenya.rng"/>
> 
> It gets transformed to 
> 
> <include href="/default/modules//"/>
> 
> 
> The rng-translating xsl probably should rewrite this href also, but how
> to handle such fallback urls which don't belong to a module?
> If fallback should work properly, the pubid should be used also, right?
> 
> So how should the url look like?
> Maybe:
> /pubid/fallback/resources/schemas/lenya.rng

After a second thought, I'd prefer to use only _one_ way to transform
fallback:// URIs into http:// URIs.

Examples:

fallback://lenya/resources/schemas/lenya.rng
->
/context-prefix/pubid/fallback/lenya/resources/schemas/lenya.rng

fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
->
/context-prefix/pubid/fallback/lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng

fallback://resources/shared/javascript/foo.js
-> 
/context-prefix/pubid/fallback/resources/shared/javascript/foo.js


Or would the following solution be better: 
If a requested RNG (or XSL) file contains an include using the
fallback:// protocol, resolve the URI and replace it by the actual URL
before sending the file to the client, instead of letting the client
request /fallback uris?

Any opinions?

BTW, what is the "/lenya" for in fallback://lenya/something ?
Is it really necessary?

Josias

> WDOT?
> 
> And another thing: The context prefix should be prepended to the url, as
> it was done in translate-rng-includes.xsl.
> Otherwise it won't work in tomcat, when Lenya is deployed in /lenya.
> 
> Josias
> 
> > Thanks for keeping watch,
> > --Doug
> > > 
> > > Josias
> > > 
> > > 
> > > 
> > >>Added:
> > >>    lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl   
> > >> (with props)
> > >>Modified:
> > >>    
> > >> lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> > >>    lenya/trunk/src/webapp/lenya/module-resources.xmap
> > >>
> > >>Modified: 
> > >>lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> > >>URL: 
> > >>http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java?rev=376448&r1=376447&r2=376448&view=diff
> > >>==============================================================================
> > >>--- 
> > >>lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> > >> (original)
> > >>+++ 
> > >>lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
> > >> Thu Feb  9 13:56:04 2006
> > >>@@ -27,6 +27,7 @@
> > >> import org.apache.cocoon.components.modules.input.AbstractInputModule;
> > >> import org.apache.cocoon.environment.ObjectModelHelper;
> > >> import org.apache.cocoon.environment.Request;
> > >>+import org.apache.lenya.cms.publication.Publication;
> > >> import org.apache.lenya.cms.publication.Document;
> > >> import org.apache.lenya.cms.publication.DocumentIdentityMap;
> > >> import org.apache.lenya.cms.publication.ResourceType;
> > >>@@ -57,6 +58,7 @@
> > >>             Session session = RepositoryUtil.getSession(request, 
> > >> getLogger());
> > >> 
> > >>             ResourceType resourceType;
> > >>+            Publication pub = null;
> > >>             String attribute;
> > >> 
> > >>             String[] steps = name.split(":");
> > >>@@ -68,6 +70,7 @@
> > >>                 String webappUrl = ServletHelper.getWebappURI(request);
> > >>                 Document document = docFactory.getFromURL(webappUrl);
> > >>                 resourceType = document.getResourceType();
> > >>+                pub = document.getPublication();
> > >>             } else {
> > >>                 attribute = steps[1];
> > >>                 String resourceTypeName = steps[0];
> > >>@@ -89,8 +92,8 @@
> > >>                 value = resourceType.getSchema().getURI();
> > >>             } else if (attribute.equals(HTTP_SCHEMA_URI)) {
> > >>                 String uri = resourceType.getSchema().getURI();
> > >>-                String path = uri.substring("fallback://".length());
> > >>-                value = request.getContextPath() + "/fallback/" + path;
> > >>+                String path = uri.substring(uri.indexOf("/schemas"));
> > >>+                value = request.getContextPath() + "/" + pub.getId() + 
> > >>"/modules/" + resourceType.getName() + path;
> > >>             } else {
> > >>                 throw new ConfigurationException("Attribute [" + name + 
> > >> "] not supported!");
> > >>             }
> > >>
> > >>Modified: lenya/trunk/src/webapp/lenya/module-resources.xmap
> > >>URL: 
> > >>http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/module-resources.xmap?rev=376448&r1=376447&r2=376448&view=diff
> > >>==============================================================================
> > >>--- lenya/trunk/src/webapp/lenya/module-resources.xmap (original)
> > >>+++ lenya/trunk/src/webapp/lenya/module-resources.xmap Thu Feb  9 
> > >>13:56:04 2006
> > >>@@ -20,6 +20,13 @@
> > >> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
> > >> 
> > >>   <map:pipelines>
> > >>+    <map:pipeline internal-only="true">
> > >>+      <map:match pattern="*/**.*">
> > >>+        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> > >>+          <map:read 
> > >>src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" 
> > >>mime-type="application/xml"/>
> > >>+        </map:match> 
> > >>+      </map:match>
> > >>+    </map:pipeline>
> > >>     <map:pipeline>
> > >>       
> > >>       <!-- matches modules/*/**.css -->
> > >>@@ -49,9 +56,13 @@
> > >>         <map:match type="regexp" pattern="(.*\.)(xml)$"> 
> > >>           <map:read 
> > >> src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" 
> > >> mime-type="text/xml"/>
> > >>         </map:match>        
> > >>-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
> > >>-          <map:read 
> > >>src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" 
> > >>mime-type="application/xml"/>
> > >>-        </map:match> 
> > >>+        <map:match type="regexp" pattern="(.*\.)(rng)$">
> > >>+          <map:generate 
> > >>src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
> > >>+          <map:transform 
> > >>src="fallback://lenya/xslt/resources/external-relax.xsl">
> > >>+            <map:parameter name="publicationid" 
> > >>value="{page-envelope:publication-id}"/>
> > >>+          </map:transform>
> > >>+          <map:serialize type="xml"/>
> > >>+        </map:match>
> > >>         <map:match type="regexp" 
> > >> pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
> > >>           <map:read 
> > >> src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" 
> > >> mime-type="image/jpeg" />
> > >>         </map:match> 
> > >>
> > >>Added: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> > >>URL: 
> > >>http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl?rev=376448&view=auto
> > >>==============================================================================
> > >>--- lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl (added)
> > >>+++ lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl Thu 
> > >>Feb  9 13:56:04 2006
> > >>@@ -0,0 +1,40 @@
> > >>+<?xml version="1.0" encoding="UTF-8" ?>
> > >>+<!--
> > >>+  Copyright 1999-2004 The Apache Software Foundation
> > >>+
> > >>+  Licensed under the Apache License, Version 2.0 (the "License");
> > >>+  you may not use this file except in compliance with the License.
> > >>+  You may obtain a copy of the License at
> > >>+
> > >>+      http://www.apache.org/licenses/LICENSE-2.0
> > >>+
> > >>+  Unless required by applicable law or agreed to in writing, software
> > >>+  distributed under the License is distributed on an "AS IS" BASIS,
> > >>+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
> > >>implied.
> > >>+  See the License for the specific language governing permissions and
> > >>+  limitations under the License.
> > >>+-->
> > >>+
> > >>+<xsl:stylesheet version="1.0"
> > >>+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> > >>+    >
> > >>+
> > >>+  <xsl:param name="publicationid" />
> > >>+  
> > >>+
> > >>+  <xsl:template match="@href[starts-with(.,'fallback')]">
> > >>+    <xsl:variable name="nofallback" 
> > >>select="substring-after(.,'fallback://lenya/modules/')"/>
> > >>+    <xsl:variable name="restype" 
> > >>select="substring-before($nofallback,'/resources')"/>
> > >>+    <xsl:variable name="resource" 
> > >>select="substring-after($nofallback,'resources/')"/>
> > >>+    <xsl:attribute name="href">
> > >>+      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , 
> > >>$restype, '/', $resource)"/>
> > >>+    </xsl:attribute>
> > >>+  </xsl:template>
> > >>+  
> > >>+  <xsl:template match="@*|node()">
> > >>+    <xsl:copy>
> > >>+      <xsl:apply-templates select="@*|node()"/>
> > >>+    </xsl:copy>
> > >>+  </xsl:template>
> > >>+  
> > >>+</xsl:stylesheet> 
> > >>
> > >>Propchange: lenya/trunk/src/webapp/lenya/xslt/resources/external-relax.xsl
> > >>------------------------------------------------------------------------------
> > >>    svn:eol-style = native
> > >>
> > >>
> > >>
> > >>---------------------------------------------------------------------
> > >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> > >>For additional commands, e-mail: [EMAIL PROTECTED]
> > >>
> > >>
> > > 
> > > 
> > > 
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to