Hi Ard,

I did, in fact, get it to work with some tweaking of the xsl. The
snippets follow.

What I would like to do now is strip the ".xml" file extension from the
resulting href in the html. Suggestions?

Joe

P.S. Here is what works.

>From this sitemap matcher...

<map:match pattern="articles/">
        <map:generate type="xpathdirectory" src="articles">
                <map:parameter name="xpath" value="/topic/title"/>
                <map:parameter name="xmlFiles" value="\.x.*$"/>
        </map:generate>
        <map:transform src="mydir2html.xsl"/>
        <map:serialize type="html"/>
</map:match>

...we get the title of each article for use as text in the resulting
html <a> element.

The following xsl...

    <xsl:template match="/dir:directory">
        <xsl:apply-templates select="dir:directory"/>
     </xsl:template>

    <xsl:template match="dir:directory">
        <xsl:apply-templates/>
    </xsl:template>
    
    <xsl:template match="dir:file">
        <xsl:element name="a">
            <xsl:attribute name="href">
                <xsl:value-of select="@name"/>
            </xsl:attribute>
            <xsl:apply-templates select="dir:xpath"/>
        </xsl:element>
    </xsl:template>
    
<xsl:template match="dir:xpath">
    <xsl:value-of select="title"/>
</xsl:template>

...uses the name attribute of each file in the XPathGenerator result as
the href of the <a> elements in the resulting html...

<html>
        <head>
        <title/>
        </head>

        <body>
        <table id="body">
        <tr>
        <td id="articles">
                <h4 class="menuheader">Articles</h4>
                <a href="article1.xml">Article the first</a>
                <a href="article2.xml">Article the second</a>
        </td>
        </tr>
        </table>
        </body>
</html>

...which is all ready for tweaking and CSS-ifying and whatever you want
to do to it.

On Mon, 2006-11-06 at 21:28 +0100, Ard Schrijvers wrote:
> Hello,
> 
> did you manage to get it to work? Think you have some problems with xml/xsl 
> transformations. Also take into account the namespaces. If you are still 
> having problems, please let us know, or subscribe to some xsl mailinglist, 
> like http://www.mulberrytech.com/xsl/xsl-list/.
> 
> Your problem is only xsl related, not browser. 
> 
> Regards
> 
> 
> > 
> > I would like to be able to drop valid xml files into a directory and
> > have them appear automagically in a menu, with the ability to 
> > transform
> > the title of the article in the file into the text of a link 
> > if I want.
> > 
> > I get the XPathDirectory generator to work with the following pipeline
> > matcher.
> > 
> > <map:match pattern="articles/*">
> >     <map:generate type="xpathdirectory" src="articles/{1}">
> >             <map:parameter name="xpath" value="title"/>
> >             <map:parameter name="xmlFiles" value="\.x.*$"/>
> >     </map:generate>
> >     <map:serialize type="xml"/>
> > </map:match>
> > 
> > The above matcher produces the following output.
> > 
> > <?xml version="1.0" encoding="ISO-8859-1"?>
> > <dir:directory xmlns:dir="http://apache.org/cocoon/directory/2.0";
> > name="articles" lastModified="1162301516000" date="31/10/06 07:31"
> > size="4096" sort="name" reverse="false" requested="true">
> >     <dir:file name="article1.xml" lastModified="1162312230000"
> > date="31/10/06 10:30" size="136">
> >             <dir:xpath query="title">
> >                     <title>Article title</title>
> >             </dir:xpath>
> >     </dir:file>
> > </dir:directory>
> > 
> > So far, so good. 
> > 
> > However, I would like to transform the XML so I can do other 
> > things with
> > it, such as a quick and dirty dynamic HTML menu or aggregate into
> > another web page as XML and subsequently transform the title elements
> > into links. I have attempted the following.
> > 
> > <xsl:template match="/">
> >     <xsl:apply-templates/>
> > </xsl:template>    
> >     
> >     <xsl:template match="article">
> >         <xsl:value-of select="title"/>
> >     </xsl:template>
> > 
> > When I add this XSL to the matcher, still serializing as XML 
> > I get this
> > result (when viewing the source).
> > 
> > <?xml version="1.0" encoding="ISO-8859-1"?>Article title
> > 
> > Which looks OK, but Firefox complains with the following error.
> > 
> > XML Parsing Error: syntax error
> > Location: http://localhost:8080/sandbox/articles/
> > Line Number 1, Column 44:<?xml version="1.0"
> > encoding="ISO-8859-1"?>Article title
> >                     -------------------------------------------^
> > Why is it encoded as ISO-8859-1? Everything in my sitemap says UTF-8.
> > 
> > This happens regardless of the charset I specify in Firefox. 
> > Amaya also
> > complains. 
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > 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