Avatar billede rasmuslh Nybegynder
07. april 2009 - 14:31 Der er 3 kommentarer og
1 løsning

Transformere XML med XSLT i AspX

hej

jeg har et problem som jeg håbe jeg kan få hjælpe med. jeg har fået til opgave at transformere et XML-document der leveres via en webservice op med en XSL så det ser pænt i en browser. Jeg har fået transformationen på plads så den virker i en lokal parser. Nu skal jeg "blot" lave transformationen så den fungere i en aspx side.

Jeg har lavet følgende:

Først laver jeg to objekter der indeholder de to xml dokumenter XML'en og XSLT. Dernæst vil jeg gerne transformere det og så sende resultatet ud til den side aktuelle.

Mit problem er at jeg ikke kan få det sidste opgave løst. Det vil sige at få gemt det transformere resultat i et objekt og så sende det ud til siden.

Alle de eksempler der findes på nettet gemmer resultatet i en fil hvilket jeg ikke er interesseret i.

jeg vil gerne smide resultatet i et objekt fx. et XMLdocument final som så kan sendes i til siden.

/Rasmus

**************************


<%@ Page Debug="true" Language="C#" %>
<%@ Import Namespace="drillthrough" %>


<%
 
 

    string bilagskode = openDocument.page.Request["bilagskode"];

    if (bilagskode != null)
    {

        System.Xml.XmlDocument XML_Doc = new System.Xml.XmlDocument();
        XML_Doc.Load(openDocument.fetchImage(bilagskode));

        //string XML_Doc = openDocument.fetchImage(bilagskode);
       
        System.Xml.XmlDocument XSLT_Doc = new System.Xml.XmlDocument();
        XSLT_Doc.Load(Server.MapPath("\\drill\\stylesheets\\xml2html.xsl"));

        System.Xml.Xsl.XslCompiledTransform myXslTrans = new System.Xml.Xsl.XslCompiledTransform();

        //load the Xsl
        myXslTrans.Load(XSLT_Doc);


        System.Xml.XmlDocument final = new System.Xml.XmlDocument();
       
        // Create the writer.
        System.Xml.XmlWriter.XmlWriter writer = System.Xml.XmlWriter.XmlWriter.Create(final);
       
        myXslTrans.Transform(XML_Doc, writer);

        Response.ContentType = "text/html";
        final.Save(Response.Output);       
       
    }
    else
    {
  %>
        <div style="width:100%;text-align:center;padding-top:150px;">
            <table style="border: 1px solid gray;">
                <tr>
                    <td style="vertical-align:middle;padding-left: 10px; padding-top:5px; padding-bottom:2px;">
                        <img src="images/error.png" />
                    </td>
                    <td style="vertical-align:middle;font-size:large;padding-left:20px;padding-right:10px;color:gray;">
                        Faktura ikke fundet!
                    </td>
                </tr>
            <table>
        </div>
    <% 
    }
%>
Avatar billede rmjdk Nybegynder
07. april 2009 - 14:55 #1
Der findes en Xml kontrol der kan bruges til XSL transformation, f.eks. <asp:xml id="c_xml" TransformSource="sti-til-XSL" />. I codebehind, kan du så indsætte XML dokumentet i string format med c_xml.DocumentElement.
Avatar billede rasmuslh Nybegynder
07. april 2009 - 15:12 #2
Hej

Tak for svaret. problemet er lidt at det er en gammel ASP løsning der slet ikke bruger kontroller. Det hele er hardcoded og der findes et noget csproj jeg kan anvende. Så der findes ikke nogen codebehind fil.
Avatar billede arne_v Ekspert
08. april 2009 - 03:26 #3
Utestet:

XmlDocument doc = new XmlDocument();
doc.Load(xmlfnm);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(new XmlTextReader(new StreamReader(xslfnm)), null, null);
StringWriter sw = new StringWriter();
XmlTextWriter wrt = new XmlTextWriter(sw);
xslt.Transform(doc,  wrt);
Response.ContentType = "text/xml";
Response.Write(sw.ToString());

eller:

XmlDocument doc = new XmlDocument();
doc.Load(xmlfnm);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(new XmlTextReader(new StreamReader(xslfnm)), null, null);
XmlTextWriter wrt = new XmlTextWriter(Response.Output);
Response.ContentType = "text/xml";
xslt.Transform(doc,  wrt);
Avatar billede rasmuslh Nybegynder
08. april 2009 - 17:20 #4
Hej alle sammen

Jeg fik det til at virke ved bruge asp-controllen. Det blev lidt neoget indlejret snask, men det virker nu så jeg er glad.

Tak for input alle samen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester