You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Abid Ali Teepo <ab...@mogul.com> on 2001/02/08 11:47:04 UTC

Several logicsheet taglibs acessed from one page

Hi !

I am trying to acess more then one taglib from my XML-page, but i get an
error message doing so.
If the enclosed files isn't the proper way, can anyone advise me of the
correct way ?

By the way is it also possible to pipeline one xml-document through
several logisheets with processing 
done one the output from the previous logicsheet ?


------------------------------------------------------------------------
--
My xml page looks like this :
------------------------------------------------------------------------
--
<?xml version="1.0"?>

<?cocoon-process type="xsp"?>
<?xml-logicsheet href="count.xsl" type="text/xsl"?>
<?xml-logicsheet href="dbacess.xsl" type="text/xsl"?>

<page>
 <title>Tag-lib example</title>
 
 <p>This is a tag-lib example</p>

 <p>Denne siden er vist <count/> ganger.</p>
 
 <p>Dette er en lesing fra databasen : <db/></p>

</page>

------------------------------------------------------------------------
----
My count.xsl looks like this :
------------------------------------------------------------------------
----
<?xml version="1.0"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsp="http://www.apache.org/1999/XSP/Core">
  <xsl:template match="page">
    <xsl:processing-instruction
name="cocoon-process">type="xsp"</xsl:processing-instruction>
    <xsl:processing-instruction
name="cocoon-process">type="xslt"</xsl:processing-instruction>
    <xsl:processing-instruction
name="xml-stylesheet">href="page-html.xsl"
type="text/xsl"</xsl:processing-instruction>

    <xsp:page language="java"
xmlns:xsp="http://www.apache.org/1999/XSP/Core">

    <xsp:logic>
      static private int counter = 0;

      private synchronized int count() {
        return counter++;
      }
    </xsp:logic>

    <xsl:copy>
     <xsl:apply-templates/>
    </xsl:copy>

   </xsp:page>
  </xsl:template>

  <xsl:template match="title">
   <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="p">
   <xsl:copy>
    <xsl:apply-templates/>
   </xsl:copy>
  </xsl:template>

  <xsl:template match="count">
   <xsp:expr>count()</xsp:expr>
  </xsl:template>
</xsl:stylesheet>

------------------------------------------------------------------------
-----------------
And my dbacess looks like this :
------------------------------------------------------------------------
-----------------
<?xml version="1.0"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsp="http://www.apache.org/1999/XSP/Core">
  <xsl:template match="page">
    <xsl:processing-instruction
name="cocoon-process">type="xsp"</xsl:processing-instruction>
    <xsl:processing-instruction
name="cocoon-process">type="xslt"</xsl:processing-instruction>
    <xsl:processing-instruction
name="xml-stylesheet">href="page-html.xsl"
type="text/xsl"</xsl:processing-instruction>

    <xsp:page language="java"
xmlns:xsp="http://www.apache.org/1999/XSP/Core">

    <xsp:logic>
      private String ReadNamesFromDB() {
        return "Abid Ali Teepo;
      }
    </xsp:logic>

    <xsl:copy>
     <xsl:apply-templates/>
    </xsl:copy>

   </xsp:page>
  </xsl:template>

  <xsl:template match="title">
   <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="p">
   <xsl:copy>
    <xsl:apply-templates/>
   </xsl:copy>
  </xsl:template>

  <xsl:template match="db">
   <xsp:expr>ReadNamesFromDB()</xsp:expr>
  </xsl:template>
</xsl:stylesheet>

------------------------------------------------------------------------
-------------------------
ERROR MESSAGE I GET :
------------------------------------------------------------------------
-------------------------

Error found handling the request.
	org.apache.xalan.xslt.XSLProcessorException: Warning: can't
output text before document element!  Ignoring...
		at
org.apache.xalan.xslt.XSLTEngineImpl.error(XSLTEngineImpl.java:1710)
		at
org.apache.xalan.xslt.XSLTEngineImpl.error(XSLTEngineImpl.java:1674)
		at
org.apache.xalan.xslt.XSLTEngineImpl.process(XSLTEngineImpl.java:703)
		at
org.apache.cocoon.transformer.XalanTransformer.transform(XalanTransforme
r.java:107)
		at
org.apache.cocoon.processor.xsp.XSPLogicsheet.apply(XSPLogicsheet.java:1
02)
		at
org.apache.cocoon.processor.xsp.XSPProcessor.process(XSPProcessor.java:4
22)
		at org.apache.cocoon.Engine.handle(Engine.java:384)
		at org.apache.cocoon.Cocoon.service(Cocoon.java:183)
		at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
		at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.
java:208)
		at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServl
etContext.java:1127)
		at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.
java:1529)
		at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
		at
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
	---------
	org.xml.sax.SAXException: Warning: can't output text before
document element!  Ignoring...
		at
org.apache.xalan.xpath.xml.FormatterToDOM.append(FormatterToDOM.java:147
)
		at
org.apache.xalan.xpath.xml.FormatterToDOM.characters(FormatterToDOM.java
:331)
		at
org.apache.xalan.xslt.XSLTEngineImpl$ResultTreeHandler.characters(XSLTEn
gineImpl.java:4021)
		at
org.apache.xalan.xslt.XSLTEngineImpl.cloneToResultTree(XSLTEngineImpl.ja
va:2078)
		at
org.apache.xalan.xslt.ElemTemplateElement.transformChild(ElemTemplateEle
ment.java:1177)
		at
org.apache.xalan.xslt.ElemTemplateElement.processLocatedNode(ElemTemplat
eElement.java:1061)
		at
org.apache.xalan.xpath.SimpleNodeLocator.findChildren(SimpleNodeLocator.
java:773)
		at
org.apache.xalan.xpath.SimpleNodeLocator.step(SimpleNodeLocator.java:428
)
		at
org.apache.xalan.xpath.SimpleNodeLocator.locationPath(SimpleNodeLocator.
java:321)
		at
org.apache.xalan.xpath.XPath.locationPath(XPath.java:964)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:1385)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:1354)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:311)
		at
org.apache.xalan.xslt.ElemTemplateElement.transformSelectedChildren(Elem
TemplateElement.java:896)
		at
org.apache.xalan.xslt.ElemApplyTemplates.execute(ElemApplyTemplates.java
:176)
		at
org.apache.xalan.xslt.ElemTemplateElement.executeChildren(ElemTemplateEl
ement.java:661)
		at
org.apache.xalan.xslt.ElemTemplateElement.transformChild(ElemTemplateEle
ment.java:1199)
		at
org.apache.xalan.xslt.ElemTemplateElement.processLocatedNode(ElemTemplat
eElement.java:1061)
		at
org.apache.xalan.xpath.SimpleNodeLocator.findChildren(SimpleNodeLocator.
java:773)
		at
org.apache.xalan.xpath.SimpleNodeLocator.step(SimpleNodeLocator.java:428
)
		at
org.apache.xalan.xpath.SimpleNodeLocator.locationPath(SimpleNodeLocator.
java:321)
		at
org.apache.xalan.xpath.XPath.locationPath(XPath.java:964)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:1385)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:1354)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:311)
		at
org.apache.xalan.xslt.ElemTemplateElement.transformSelectedChildren(Elem
TemplateElement.java:896)
		at
org.apache.xalan.xslt.ElemApplyTemplates.execute(ElemApplyTemplates.java
:176)
		at
org.apache.xalan.xslt.ElemTemplateElement.executeChildren(ElemTemplateEl
ement.java:661)
		at
org.apache.xalan.xslt.ElemTemplateElement.transformChild(ElemTemplateEle
ment.java:1199)
		at
org.apache.xalan.xslt.ElemTemplateElement.processLocatedNode(ElemTemplat
eElement.java:1061)
		at
org.apache.xalan.xpath.SimpleNodeLocator.findChildren(SimpleNodeLocator.
java:773)
		at
org.apache.xalan.xpath.SimpleNodeLocator.step(SimpleNodeLocator.java:428
)
		at
org.apache.xalan.xpath.SimpleNodeLocator.locationPath(SimpleNodeLocator.
java:321)
		at
org.apache.xalan.xpath.XPath.locationPath(XPath.java:964)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:1385)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:1354)
		at org.apache.xalan.xpath.XPath.execute(XPath.java:311)
		at
org.apache.xalan.xslt.ElemTemplateElement.transformSelectedChildren(Elem
TemplateElement.java:896)
		at
org.apache.xalan.xslt.ElemApplyTemplates.execute(ElemApplyTemplates.java
:176)
		at
org.apache.xalan.xslt.ElemTemplateElement.executeChildren(ElemTemplateEl
ement.java:661)
		at
org.apache.xalan.xslt.ElemTemplate.execute(ElemTemplate.java:145)
		at
org.apache.xalan.xslt.StylesheetRoot.process(StylesheetRoot.java:444)
		at
org.apache.xalan.xslt.XSLTEngineImpl.process(XSLTEngineImpl.java:679)
		at
org.apache.cocoon.transformer.XalanTransformer.transform(XalanTransforme
r.java:107)
		at
org.apache.cocoon.processor.xsp.XSPLogicsheet.apply(XSPLogicsheet.java:1
02)
		at
org.apache.cocoon.processor.xsp.XSPProcessor.process(XSPProcessor.java:4
22)
		at org.apache.cocoon.Engine.handle(Engine.java:384)
		at org.apache.cocoon.Cocoon.service(Cocoon.java:183)
		at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
		at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.
java:208)
		at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServl
etContext.java:1127)
		at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.
java:1529)
		at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
		at
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)


Re: Several logicsheet taglibs acessed from one page

Posted by Donald Ball <ba...@webslingerZ.com>.
On Thu, 8 Feb 2001, Abid Ali Teepo wrote:

> I am trying to acess more then one taglib from my XML-page, but i get
> an error message doing so. If the enclosed files isn't the proper way,
> can anyone advise me of the correct way ?
>
> By the way is it also possible to pipeline one xml-document through
> several logisheets with processing done one the output from the
> previous logicsheet ?
>
> <?xml version="1.0"?>
>
> <?cocoon-process type="xsp"?>
> <?xml-logicsheet href="count.xsl" type="text/xsl"?>
> <?xml-logicsheet href="dbacess.xsl" type="text/xsl"?>
>
> <page>
>  <title>Tag-lib example</title>
>
>  <p>This is a tag-lib example</p>
>
>  <p>Denne siden er vist <count/> ganger.</p>
>
>  <p>Dette er en lesing fra databasen : <db/></p>
>
> </page>
>
> ------------------------------------------------------------------------
> ----
> My count.xsl looks like this :
> ------------------------------------------------------------------------
> ----
> <?xml version="1.0"?>
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xsp="http://www.apache.org/1999/XSP/Core">
>   <xsl:template match="page">
>     <xsl:processing-instruction
> name="cocoon-process">type="xsp"</xsl:processing-instruction>
>     <xsl:processing-instruction
> name="cocoon-process">type="xslt"</xsl:processing-instruction>
>     <xsl:processing-instruction
> name="xml-stylesheet">href="page-html.xsl"
> type="text/xsl"</xsl:processing-instruction>

. . .

> <?xml version="1.0"?>
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xsp="http://www.apache.org/1999/XSP/Core">
>   <xsl:template match="page">
>     <xsl:processing-instruction
> name="cocoon-process">type="xsp"</xsl:processing-instruction>
>     <xsl:processing-instruction
> name="cocoon-process">type="xslt"</xsl:processing-instruction>
>     <xsl:processing-instruction
> name="xml-stylesheet">href="page-html.xsl"
> type="text/xsl"</xsl:processing-instruction>

look at what you're going to end up with after the first xsp process pass:

<?cocoon-process type="xsp"?>
<?cocoon-process type="xslt"?>
<?cocoon-process type="xsp"?>
<?cocoon-process type="xslt"?>
<?xml-stylesheet href="page-html.xsl"?>
<?xml-stylesheet href="page-html.xsl"?>

that's not what you want to happen, is it? nuke the
xsl:processing-instructions from your logicsheets.

- donald