XSLT document() problems

Discussion in 'ASP .Net Web Services' started by Asbjørn Ulsberg, Sep 24, 2003.

  1. 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.

    --
    Asbjørn Ulsberg -=|=- X-No-Archive: No
    "He's a loathsome offensive brute, yet I can't look away"
    Asbjørn Ulsberg, Sep 24, 2003
    #1
    1. Advertising

  2. "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();

    --
    Asbjørn Ulsberg -=|=- X-No-Archive: No
    "He's a loathsome offensive brute, yet I can't look away"
    Asbjørn Ulsberg, Sep 24, 2003
    #2
    1. Advertising

  3. Asbjørn Ulsberg wrote:

    > 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.

    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.
    --
    Oleg Tkachenko
    http://www.tkachenko.com/blog
    Multiconn Technologies, Israel
    Oleg Tkachenko, Sep 24, 2003
    #3
  4. Asbjørn Ulsberg wrote:

    > 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.
    --
    Oleg Tkachenko
    http://www.tkachenko.com/blog
    Multiconn Technologies, Israel
    Oleg Tkachenko, Sep 24, 2003
    #4
  5. "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.

    --
    Asbjørn Ulsberg -=|=- X-No-Archive: No
    "He's a loathsome offensive brute, yet I can't look away"
    Asbjørn Ulsberg, Sep 24, 2003
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?ISO-8859-1?Q?Asbj=F8rn?= Ulsberg

    XSLT document() problems

    =?ISO-8859-1?Q?Asbj=F8rn?= Ulsberg, Sep 24, 2003, in forum: ASP .Net
    Replies:
    4
    Views:
    414
    =?ISO-8859-1?Q?Asbj=F8rn?= Ulsberg
    Sep 24, 2003
  2. Stylus Studio
    Replies:
    0
    Views:
    621
    Stylus Studio
    Aug 3, 2004
  3. Benjamin Hillsley
    Replies:
    3
    Views:
    1,651
    Dimitre Novatchev
    Sep 25, 2003
  4. ted
    Replies:
    1
    Views:
    607
    Laurens
    Jan 26, 2004
  5. Replies:
    4
    Views:
    648
Loading...

Share This Page