[jdom-interest] newbie: manipulating xsl file with jdom

Alan Eustace alan.eustace at bigfoot.com
Thu Apr 26 04:29:11 PDT 2001


Yes, Jason and yourself were correct: it was a namespace problem. Sorry to have missed that.

Thanks very much for the code- all working now :-)
Alan Eustace

Ian Lea wrote:

> I suspect that Jason is correct and you are not handling the
> namespaces correctly.  Enclosed below is some code which
> seems to work fine on your XML, locating the html and h1
> HTML elements. btw I think your h1 is in the wrong place.
>
> import java.io.FileInputStream;
> import java.util.Iterator;
> import java.util.List;
> import org.jdom.Document;
> import org.jdom.Element;
> import org.jdom.Namespace;
> import org.jdom.input.SAXBuilder;
> import org.jdom.output.XMLOutputter;
>
> public class x {
>
>     public static void main(String[] args) throws Exception {
>         FileInputStream fis = new FileInputStream(args[0]);
>         SAXBuilder builder = new SAXBuilder();
>         Document jdoc = builder.build(fis);
>         Element jroot = jdoc.getRootElement();
>         Namespace xslns = Namespace
>             .getNamespace("xsl",
>                           "http://www.w3.org/1999/XSL/Transform");
>         System.out.println(jroot+" "+xslns);
>         List l = jroot.getChildren("template", xslns);
>         Iterator i = l.iterator();
>         XMLOutputter xmlo = new XMLOutputter();
>         while (i.hasNext()) {
>             Element el = (Element) i.next();
>             System.out.println(el);
>             Element html = el.getChild("html");
>             if (html != null) {
>                 System.out.print("\n\nhtml=");
>                 xmlo.output(html, System.out);
>                 System.out.println();
>                 Element h1 = html.getChild("h1");
>                 if (h1 != null) {
>                     System.out.print("\n\nh1=");
>                     xmlo.output(h1, System.out);
>                     System.out.println();
>                 }
>             }
>         }
>     }
> }
>
> --
> Ian Lea.
> ian.lea at blackwell.co.uk
>
> Alan Eustace wrote:
> >
> > this is the element i'm trying to access, and the children i'd want to access are the
> > html presentation tags:
> >
> > <xsl:template match="bbs">
> >   <html>
> >    <head>
> >     <title>
> >      <xsl:value-of select="@title"/>
> >     </title>
> >    </head>
> >     <h1><b><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">Stylesheet style:
> > default
> >      </font></b></h1>
> >    <body bgcolor="#000000" text="#ffffff">
> >        <xsl:apply-templates select="message"/>
> >     <br/>
> >    </body>
> >   </html>
> >  </xsl:template>
> > when i try to iterate through the list of <xsl:template> elements to an individual
> > element i get a null.
> >
> > Jason Hunter wrote:
> >
> > > Is the child in a namespace?  Are you passing the proper namespace to
> > > the get method?
> > >
> > > -jh-
> > >
> > > Alan Eustace wrote:
> > > >
> > > > hope someone can help with this. i'm trying to build xsl dynamically in
> > > > a servlet, and have been using the root.getChildren() method to try to
> > > > access the elements I need. I can output a list of the elements, and
> > > > iterate through them, in this case returning a list of <xsl:template>
> > > > elements, but when i try to access an individual element by name to
> > > > alter it's child elements, i get a null.
> > > > hope this isn't too vague- i can supply code and xsl file if needs be.
> > > > thanks
> > > > alan eustace




More information about the jdom-interest mailing list