Avatar billede dm0108 Nybegynder
17. november 2004 - 14:33 Der er 27 kommentarer og
1 løsning

Hvordan får jeg xsl til at bruge dansk tegnsæt.

Jeg danner en XML fil ud fra et dataset fra en SQL serverdatabase. Denne database indeholder data med dansk tegnsætning, jeg har lavet følgende XSL fil:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <HTML>
      <HEAD>
        <STYLE> 
          .HDR { background-color:bisque;font-weight:bold }
        </STYLE>
      </HEAD>
      <BODY>
        <TABLE>
          <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
          <COLGROUP WIDTH="250" ALIGN="LEFT"></COLGROUP>
          <COLGROUP WIDTH="250" ALIGN="LEFT"></COLGROUP>
          <COLGROUP WIDTH="250" ALIGN="LEFT"></COLGROUP>
         
          <TD CLASS="HDR">Aktivitets Kode </TD>
          <TD CLASS="HDR">Kort Navn</TD>
          <TD CLASS="HDR">Budget Kr</TD>
          <TD CLASS="HDR">Budget Timer</TD>
     
          <xsl:for-each select="NewDataSet/Table">
            <TR>
              <TD><xsl:value-of select="aktivitetkode"/></TD>
              <TD><xsl:value-of select="kortnavn"/></TD>
              <TD><xsl:value-of select="budgetkr"/></TD>
              <TD><xsl:value-of select="aktivbudgettimer"/></TD>
                         
            </TR>
          </xsl:for-each>
        </TABLE>
      </BODY>
    </HTML>
  </xsl:template>
</xsl:stylesheet>

I outputtet er æøå ikke taget med. Der er i stedet nogle spændende tegn.
Hvordan for jeg XSL filen til at vise dansk tegnsætning.
Avatar billede arne_v Ekspert
17. november 2004 - 14:37 #1
Er der overensstemmelse mellem den angivne encoding i prolog og
data (ISO-8859-1 versus UTF-8) ?
Avatar billede dm0108 Nybegynder
17. november 2004 - 15:01 #2
Øh
Kan du komme det lidt nærmere, eller give mig et hint til hvor jeg kan se det henne.
Avatar billede arne_v Ekspert
17. november 2004 - 21:27 #3
Det  må være nemt at checke - står der

<?xml version="1.0" encoding="UTF-8"?>

eller

<?xml version="1.0" encoding="ISO-8859-1"?>

eller

<?xml version="1.0"?>

?
Avatar billede arne_v Ekspert
17. november 2004 - 21:28 #4
Det andet må du kunne checke med en editor som kan både UTF-8 og ISO-8859-1.

(hex dumps er vist gået af mode nu om dage)
Avatar billede dm0108 Nybegynder
18. november 2004 - 15:43 #5
er det xsl filen jeg skal se det i??
Avatar billede arne_v Ekspert
18. november 2004 - 16:14 #6
Nej - i det XML som er input
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:21 #7
Men xml bliver gennereret ud fra et dataset
via denne kode
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        'Fill a dataset with records from the Customers table.
        'Dim strconn As String = "Provider=SQLOLEDB.1;Password=nmoverblikuser;Persist Security Info=True;User ID=NMOverblikUser;Initial Catalog=NMOverblik;Data Source=sorms008142\dbi1"
        Dim strconn As String = "Provider=SQLOLEDB.1;Password=vestamt;Persist Security Info=True;User ID=sa;Initial Catalog=NMOverblik;Data Source=test-pc55p520w0."
        Dim objConn As New System.Data.OleDb.OleDbConnection(strconn)
        objConn.Open()
        Dim strSQL As String
        Dim objDataset As New DataSet
        Dim objAdapter As New System.Data.OleDb.OleDbDataAdapter
        strSQL = "select aktivitetkode,kortnavn,budgetkr,aktivbudgettimer from aktivitet where afdelingid =" & DropDownList1.SelectedValue & " and aarstal =2005"
        objAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand(strSQL, objConn)
        objAdapter.Fill(objDataset)
        Dim stw As New System.IO.StringWriter
        Dim xtw As New System.Xml.XmlTextWriter(stw)

        Dim xmlDoc As System.Xml.XmlDataDocument = New System.Xml.XmlDataDocument(objDataset)
        Dim xslt As New System.Xml.xsl.XslTransform
        ' xsl fil bør ikke ligge på c:\, men indenfor sitet
        'xslt.Load("d:\web\intranet\natur\NMoverblik\afdelingsliste.xsl")
        xslt.Load("c:\inetpub\wwwroot\NMoverblik\afdelingsliste.xsl")
        xslt.Transform(xmlDoc, Nothing, stw, Nothing)

        ' Udskriv til klienten.
        Response.ContentType = "application/vnd.ms-excel"
        'Response.ContentType = "application/vnd.ms-word"
        Response.Write(stw.ToString)
        ' Eller msgbox(stw.ToString) hvis du vil prøve den i en windows app

        xtw.Close()
        stw.Close()
        objConn.Close()

        ' Create the FileStream to write with.
        'Dim buffer As Byte

        ' Dim strFilename As String
        'strFilename = "afdelingsliste.htm"
        'Response.Buffer("afdelingsliste.htm", 10000)
       

        'Dim fs As New System.IO.FileStream(strFilename, System.IO.FileMode.Create)
        'Response.AddHeader("content-disposition", "attachment; filename='" & strFilename & "'")
        'Server.Transfer(strFilename)

        'Create an XmlTextWriter for the FileStream.
        'Dim xtw As New System.Xml.XmlTextWriter(fs, System.Text.Encoding.Unicode)

        'Transform the XML using the stylesheet.
        'Dim xmlDoc As System.Xml.XmlDataDocument = New System.Xml.XmlDataDocument(objDataset)
        ' Dim xslTran As System.Xml.xsl.XslTransform = New System.Xml.Xsl.XslTransform
        ' xslTran.Load("\\test-pc55p520w0\C$\afdelingsliste.xsl")
        'xslTran.Transform(xmlDoc, Nothing, xtw)

        'Write the transformed XML to the file.
        'objDataset.WriteXml(xtw)
        'xtw.Close()

        'Start Excel and open the resulting file.
        'Dim oExcel As Object
        'oExcel = CreateObject("Excel.Application")
        'oExcel.Workbooks.Open("\\test-pc55p520w0\C$\afdelingsliste.htm")

        'Make Excel visible and give the user control of the application.
        'oExcel.Visible = True
        'oExcel.UserControl = True
    End Sub





 
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        'Fill a dataset with records from the Customers table.
        'Dim strconn As String = "Provider=SQLOLEDB.1;Password=XXX;Persist Security Info=True;User ID=YYY;Initial Catalog=NMOverblik;Data Source=sorms008142\dbi1"
        Dim strconn As String = "Provider=SQLOLEDB.1;Password=XXX;Persist Security Info=True;User ID=YYY;Initial Catalog=NMOverblik;Data Source=test-pc55p520w0."
        Dim objConn As New System.Data.OleDb.OleDbConnection(strconn)
        objConn.Open()
        Dim strSQL As String
        Dim objDataset As New DataSet
        Dim objAdapter As New System.Data.OleDb.OleDbDataAdapter
        strSQL = "select aktivitetkode,kortnavn,aktivresmaal,aktivresbeskr,aktivmaaling from aktivitet where aktivitetid =" & DropDownList2.SelectedValue
        objAdapter.SelectCommand = New System.Data.OleDb.OleDbCommand(strSQL, objConn)
        objAdapter.Fill(objDataset)
        Dim stw As New System.IO.StringWriter
        Dim xtw As New System.Xml.XmlTextWriter(stw)

        Dim xmlDoc As System.Xml.XmlDataDocument = New System.Xml.XmlDataDocument(objDataset)
        Dim xslt As New System.Xml.xsl.XslTransform
        ' xsl fil bør ikke ligge på c:\, men indenfor sitet
        'xslt.Load("d:\web\intranet\natur\NMoverblik\afdelingsliste.xsl")
        xslt.Load("c:\inetpub\wwwroot\NMoverblik\aktivitetxml.xsl")
        xslt.Transform(xmlDoc, Nothing, stw, Nothing)

        ' Udskriv til klienten.
        'Response.ContentType = "application/vnd.ms-excel"
        Response.ContentType = "application/vnd.ms-word"
        Response.Write(stw.ToString)
        ' Eller msgbox(stw.ToString) hvis du vil prøve den i en windows app

        xtw.Close()
        stw.Close()
        objConn.Close()


    End Sub
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:22 #8
Da jeg er har kæmpet en del med det så er der en del af det som er udkommenteret. Håber du kan gennemskue det
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:24 #9
Det er den øverste sub som gennererer xml'en
Avatar billede arne_v Ekspert
18. november 2004 - 16:25 #10
Prøv med:

Dim xtw As New System.Xml.XmlTextWriter(stw, Encoding.Default)

og

Dim xtw As New System.Xml.XmlTextWriter(stw, Encoding.UTF8)
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:31 #11
Hvad skal encoding erklæres som??
Avatar billede arne_v Ekspert
18. november 2004 - 16:33 #12
Det er en klasse.

System.Text eller System.Globalization
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:38 #13
Så vil den ikke godkende xtw fordi new kan ikke blive kaldt med de argumenter
Avatar billede arne_v Ekspert
18. november 2004 - 16:42 #14
suk
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:43 #15
Det må du nok sige
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:46 #16
Her er den præcise fejl beskrivelse.
Hvis du altså ikke har opgivet.


c:\inetpub\wwwroot\NMOverblik\opret_aktivitet.aspx.vb(310): Overload resolution failed because no accessible 'New' can be called with these arguments:
    'Public Sub New(filename As String, encoding As System.Text.Encoding)': Value of type 'System.IO.StringWriter' cannot be converted to 'String'.
    'Public Sub New(w As System.IO.Stream, encoding As System.Text.Encoding)': Value of type 'System.IO.StringWriter' cannot be converted to 'System.IO.Stream'.
Avatar billede arne_v Ekspert
18. november 2004 - 16:48 #17
Hvad med:

Dim xtw As New System.Xml.XmlTextWriter(stw.ToString(), Encoding.Default)

og

Dim xtw As New System.Xml.XmlTextWriter(stw.ToString(), Encoding.UTF8)
Avatar billede dm0108 Nybegynder
18. november 2004 - 16:54 #18
Så forsvinder fejlen.
Men
Til gengæld for jeg en browser fejl som hedder:
Der må ikke bruges tomme stinavne.

Sorry
Avatar billede dm0108 Nybegynder
18. november 2004 - 17:29 #19
Hvad gør jeg??
Avatar billede arne_v Ekspert
18. november 2004 - 17:39 #20
godt spørgsmål ...
Avatar billede dm0108 Nybegynder
18. november 2004 - 17:51 #21
Du plejer da ellers nok at kunne løse den slags problemer.
Jeg vender tilbage i aften.
Avatar billede arne_v Ekspert
18. november 2004 - 18:38 #22
Hviw det var en win app, så skulle jeg også nok få den til at virke, men
nu er det jo en web app og der er jeg ikke helt så meget på hjemme bane
Avatar billede dm0108 Nybegynder
19. november 2004 - 07:44 #23
Der må da være nogen der kan hjælpe mig
Avatar billede Slettet bruger
21. november 2004 - 09:22 #24
Er din XSL skrevet i UTF-8 ?
Avatar billede dm0108 Nybegynder
21. november 2004 - 20:46 #25
Nej
Den er kun skrevet i version 1
Avatar billede Slettet bruger
27. november 2004 - 07:14 #26
Det er lige "gyldigt" hvad der står i encoding det bliver dokumentet ikke mere eller mindre UTF-8 af.  Du skal vide hvilken encoding der er anvende til æøå - I iso8859-1 anvender der 1 byte pr. tegn mens der i UTF-8 anvender 1 byte til a-z osv. men 2 bytes til de lande specifikke så som æøå
Avatar billede dm0108 Nybegynder
29. november 2004 - 13:48 #27
Kryptos du er nød til at forklare det lidt bedre.
Du kan se mit xsl doc længere oppe.
XML doc.  bliver dannet vi asp.net.
håber du kan hjælpe mig
Avatar billede dm0108 Nybegynder
02. december 2004 - 15:06 #28
Jeg har løst det selv.
I min code skulle der bare stå:
response.contentencoding = system.text.encoding.default
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