[jdom-interest] How to specify a basedir from the Transformer

patrick at openbase.com patrick at openbase.com
Thu Dec 30 01:50:57 PST 2004


Ken, Per

To be fair with the 2 of you :) I would be interested to know what  
system property needs to be added to specify the base dir to use for  
the Transformer to resolve the external file. What reasons should I  
pursue to know whether I should create a custom URIResolver vs setting  
up a system property?

Thanks



On 30 déc. 04, at 01:28, Ken Roberts wrote:

>  On Wed, 2004-12-29 at 18:08, Per Norrman wrote:
> Ken Roberts wrote:
> > On Wed, 2004-12-29 at 17:27, Per Norrman wrote:
> >
> >>/Ken Roberts wrote:
> >>> Passing in a system property to a JVM is done by specifying
> >>> -Dvariable=value, no spaces on the command line.
> >>>
> >>> Doing this inside JBoss means editing your run.bat file or your  
> run.sh
> >>> file, or (if redhat) the jboss_init_redhat.sh file.
> >>>
> >><irony>
> >>   Thank you very much for that timely and accurate piece of  
> information.
> >></irony>
> >>
> >>Serioulsy, next time, please read the entire thread before jumping  
> in ...
> >>
> >>/pmn/
> >>
> >
> > Per,
> >
> > Sorry if my solution seems old-school, but I had read the entire  
> thread.
> >
> > You answered the direct question of telling that the underlying
> > transformer has no such setting.  I tried to answer the next  
> question by
> > indirection.
>
> Aha, so you *anticipated* that the next question would be "Now that I  
> have the
> URIResolver, and knowing that this specific URIResolver uses a system  
> property
> to resolve relative urls, what can I possibly to do get that darn  
> system
> property set?", and answered that question before it was posed.
>
> If that's the case, your'e too quick for the rest of us.
>
>  No, I went down the other path from the one you suggested, which is  
> to set a system property based on an environment variable.  I did it  
> to offer a different solution to the same problem, since a URIResolver  
> didn't exactly fit the needs I had when I implemented my solution.
>
>
> There are all sorts of ways to define a base directory,
> > and the one I have used in the past is what I described because it  
> fit
> > more easily with our needs.  Your solution would take 10 minutes
>
> Actually, I said 10 *lines* of code.
>
>  As opposed to:
>
>  File myBaseDir = new File(System.getProperty("mybasedir"));
>
>
> Let's not continue this off-topic thread ...
>
>  Sure.  We can stop as soon as you stop flaming me.  I have in no way  
> earned this treatment, and as a matter of fact I have a few months to  
> spend on this if you like.  Sarcasm and bitterness has no place on a  
> forum such as this.  We're not in a contest to see who's the brightest  
> programmer, we're offering solutions to problems that people might  
> have.
>
>  Whether my solution was in style or not, it did satisfy a certain  
> category of business needs.  Generally it's considered a good idea to  
> look at multiple solutions before making a design decision, and you  
> offered one solution.  I offered another.
>
>
> > code, you said, and mine took maybe 5.  Which is correct depends a  
> lot
> > on your application needs.
> >
> > The interesting bit is that your solution and mine would both be  
> placed
> > in just about the same place in whatever code one would write.   
> Since it
> > can't be done (by your statement) internally to the XSL parser, it  
> would
> > have to be done in the wrapping code, no matter what the solution.
> >
> > Passing an environment variable is quaint and maybe not very elegant,
> > but it does work.  I shared it because the original poster asked
> > specifically about passing system properties.  Since the JVM used to
> > pass the environment of the operating system in but no longer does, I
> > thought my contribution was pertinent.
> >
> >>/> On Wed, 2004-12-29 at 16:38, Per Norrman wrote:
> >>>
> >>>>/Patrick JUSSEAU wrote:
> >>>>> Hi,
> >>>>>
> >>>>> So there is no way to pass in a system property to set this up?
> >>>>>
> >>>>Not that I'm aware of, no.
> >>>>
> >>>>> I guess the other solution would be to put all the files I need  
> in the
> >>>>> same directory but I would rather have the option to set the  
> base dir
> >>>>> of the external file that is referenced from the document()  
> method.
> >>>>
> >>>>But that is exactly what you would/could do with an URIResolver.  
> It is less
> >>>>that 10 lines of code to have a URIResolver resolve a relative url  
> using a
> >>>>system property as the base uri.
> >>>>
> >>>>/pmn
> >>>>
> >>>>
> >>>>>
> >>>>> Patrick
> >>>>>
> >>>>> On 29 Dec 2004, at 19:51, Per Norrman wrote:
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> I believe you can use the Transformer#setURIResolver method.
> >>>>>>
> >>>>>> /pmn
> >>>>>>
> >>>>>>
> >>>>>> patrick at openbase.com wrote:
> >>>>>>
> >>>>>>> Hi,
> >>>>>>> I am using JDOM to perform an XSL transformation. The problem  
> I have
> >>>>>>> is that my XSL Document refers to an external file using the
> >>>>>>> document(URL) method. I don't want to use an absolute URL.  
> What I
> >>>>>>> would like to do is tell JDOM  (the Transformer) what the  
> basedir is
> >>>>>>> (/Users/aUser) so that in my XSL file I could use:
> >>>>>>> ...
> >>>>>>> <xsl:variable name="lookupParam"  
> select="document('aFile.xml')"/>
> >>>>>>> ...
> >>>>>>> and aFile.xml would abvioulsy be in /Users/aUser
> >>>>>>> Here is the code I am using
> >>>>>>> Document p_sourceDocument = ....
> >>>>>>> Document p_xslDocument = ....
> >>>>>>> // Create a JDOMSource from the source JDOM Document
> >>>>>>>         JDOMSource source = new JDOMSource(p_sourceDocument);
> >>>>>>>         // Create a JDOMSource from the source XSL Document
> >>>>>>>         JDOMSource xslSource = new JDOMSource(p_xslDocument);
> >>>>>>>         // Get a XSLT Transformer
> >>>>>>>         Transformer transformer =
> >>>>>>> getTransformerFactory().newTransformer(xslSource);
> >>>>>>>         // Create a JDOMResult
> >>>>>>>         JDOMResult result = new JDOMResult();
> >>>>>>>         // Populate the Result
> >>>>>>>         transformer.transform(source, result);
> >>>>>>> I guess there must be some way to tell the underlying  
> Transformer
> >>>>>>> what the basedir is?
> >>>>>>> Thanks,
> >>>>>>> Patrick
> >>>>>>> _______________________________________________
> >>>>>>> To control your jdom-interest membership:
> >>>>>>> //_//_http://www.jdom.org/mailman/options/jdom-interest/__  
> youraddr at yourhost.com
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> To control your jdom-interest membership:
> >>>>>>  
> __http://www.jdom.org/mailman/options/jdom-interest/ 
> youraddr at yourhost.com__
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>_______________________________________________
> >>>>To control your jdom-interest membership:
> >>>>__http://www.jdom.org/mailman/options/jdom-interest/ 
> youraddr at yourhost.com__
> >>>>/
> >>>>
> >>/
> >>
>
> _______________________________________________
> To control your jdom-interest membership:
> http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com



More information about the jdom-interest mailing list