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

Per Norrman per.norrman at austers.se
Wed Dec 29 16:08:16 PST 2004


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.

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.

Let's not continue this off-topic thread ...

of
> 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@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