Avatar billede babz Nybegynder
11. juli 2005 - 15:10 Der er 10 kommentarer

tilbage med de danske tegn.

Hej....
Jeg har lavet en kalender med noget asp og XML. I den forbindelse kan det åbenbart være svært at få brugt specialtegn....

Jeg har et admin-interface til kalenderen, hvorfra der kan plottes ativiteter ind i kalenderen.
Til redigering af aktiviteter, tidspunkter, dato osv. bruges GET.
Men bruger jeg specialtegn går det galt, og jeg får en ubrugelig ' object required'-fejl.

Er der noget der hedder omvendt url-encoding jeg kan bruge på de felter hvor det går galt?

/Babz
Avatar billede nielle Nybegynder
11. juli 2005 - 18:08 #1
Du kan altid bruge koderne:

æ for æ,
Æ for Æ,

ø for ø,
Ø for Ø,

å for å, og
Å for Å
Avatar billede babz Nybegynder
11. juli 2005 - 18:43 #2
Jepz...Men det er ike mig der skal bruge skidtet....hvis det bare var så nemt.
Nej brugere har det jo med at bruge programmer på uventede måder.
Så enten skal jeg checke alle mulige felter og filtrere snavs væk, eller osse lader jeg folk skrive lige hvad de vil.

Jeg vil gerne det sidste da det klart er nemmest, og ikke giver knapt så maget ballade, som sidstnævnte.

Mit problem er bare at det er muligt at få tastet ulovlige værdier ind i min kalender.....men de kan ikke redigeres efterfølgende, ej heller slettes, da de specielle tegn hentet fra GET laver ballade i min ASP.

Derfor vil jeg gerne trylle de urlencodede tegn tilbage til ganske gemene ascii-fætre.

Capisce?
Avatar billede nielle Nybegynder
11. juli 2005 - 18:52 #3
Det input folk skriver til kalenderen - gemmes det i en CDATA sektion eller hvad?
Avatar billede soes Nybegynder
11. juli 2005 - 18:56 #4
jeg fandt noget her, ved ikke om det kan bruges til noget...
http://www.issociate.de/board/post/220678/Server.HTMLDecode.html
Avatar billede babz Nybegynder
11. juli 2005 - 18:58 #5
Næh!
Det er data fra en ganske kedelig formular, der sendes via. GET og hentes ind fra samme til behandling.
Avatar billede nielle Nybegynder
11. juli 2005 - 19:10 #6
Hvis du vil gemme helt almindelig tekst i et XML-ark, og det ikke skal fortolkes på nogen som helst måde, så skal det lægges i en CDATA sektion. Ellers vil den brogge sig over "underlige" tegn.
Avatar billede nielle Nybegynder
11. juli 2005 - 19:11 #7
Endvidere har du i toppen af dit XML-ark angivet en encoding, f.eks. UTF-8 eller noget i den stil. De specielle danske tegn skal i det tilfælde også encodes efter denne.
Avatar billede babz Nybegynder
12. juli 2005 - 12:46 #8
Jeg bruger utf-16....
men er der ikke noget med at min CDATA-section ikke bliver parset....
Så jeg ikke kan få vist den med mit stylesheet????

/Babz
Avatar billede nielle Nybegynder
12. juli 2005 - 19:25 #9
Korrekt at CDATA ikke bliver parset i den forstand at man kan skrive næsten hvad man vil uden at XML'en er ulovlig af den grund.

Imidlertid er det ikke det samme som at sige at CTATA svarer til en kommentar. Jo, det kan du sagtens få ud med din XSLT.
Avatar billede babz Nybegynder
12. juli 2005 - 21:38 #10
Nu er jeg ikke den store asp eller xml-haj.
Jeg er ikke lige med på hvordan jeg skal skrue det sammen med CDATA.
Men måske du kan bruge nogle stumper af koden til kalenderen som eksempel.

--------------------code-----------------------------
'UPDATE.ASP

Dim strUgenr
strUgenr = Request.QueryString("ugeNr")
Dim strUgeDag
strUgeDag = Request.QueryString("ugeDag")

'strItem afgr om der skal redigeres en dato eller et arrangement
Dim strItem
strItem = Request.QueryString("item")

Dim strDato
Dim strTid
Dim strBeskr
Dim strType
Dim strLink
Dim strLokale

'XML-filerne
Dim strXML
strXML = server.MapPath("kalender.xml")

'lokale variabler.
    Dim objRoot
    Dim objWeek


Select Case strItem
    Case "dato"

    strDato = Request.Form("dato")

    'lav en instans af et XMLDOM Objekt.
      set objXML = Server.CreateObject("Microsoft.XMLDOM")

    'Luk for asyncronous file loading.
    objXML.async = false

    'Hent XMLfilen.
    objXML.load strXML

    'St objRoot variablen til root-elementet af XMLfilen ved
    'at kalde documentElement metoden af (XMLDOM)-objektet.
    Set objRoot = objXML.documentElement

    'Lav en reference til den (record) i XMLfilen vi gerne vil redigere
    'ved at kalde SelectSingleNode metoden og give den
    'nummeret paa den paagaeldende uge.
    Set objWeek = objRoot.SelectSingleNode("aar/uge[ugenr='" & strUgenr & "']")
    Set objDag = objWeek.SelectSingleNode("ugedag[navn='" & strUgeDag & "']/dato")

    'opdatering
    'af vaerdierne i ugens felter.
    objDag.text = strDato

    'Efter redigering gemmer vi XMLfilen
      objXML.save strXML
        Response.Redirect "kalender.asp#uge"&strUgenr


        Case "arr"
        strTid = Request.QueryString("tid")
            strNewTid = Request.Form("tid")
        strNewKontakt = Request.Form("kontakt")
        strNewBeskr = Request.Form("beskr")
        strNewType = Request.Form("type")
        strNewLink = Request.Form("link")
        strNewLokale = Request.Form("lokale")


        'lav en instans af et XMLDOM Objekt.
        set objXML = Server.CreateObject("Microsoft.XMLDOM")

        'Luk for asyncronous file loading.
        objXML.async = false

        'Hent XMLfilen.
        objXML.load strXML

        'St objRoot variablen til root-elementet af XMLfilen ved
        'at kalde documentElement metoden af (XMLDOM)-objektet.
        Set objRoot = objXML.documentElement

        'Lav en reference til den (record) i XMLfilen vi gerne vil redigere
        'ved at kalde SelectSingleNode metoden og give den
        'nummeret paa den paagaeldende uge.
        Set objWeek = objRoot.SelectSingleNode("aar/uge[ugenr='" & strUgenr & "']")
        Set objDag = objWeek.SelectSingleNode("ugedag[navn='" & strUgeDag & "']")
        Set objArr = objDag.SelectSingleNode("arr[tid='" & strTid & "']")


        'Iteration gennem formularens punkter fra request-objektet og opdatering
        'af vaerdierne i ugens felter.

        Set objKontakt = objArr.SelectSingleNode("kontaktperson")
          Set objTid  = objArr.selectSingleNode("tid[.='" & strTid & "']")
          Set objLok  = objArr.selectSingleNode("lokale")
          Set objType = objArr.selectSingleNode("text/type")
          Set objLink = objArr.selectSingleNode("text/link")
          Set objBesk = objArr.selectSingleNode("text/beskr")

        'Response.Write objTid.text
        objKontakt.Text = strNewKontakt
        objTid.text = strNewTid
        objLok.text = strNewLokale
        objType.text = strNewType
        objLink.text = strNewLink
        objBesk.text = strNewBeskr

        'Efter redigering gemmer vi XMLfilen
        objXML.save strXML
        Response.Redirect "kalender.asp#uge"&strUgenr


        case "del"

            strTid = Request.QueryString("tid")

            'lav en instans af et XMLDOM Objekt.
            set objXML = Server.CreateObject("Microsoft.XMLDOM")

            'Luk for asyncronous file loading.
            objXML.async = false

            'Hent XMLfilen.
            objXML.load strXML

            'St objRoot variablen til root-elementet af XMLfilen ved
            'at kalde documentElement metoden af (XMLDOM)-objektet.
            Set objRoot = objXML.documentElement

        'Lav en reference til den (record) i XMLfilen vi gerne vil slette
        'ved at kalde SelectSingleNode metoden og give den
        'nummeret paa den paagaeldende uge.
        Set objWeek = objRoot.SelectSingleNode("aar/uge[ugenr='" & strUgenr & "']")
        Set objDag = objWeek.SelectSingleNode("ugedag[navn='" & strUgeDag & "']")
        Set objArr = objDag.SelectSingleNode("arr[tid='" & strTid & "']")


        'Kald RemoveChildmetoden paa objRoot med objArr for at slette
        objDag.RemoveChild(objArr)

        'Efter redigering gemmer vi XMLfilen
        objXML.save strXML
        Response.Redirect "kalender.asp#uge"&strUgenr

            case "titel"

    strTitel = Request.Form("titel")



    'lav en instans af et XMLDOM Objekt.
      set objXML = Server.CreateObject("Microsoft.XMLDOM")

    'Luk for asyncronous file loading.
    objXML.async = false

    'Hent XMLfilen.
    objXML.load strXML

    'St objRoot variablen til root-elementet af XMLfilen ved
    'at kalde documentElement metoden af (XMLDOM)-objektet.
    Set objRoot = objXML.documentElement

    'Lav en reference til den (record) i XMLfilen vi gerne vil redigere
    'ved at kalde SelectSingleNode metoden og give den titelen.

    Set objTitel = objRoot.SelectSingleNode("titel")


    'opdatering
    'af vaerdierne i ugens felter.
    objTitel.text = strTitel

    'Efter redigering gemmer vi XMLfilen
      objXML.save strXML
        Response.Redirect "kalender.asp"


End Select







'Vi bruger kun 1 XMLfil: test.xml
Dim strXMLfil
strXMLfil = server.MapPath("kalender.xml")

'update strXMLfil, server.MapPath("edit.xsl")


'-------------------------------------------------------------------
'UPDATE
'Funktionen tager tre argumenter
'strXML - XMLfilen der skal opdateres
'strXSL - XSLfilen der skal formattere xmlfilen
'-------------------------------------------------------------------
Function update(strXML, strXSL)

'lokale variabler.
Dim objRoot

'lav en instans af et XMLDOM Objekt.
set objXML = Server.CreateObject("Microsoft.XMLDOM")

'Luk for asyncronous file loading.
objXML.async = false

'Hent XMLfilen.
objXML.load strXMLFil

'St objRoot variablen til root-elementet af XMLfilen ved
'at kalde documentElement metoden af (XMLDOM)-objektet.
Set objRoot = objXML.documentElement

'Lav en reference til den (record) i XMLfilen vi gerne vil redigere
'ved at kalde SelectSingleNode metoden og give den
'nummeret paa den paagaeldende uge.
Set objWeek = objRoot.SelectSingleNode("uge[ugenr='" & strUgenr & "']")
Set objDag = objWeek.SelectSingleNode("ugedag[navn='" & strDag & "']")
Set objArr = objDag.SelectSingleNode("arr[tid='" & strTid & "']")


'Iteration gennem formularens punkter fra request-objektet og opdatering
'af vaerdierne i ugens felter.
  Set objDato = objDag.selectSingleNode("[dato='" & strDato & "']/dato")
  Set objTid  = objArr.selectSingleNode("[tid='" & strTid & "']/tid")
  Set objLok  = objArr.selectSingleNode("[lokale='" & strLokale & "']/lokale")
  Set objType = objArr.selectSingleNode("text[type='" & strType & "']/type")
  Set objLink = objArr.selectSingleNode("text[link='" & strLink & "']/link")
  Set objBesk = objArr.selectSingleNode("text[beskr='" & strBeskr & "']/beskr")

objDato.text = strDato
objTid.text = strTid
objLok.text = strLokale
objType.text = strType
objLink.text = strLink
objBesk.text = strBeskr

'Efter redigering gemmer vi XMLfilen
objXML.save strXMLFile

'Nu vil vi gerne have vist Ugen med de redigerede oplysninger.
'XMLfilens ugenr skal vises vha. et bestemt stylesheet
viewUge strXMLFile, strXSLFile, strUgenr
End Function
'-------------------------------------------------------------------
'
'//end UPDATE
'-------------------------------------------------------------------


'-------------------------------------------------------------------
'viewUge
'Funktionen tager tre argumenter
'strXML - XMLfilen der skal opdateres
'strXSL - XSLfilen der skal formattere xmlfilen
'strUge - Ugenummeret for det pgldende arrangement
'-------------------------------------------------------------------
Function viewUge(strXMLFile, strXSLFile, strUge)
'lokale variabler
Dim objXML
Dim objNode
Dim objXSL

'lav en instans af et XMLDOM Objekt til XMLfilen.
set objXML = Server.CreateObject("Microsoft.XMLDOM")

'Luk for asyncronous file loading.
objXML.async = false

'Hent XMLfilen.
objXML.load strXMLFil

'Lav en reference til den (record) i XMLfilen vi gerne vil redigere
'ved at kalde SelectSingleNode metoden og give den
'nummeret paa den paagaeldende uge.
Set objWeek = objRoot.SelectSingleNode("uge[ugenr='" & strUgenr & "']")


'Lav en instans af et XMLDOM Objekt til XSLfilen.
set objXSL = Server.CreateObject("Microsoft.XMLDOM")

'Luk for asyncronous file loading.
objXSL.async = false

'Hent XSLfilen.
objXSL.load(strXSLFile)

'Brug "transformNode" metoden af XMLDOM til at f XMLdokumentet
'til at bruge XSLfilen... Output skrives til klienten
Response.Write(objXML.transformNode(objXSL))
End Function
'-------------------------------------------------------------------
'//end viewUge
'-------------------------------------------------------------------

---------------------//endcode-----------------------

Jeg spiser gerne kode med ske.

/Babz
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