[jdom-interest] Name spaces and XSLT

Laurent Bihanic laurent.bihanic at atosorigin.com
Tue Jun 18 03:18:49 PDT 2002


Hi,

I don't think this has anything to do with JDOM.  The problem is probably that 
the abc and pqr namespaces are not defined IN the stylesheet itself.
Try defining those :
                   + "<xsl:stylesheet version=\"2.0\"\n"
                   + "  xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n"
 >>>               + "  xmlns:abc=\"urn:abc\" xmlns:pqr=\"urn:pqr\"\n"
                   + "  xmlns=\"http://www.w3.org/1999/xhtml\">\n"

Actually prefixes do not have to match, only the actuel namespace URIs need to 
match. So you could define the prefix of namespace "urn:abc" as "xyz" in the 
stylesheet and it would still match your "abc:abc" element from your input 
document.

Laurent

Hans Verschoor wrote:
> Hi, I just started using the JDOM and I must say, it's really very much
> easier and more versatile than the DOM.
> 
> I am a relatively newbie in the XML area and I encountered the following
> problem of which I don't know if it may be some silly thing I did:
> I build a document from scratch and add two elements having their own
> namespace. When I pass this document to an XSLT transformer (Xalan in my
> case) I get an exception indicating that the namespace cannot be resolved.
> My questions are: Did I do something wrong in my coding (probably),  is
> something going wrong in the implicit conversion from JDOM to DOM or is
> there something wrong with the XSL source ?
> I added the source of my test program, although it's pretty long. I also
> added two scripts to test with. If you give "true" as the argument the test
> crashes, else the test runs without namespaces and should work fine.
> I test with JAVA SDK 1.4
> 
> Thanx for any suggestions,
> Hans
> 
> Widows:
> 
> @if "%CLASSPATH%"=="" goto noclspath
> @set CLASSPATH=C:\jdom-b8\build\jdom.jar;%CLASSPATH%
> @goto testit
> :noclspath
> @set CLASSPATH=C:\jdom-b8\build\jdom.jar
> :testit
> java Test %1
> @pause
> 
> Linux:
> 
> #!/bin/sh
> JAVA_HOME=/usr/local/j2sdk1.4.0
> export JAVA_HOME
> JVS_SE_RUNDIR=$JAVA_HOME/bin
> export JVS_SE_RUNDIR
> SVCLASSPATH=$CLASSPATH
> CLASSPATH=/usr/local/jdom/jdom.jar
> if [ -n $SVCLASSPATH ]; then
>   CLASSPATH=$SVCLASSPATH:$CLASSPATH
> fi
> export CLASSPATH
> echo "Test JDOM functionality"
> ${JVS_SE_RUNDIR)/java Test ${1}
> 
> The Java source.
> 
> import org.jdom.*;
> import org.jdom.input.*;
> import org.jdom.output.*;
> import org.jdom.adapters.*;
> import org.jdom.transform.*;
> 
> import javax.xml.transform.*;
> import javax.xml.transform.dom.*;
> import javax.xml.transform.stream.*;
> 
> import java.io.*;
> 
> // -------------------------------------------------------------------------
> --
> /**
>  * The testing class.
>  * @version 1.0
>  * @author Hans Verschoor
>  */
> public abstract class Test {
> 
> 
> 
> // -------------------------------------------------------------------------
>   private Test () {
>   }
> 
> 
> 
> // -------------------------------------------------------------------------
>   /**
>    * Starting the server.
>    */
>   public static void main ( String[] args ) {
> 
>     int exitCode = 0;
> 
>     try {
> 
>       boolean useNameSpaces = false;
>       if ( args.length > 0 ) {
>         if ( args[0].length() > 0 ) {
>           switch ( args[0].charAt(0) ) {
>             case 't':
>             case 'T':
>             case '1':
>             case 'Y':
>             case 'y':
>               useNameSpaces = true;
>               break;
>             default:
>               useNameSpaces = false;
>               break;
>           }
>         }
>       }
> 
>       //
> DOCUMENT -------------------------------------------------------------
>       //
>       org.jdom.adapters.JAXPDOMAdapter  jaxpAdapter =
>                                        new org.jdom.adapters.JAXPDOMAdapter
> ();
>       org.w3c.dom.Document      domDoc      = jaxpAdapter.createDocument();
>       org.jdom.input.DOMBuilder jdomBuilder = new org.jdom.input.DOMBuilder
> ();
>       org.jdom.Document         jdomDoc     = jdomBuilder.build ( domDoc );
> 
>       //
> DOCTYPE --------------------------------------------------------------
>       //
>       org.jdom.DocType jdomDocType  = new org.jdom.DocType ( "tester" );
>       jdomDoc.setDocType ( jdomDocType );
> 
>       //
> ROOT -----------------------------------------------------------------
>       //
>       org.jdom.Element jdomRootElem = new org.jdom.Element ( "tester" );
>       jdomDoc.setRootElement ( jdomRootElem );
> 
>       //
> ABC ------------------------------------------------------------------
>       //
>       org.jdom.Element jdomAbcElem = new org.jdom.Element ( "abc" );
>       jdomRootElem.addContent ( jdomAbcElem );
> 
>       org.jdom.Element jdomAbcHolder = null;
>       if ( useNameSpaces == true ) {
>         org.jdom.Namespace jdomAbcNameSpace =
> org.jdom.Namespace.getNamespace
>                                                   ( "abc" ,"urn:abc" );
>         jdomAbcElem.setNamespace ( jdomAbcNameSpace );
> 
>         jdomAbcHolder = new org.jdom.Element ( "valueholder"
>                                                ,jdomAbcNameSpace );
>       } else {
>         jdomAbcHolder = new org.jdom.Element ( "abc-valueholder" );
>       }
> 
>       jdomAbcElem.addContent   ( jdomAbcHolder );
>       jdomAbcHolder.addContent ( "The ABC text value" );
> 
>       //
> PQR ------------------------------------------------------------------
>       //
>       org.jdom.Element          jdomPqrElem = new org.jdom.Element (
> "pqr" );
>       jdomRootElem.addContent ( jdomPqrElem );
> 
>       org.jdom.Element jdomPqrHolder = null;
>       if ( useNameSpaces == true ) {
>         org.jdom.Namespace jdomPqrNameSpace =
> org.jdom.Namespace.getNamespace
>                                                   ( "pqr" ,"urn:pqr" );
>         jdomPqrElem.setNamespace ( jdomPqrNameSpace );
> 
>         jdomPqrHolder = new org.jdom.Element ( "valueholder"
>                                                ,jdomPqrNameSpace );
>       } else {
>         jdomPqrHolder = new org.jdom.Element ( "pqr-valueholder" );
>       }
> 
>       jdomPqrElem.addContent   ( jdomPqrHolder );
>       jdomPqrHolder.addContent ( "The PQR text value" );
> 
> 
>       // OUTPUT JDOM
> IMAGE ----------------------------------------------------
>       //
>       org.jdom.output.XMLOutputter jdomXmlOutput =
>                              new org.jdom.output.XMLOutputter ( "  "
> ,true );
>       System.out.println   ( "===========> ORG.JDOM IMAGE" );
>       jdomXmlOutput.output ( jdomDoc ,System.out );
>       System.out.println   ( "<=========== ORG.JDOM IMAGE" );
>       System.out.println   ();
> 
>       // CONVERT TO
> HTML ------------------------------------------------------
> 
>       String xsltImage = null;
> 
>       if ( useNameSpaces == true ) {
> 
>         xsltImage = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"
>                   + "<xsl:stylesheet version=\"2.0\"\n"
>                   + "  xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n"
>                   + "  xmlns=\"http://www.w3.org/1999/xhtml\">\n"
>                   + "<xsl:output method=\"html\"/>\n"
> 
>                   + "<xsl:template match=\"tester\">\n"
>                   + "<html>\n"
>                   + "<head>\n"
>                   + "<title>JDOM tester</title>\n"
>                   + "</head>\n"
>                   + "<body>\n"
>                   + "<xsl:apply-templates select=\"abc:abc\"/>\n"
>                   + "<xsl:apply-templates select=\"pqr:pqr\"/>\n"
>                   + "</body>\n"
>                   + "</html>\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"abc:abc\">\n"
>                   + "<br/>start ABC GROUP\n"
>                   + "<xsl:apply-templates select=\"abc:valueholder\"/>\n"
>                   + "<br/>end ABC GROUP\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"pqr:pqr\">\n"
>                   + "<br/>start PQR GROUP\n"
>                   + "<xsl:apply-templates select=\"pqr:valueholder\"/>\n"
>                   + "<br/>end PQR GROUP\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"abc:valueholder\">\n"
>                   + "<br/>ABC value = <b><xsl:value-of select=\".\"/></b>\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"pqr:valueholder\">\n"
>                   + "<br/>PQR value = <b><xsl:value-of select=\".\"/></b>\n"
>                   + "<xsl:value-of select=\".\"/>\n"
>                   + "</xsl:template>\n"
> 
>                   + "</xsl:stylesheet>\n";
>       } else {
> 
>         xsltImage = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"
>                   + "<xsl:stylesheet version=\"2.0\"\n"
>                   + "  xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n"
>                   + "  xmlns=\"http://www.w3.org/1999/xhtml\">\n"
>                   + "<xsl:output method=\"html\"/>\n"
> 
>                   + "<xsl:template match=\"tester\">\n"
>                   + "<html>\n"
>                   + "<head>\n"
>                   + "<title>JDOM namespace tester</title>\n"
>                   + "</head>\n"
>                   + "<body>\n"
>                   + "<xsl:apply-templates select=\"abc\"/>\n"
>                   + "<xsl:apply-templates select=\"pqr\"/>\n"
>                   + "</body>\n"
>                   + "</html>\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"abc\">\n"
>                   + "<br/>start ABC GROUP\n"
>                   + "<xsl:apply-templates select=\"abc-valueholder\"/>\n"
>                   + "<br/>end ABC GROUP\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"pqr\">\n"
>                   + "<br/>start PQR GROUP\n"
>                   + "<xsl:apply-templates select=\"pqr-valueholder\"/>\n"
>                   + "<br/>end PQR GROUP\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"abc-valueholder\">\n"
>                   + "<br/>ABC value = <b><xsl:value-of select=\".\"/></b>\n"
>                   + "</xsl:template>\n"
> 
>                   + "<xsl:template match=\"pqr-valueholder\">\n"
>                   + "<br/>PQR value = <b><xsl:value-of select=\".\"/></b>\n"
>                   + "</xsl:template>\n"
> 
>                   + "</xsl:stylesheet>\n";
>       }
> 
>       System.out.println ( "===========> XSLT IMAGE" );
>       System.out.print   ( xsltImage );
>       System.out.println ( "<=========== XSLT IMAGE" );
>       System.out.println ();
> 
>       javax.xml.transform.stream.StreamSource xsltSource =
>                      new javax.xml.transform.stream.StreamSource
>                                        ( new StringReader ( xsltImage ) );
> 
>       javax.xml.transform.TransformerFactory  xsltTransformerFactory =
>                      javax.xml.transform.TransformerFactory.newInstance();
> 
>       javax.xml.transform.Transformer         xsltTransformer =
>                      xsltTransformerFactory.newTransformer ( xsltSource );
> 
>       javax.xml.transform.stream.StreamResult htmlOutput =
>                       new javax.xml.transform.stream.StreamResult
>                                                            ( System.out );
> 
>       org.jdom.transform.JDOMSource jdomSource =
>                       new org.jdom.transform.JDOMSource ( jdomDoc );
> 
>       System.out.println   ( "===========> HTML IMAGE" );
>       xsltTransformer.transform ( jdomSource ,htmlOutput );
>       System.out.println   ( "<=========== HTML IMAGE" );
>       System.out.println   ();
> 
>     } catch ( Exception anyUncatchedException ) {
> 
>       System.out.println ( "> > > > > > > > > > Uncatched exception" );
>       anyUncatchedException.printStackTrace ( System.out );
>       System.out.println ( "< < < < < < < < < < Uncatched exception" );
> 
>       exitCode = 3;
>     }
> 
>     System.out.println (    "> > > > > > > > > > Exit code: "
>                           + Integer.toString ( exitCode ) );
> 
>     System.exit ( exitCode );
>   }
> 
> } // Test.java
> 
> 
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com
> 


-- 
                  wWw    Zzzzz
                 (- -)
-------------ooO-(_)-Ooo-----------------------------------------------
Laurent Bihanic           | Tel: +33 (0)1 55.91.21.93  (Direct line)
Atos Origin               |      +33 (0)1 55.91.20.00
Intégration - e-Business  | Fax: +33 (0)1 55.91.22.31
Les Miroirs - Bat. C      |
18, avenue d'Alsace       |
F-92926 La Defense Cedex  | e-Mail: laurent.bihanic at atosorigin.com
-----------------------------------------------------------------------

"Microsoft isn't the answer. Microsoft is the question and the answer
  is no."


DISCLAIMER:
The opinions expressed are entirely my own and may not necessarily be
those of my employer.  Also, I am not now nor have I ever been a
lawyer.  My opinions are provided as-is with absolutely no warrantee of
merchantability or fitness for any particular use.  Besides, you can't
prove I typed this.  No body saw me type this.  Who says I typed this?




More information about the jdom-interest mailing list