Avatar billede karsten_larsen Praktikant
05. februar 2005 - 09:16 Der er 14 kommentarer og
1 løsning

XML og VS - hvordan hentes bestemte data ud

Det er sikkert a piece of cake, men jeg har ikke fundet fidusen endnu!

Det er den jeg gerne vil finde!

Jeg er så langt i visual studio:
- oprettelse af demo.xsd fil med tilhørende elementer
- oprettelse af demo.xml fil med indtastning af data
- koble XML control og demo.xsd sammen på designfladen
- få vist samtlige data fra demo.xml i browser demo.aspx

Det er jo fint nok!

Men hvordan kan jeg arbejde med de enkelte data i demo.xml på design fladen, så jeg bestemmer hvad som skrives ud på demo.aspx.

Jeg bruger VB og skriver i VS2003 med codebehind.

Det er sikkert meget let at svar på, men for vil det være en meget stor hjælp.

???:-) karsten_larsen
Avatar billede snepnet Nybegynder
05. februar 2005 - 16:41 #1
Du kan lave en transformation med xsl(t) - du kan se en tutorial her :
http://www.w3schools.com/xsl/default.asp

Du kan angive din tranformation som en property på xml-kontrollen enten ved et transformationsobjekt med
.Transform = someTransformationObjekt;
eller ved direkte sti til en fil med
.TransformSource = somePathToSomeStyleSheet;

mvh
Avatar billede karsten_larsen Praktikant
05. februar 2005 - 22:16 #2
hmm - når jeg bruger xslt så får jeg følgende fejl."'xsl' er et ikke-erklæret navneområde".

Jeg gør følgende:
- oprettelse af demo.xsd fil med tilhørende elementer
- oprettelse af demo.xml fil med indtastning af data
- oprettelse af demo.xslt fil
- tager xml ind på designfladen og sætter transformsource i property til demo.xslt samt DocumentSource til demo.xml.

Hvad gør jeg forkert? Det burde da virke!

Her følger mine filer:

FILEN demo.xsd
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="demo" targetNamespace="http://tempuri.org/demo.xsd" elementFormDefault="qualified"
    xmlns="http://tempuri.org/demo.xsd" xmlns:mstns="http://tempuri.org/demo.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="Brugere">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="bruger_id" type="xs:long" />
                <xs:element name="bruger_fornavn" type="xs:string" />
                <xs:element name="bruger_efternavn" type="xs:string" />
            </xs:sequence>
        </xs:complexType>
        <xs:key name="BrugereKey1" msdata:PrimaryKey="true">
            <xs:selector xpath="." />
            <xs:field xpath="mstns:bruger_id" />
        </xs:key>
    </xs:element>
</xs:schema>


FILEN demo.xml
<?xml version="1.0" encoding="utf-8" ?>
<demo xmlns="http://tempuri.org/demo.xsd">
    <Brugere xmlns="http://tempuri.org/demo.xsd">
        <bruger_id>1</bruger_id>
        <bruger_fornavn>anita</bruger_fornavn>
        <bruger_efternavn>andersen</bruger_efternavn>
    </Brugere>
    <Brugere>
        <bruger_id>2</bruger_id>
        <bruger_fornavn>bent</bruger_fornavn>
        <bruger_efternavn>bulderby</bruger_efternavn>
    </Brugere>
    <Brugere>
        <bruger_id>3</bruger_id>
        <bruger_fornavn>cirkeline</bruger_fornavn>
        <bruger_efternavn>christensen</bruger_efternavn>
    </Brugere>
</demo>

FILEN demo.xslt
<?xml version="1.0" encoding="UTF-8" ?>
<stylesheet version="1.0" xmlns="http://tempuri.org/demo.xsd">
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th align="left">Title</th>
        <th align="left">Artist</th>
      </tr>
      <xsl:for-each select="demo/Brugere">
      <tr>
        <td><xsl:value-of select="bruger_fornavn"/></td>
        <td><xsl:value-of select="bruger_efternavn"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</stylesheet>

FILEN demo.aspx
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="demo.aspx.vb" Inherits="demo.demo1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>demo</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <asp:Xml id="Xml1" runat="server" DocumentSource="demo.xml" TransformSource="demo.xslt"></asp:Xml>
        </form>
    </body>
</HTML>

???:-) karsten_larsen
Avatar billede snepnet Nybegynder
05. februar 2005 - 22:24 #3
du skal nok ikke sætte html og body ind når du har det i forvejen på siden, men bortset fra det - hvornår får du bemeldte fejl ?
når du prøver at kalde siden eller ?
mvh
Avatar billede snepnet Nybegynder
05. februar 2005 - 22:33 #4
der er et eksempel på hvordan man angiver direkte i xml-en at der skal bruges en bestemt xls-fil.... det kan du jo lige prøve.
så skulle det gerne virke hvis du bare lægger xml og xsl fil på desktoppen (ell) - og bare åbner xml-filen i IE.
mvh
Avatar billede karsten_larsen Praktikant
05. februar 2005 - 22:47 #5
Jeg får fejlen, når jeg browser demo.aspx i Visual Studio. Prøver lige det andet som du skrev.

???:-) karsten_larsen
Avatar billede snepnet Nybegynder
05. februar 2005 - 22:50 #6
oki
Avatar billede karsten_larsen Praktikant
05. februar 2005 - 22:55 #7
Ved at indsætte <?xml-stylesheet type="text/xslt" href="demo.xslt"?>  i XML filen, får jeg vist indhold men ikke i tabel form.

Fejlen som jeg får via browser i VS er :

Serverfejl i programmet '/demo'.
--------------------------------------------------------------------------------

'xsl' er et ikke-erklæret navneområde. Linje 3, position 2.
Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Xml.XmlException: 'xsl' er et ikke-erklæret navneområde. Linje 3, position 2.

Kildefejl:

Der blev oprettet en ikke-afviklet undtagelse under kørsel af den aktuelle webanmodning. Du kan finde oplysninger om undtagelsens oprindelse og placering ved hjælp af nedenstående staksporing af undtagelser. 

Staksporing:


[XmlException: 'xsl' er et ikke-erklæret navneområde. Linje 3, position 2.]
  System.Xml.XmlNSElementTokenInfo.FixNames() +369
  System.Xml.XmlTextReader.ParseElement() +205
  System.Xml.XmlTextReader.Read() +94
  System.Xml.XmlValidatingReader.ReadNoCollectTextToken() +38
  System.Xml.XmlValidatingReader.Read() +14
  System.Xml.XPath.XPathDocument.ReadChildNodes(XPathContainer parent, String parentBaseUri, XmlReader reader, PositionInfo positionInfo) +835
  System.Xml.XPath.XPathDocument.ReadChildNodes(XPathContainer parent, String parentBaseUri, XmlReader reader, PositionInfo positionInfo) +303
  System.Xml.XPath.XPathDocument.Load(XmlReader reader) +146
  System.Xml.XPath.XPathDocument..ctor(XmlReader reader, XmlSpace space)
  System.Xml.Xsl.Compiler.LoadDocument(XmlTextReader reader)
  System.Xml.Xsl.XslTransform.Load(String url, XmlResolver resolver)
  System.Xml.Xsl.XslTransform.Load(String url)
  System.Web.UI.WebControls.Xml.LoadTransformFromSource() +221
  System.Web.UI.WebControls.Xml.Render(HtmlTextWriter output) +28
  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +241
  System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
  System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +44
  System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +263
  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +241
  System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
  System.Web.UI.Control.Render(HtmlTextWriter writer) +7
  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +241
  System.Web.UI.Page.ProcessRequestMain() +1897
Avatar billede karsten_larsen Praktikant
05. februar 2005 - 23:16 #8
Jeg kigger på det igen imorgen

??:-) karsten_larsen
Avatar billede snepnet Nybegynder
05. februar 2005 - 23:23 #9
oki ... har du for øvrigt prøvet xpath (kommer med de nye office-pakker) - den kan lave den slags ting og sager (altså hvor du arbejder med det i en designer).

ellers prøv denne begyndelse i din xsl-fil :
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

mvh
Avatar billede karsten_larsen Praktikant
22. februar 2005 - 13:49 #10
snepnet -> du har hjulpet mig noget på vej, men jeg laver app i klassisk asp i stedet for.

Vil du lave et svar?

:-) karsten_larsen
Avatar billede karsten_larsen Praktikant
19. juli 2005 - 14:05 #11
snepnet
Vil du lave et svar?
Avatar billede karsten_larsen Praktikant
27. juli 2005 - 19:34 #12
snepnet, du må give besked hvis du vil have din point senere.
Avatar billede snepnet Nybegynder
27. juli 2005 - 22:29 #13
hov - du må meget undskylde, men jeg har ikke set du har skrevet :o(
mvh
Avatar billede snepnet Nybegynder
28. juli 2005 - 00:53 #14
(hehe ... altså ikke set det før nu :o)
mvh
Avatar billede karsten_larsen Praktikant
23. august 2005 - 19:55 #15
Jeg opretter et sp til dig.

:-) karsten_larsen
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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