Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / Web Services / September 2003

Tip: Looking for answers? Try searching our database.

XSLT document() problems

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Asbjørn Ulsberg - 24 Sep 2003 11:51 GMT
Sorry for posting to a lot of groups, but I'm not sure what this
problem relates to, so I thought it was better to be safe than
sorry. Please feel free to set FUT to the proper group when
answering.

I'm having problems with the XSLT function 'document()' after
upgrading to ASP.NET 1.1. I've started using XmlUrlResolver in
the xslt.Transform() method, but it doesn't seem to help in all
cases.

What I use the 'document()' function for, is requesting a
WebService which returns a string. This is how I do it, which
worked in ASP.NET 1.0:

 <xsl:variable name="wsLenkeUrl"
   select="concat('/D3/WebSvc/Lenke.asmx/HentLenkeUri?
     artikkelid=', $artikkelId, '&amp;lenkeid=', $lenkeId)" />

 <xsl:variable name="url"
   select="document($wsLenkeUrl)/lnk:string" />

The '$url' variable should now contain a URL which is returned
from the webservice. The 'lnk' namespace is declared as the same
used in the return from the WebService. I've also tried using a
static and non-relative path for the '$wsLenkeUrl' (with
"http://...", but it doesn't help.

What's strange, is that if I do the 'document()' function on a
static XML document, it works. I can include (with <xsl:copy-
of>) static XML documents in the same XSLT stylesheet, in the
exact same transformation, but when I do 'document()' on
relative documents as a WebsSrvice, it doesn't work.

What I'm thinking is that doing requests to a WebService might
require some higher permissions than doing so to a static
document. Maybe a QueryString is only permitted when the
permission have been skewed up from the normal permissions, but
I haven't read about this anywhere, and I don't know how to do
it.

Could you please provide me with some information on how to do a
request to a WebService with the 'document()' function in XSLT,
when transformed in an ASP.NET 1.1 WebForm? Many thanks in
advance.

Signature

Asbjørn Ulsberg           -=|=-          X-No-Archive: No
"He's a loathsome offensive brute, yet I can't look away"

Oleg Tkachenko - 24 Sep 2003 13:14 GMT
> The '$url' variable should now contain a URL which is returned
> from the webservice. The 'lnk' namespace is declared as the same
[quoted text clipped - 7 lines]
> exact same transformation, but when I do 'document()' on
> relative documents as a WebsSrvice, it doesn't work.
Chances are it has something to do with a way you are loading XslTransform
object. E.g. if you are loading it from a string, then of course relative
URI's in document() cannot be resolved relatively to Base URI of the stylesheet.
Show us your code.
Signature

Oleg Tkachenko
http://www.tkachenko.com/blog
Multiconn Technologies, Israel

Asbjørn Ulsberg - 24 Sep 2003 13:00 GMT
"Oleg Tkachenko" skrev:

> Chances are it has something to do with a way you are loading
> XslTransform object. E.g. if you are loading it from a string,
> then of course relative URI's in document() cannot be resolved
> relatively to Base URI of the stylesheet.

If I load the XSLT document from a string that has an absolute
URL, shouldn't it work?

> Show us your code.

Ok, this is how I do it:

 StringWriter sw  = new StringWriter();
 XslTransform xsl = new XslTransform();

 string file = "http://" + HttpContext.Current.Request.Url.Host
   + HttpContext.Current.Request.ApplicationPath +
   "/ressurser/xslt/" + xslfile; // "xslfile" is e.g. "tr.xslt"

 // "file" will contain the absolute path to the XSLT
 // stylesheet document.

 xsl.Load(file);
 xsl.Transform(dok, null, sw, new XmlUrlResolver());

 return sw.ToSTring();

Signature

Asbjørn Ulsberg           -=|=-          X-No-Archive: No
"He's a loathsome offensive brute, yet I can't look away"

Oleg Tkachenko - 24 Sep 2003 14:22 GMT
> If I load the XSLT document from a string that has an absolute
> URL, shouldn't it work?
That means you are loading XSLT document from URL, not from string.
Should work.

Another idea - are you sure your web service supports HTTP GET requests? Try
to open the url in a browser to see what is returned.
Signature

Oleg Tkachenko
http://www.tkachenko.com/blog
Multiconn Technologies, Israel

Asbjørn Ulsberg - 24 Sep 2003 15:42 GMT
"Oleg Tkachenko" skrev:

>> If I load the XSLT document from a string that has an
>> absolute URL, shouldn't it work?
>
> That means you are loading XSLT document from URL, not from
> string. Should work.

Of course. I just thought «string url = "http://...";» at first,
but now that you explain it, I understand what you initially
meant. #:p

> Another idea - are you sure your web service supports HTTP
> GET requests?

Yup. I do a little <xsl:value-of select="$url" /> in the XSLT
document, and when I do a HTTP GET on that in a browser, it
returns the correct result.

Signature

Asbjørn Ulsberg           -=|=-          X-No-Archive: No
"He's a loathsome offensive brute, yet I can't look away"


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.