Avatar billede wired Nybegynder
16. februar 2003 - 13:29 Der er 17 kommentarer og
1 løsning

Simpelt spørgsmål

Jeg har lavet en .xml fil, og er i bund og grund tilfreds med måden IE5 viser dataerne på, men vil gerne have fjernet < og >
og vil gerne beholde kaskade strukturen.

Det lyder nemt men er sikkert langt sværer end det lyder?
Avatar billede arne_v Ekspert
16. februar 2003 - 13:34 #1
Jeg er ikke helt sikker på hvad du vil.

Skal

<aaa>
<bbb>ccc</bbb>
</aaa>

blive til

aaa
bbbccc/bbb
/aaa

eller

aaa
bbbcccbbb
aaaa

eller

ccc

eller

?
Avatar billede wired Nybegynder
16. februar 2003 - 13:38 #2
Når jeg browser mit xml dok. ser det således ud:
-<oversigt>
    -<indhold>
      <data>
    <indhold>
    <navn>
    <andet>
<oversigt>

Jeg vil gerne at det kunne komme til at se således ud:

- oversigt
    -indhold
      data
    indhold
    navn
    andet
oversigt

Og at man stadig kan trykke på + og - for at kaskadesamle underpunkterne.
Avatar billede arne_v Ekspert
16. februar 2003 - 13:46 #3
Det tror jeg ikke at man kan.
Avatar billede wired Nybegynder
16. februar 2003 - 13:48 #4
Tænkte nok at det ikke var så ligetil... ;-)
Avatar billede arne_v Ekspert
16. februar 2003 - 14:02 #5
Jeg kan godt uddybe hvorfor jeg ikke tror, at det kan lade
sig gøre.

Den +- funktionalitet er der kun hvis IE ved at den
viser XML.

Og keg tror ikke at IE vil betragte det som XML, hvis
der ikke er <> omkring tags.
Avatar billede janegil Nybegynder
17. februar 2003 - 09:33 #6
Ja, det er rett at om SOURCEN mangler <> rundt taggene, så er det ikke XML. Men det IE viser, er nok ikke <>, men &lt;&gt; som er generert av et XSLT stylesheet ut fra den opprinnelige XML-koden. Så det er BARE et spørsmål om a finne Microsofts stilark, men jeg finner det altså ikke i min maskin. Så du må eventuelt ta utgangspunkt i den DHTML-koden som genereres, og lage ditt eget XSLT som gjør den samme transformasjonen.
Avatar billede janegil Nybegynder
17. februar 2003 - 09:37 #7
Altså, 'bare' å lage XSLT som transformerer fra

<?xml version="1.0" encoding="UTF-8"?>
<oversigt>
    <indhold>
      <data/>
    </indhold>
    <navn/>
    <andet/>
</oversigt>

til

<HTML><HEAD>
<STYLE>BODY{font:x-small 'Verdana';margin-right:1.5em}
.c{cursor:hand}
.b{color:red;font-family:'Courier New';font-weight:bold;text-decoration:none}
.e{margin-left:1em;text-indent:-1em;margin-right:1em}
.k{margin-left:1em;text-indent:-1em;margin-right:1em}
.t{color:#990000}
.xt{color:#990099}
.ns{color:red}
.dt{color:green}
.m{color:blue}
.tx{font-weight:bold}
.db{text-indent:0px;margin-left:1em;margin-top:0px;margin-bottom:0px;padding-left:.3em;border-left:1px solid #CCCCCC;font:small Courier}
.di{font:small Courier}
.d{color:blue}
.pi{color:blue}
.cb{text-indent:0px;margin-left:1em;margin-top:0px;margin-bottom:0px;padding-left:.3em;font:small Courier;color:#888888}
.ci{font:small Courier;color:#888888}
PRE{margin:0px;display:inline}</STYLE>
<SCRIPT><!--
function f(e){
if (e.className=="ci"){if (e.children(0).innerText.indexOf("\n")>0) fix(e,"cb");}
if (e.className=="di"){if (e.children(0).innerText.indexOf("\n")>0) fix(e,"db");}
e.id="";
}
function fix(e,cl){
e.className=cl;
e.style.display="block";
j=e.parentElement.children(0);
j.className="c";
k=j.children(0);
k.style.visibility="visible";
k.href="#";
}
function ch(e){
mark=e.children(0).children(0);
if (mark.innerText=="+"){
mark.innerText="-";
for (var i=1;i<e.children.length;i++)
e.children(i).style.display="block";
}
else if (mark.innerText=="-"){
mark.innerText="+";
for (var i=1;i<e.children.length;i++)
e.children(i).style.display="none";
}}
function ch2(e){
mark=e.children(0).children(0);
contents=e.children(1);
if (mark.innerText=="+"){
mark.innerText="-";
if (contents.className=="db"||contents.className=="cb")
contents.style.display="block";
else contents.style.display="inline";
}
else if (mark.innerText=="-"){
mark.innerText="+";
contents.style.display="none";
}}
function cl(){
e=window.event.srcElement;
if (e.className!="c"){e=e.parentElement;if (e.className!="c"){return;}}
e=e.parentElement;
if (e.className=="e") ch(e);
if (e.className=="k") ch2(e);
}
function ex(){}
function h(){window.status=" ";}
document.onclick=cl;
--></SCRIPT>
</HEAD>
<BODY class="st"><DIV class="e">
<SPAN class="b">&nbsp;</SPAN>
<SPAN class="m">&lt;?</SPAN><SPAN class="pi">xml version="1.0" encoding="UTF-8" </SPAN><SPAN class="m">?&gt;</SPAN>
</DIV>
<DIV class="e">
<DIV class="c" STYLE="margin-left:1em;text-indent:-2em"><A href="#" onclick="return false" onfocus="h()" class="b">-</A>
<SPAN class="m">&lt;</SPAN><SPAN class="t">oversigt</SPAN><SPAN class="m">&gt;</SPAN></DIV>
<DIV><DIV class="e">
<DIV class="c" STYLE="margin-left:1em;text-indent:-2em"><A href="#" onclick="return false" onfocus="h()" class="b">-</A>
<SPAN class="m">&lt;</SPAN><SPAN class="t">indhold</SPAN><SPAN class="m">&gt;</SPAN></DIV>
<DIV><DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
<SPAN class="b">&nbsp;</SPAN>
<SPAN class="m">&lt;</SPAN><SPAN class="t">data</SPAN>
<SPAN class="m"> /&gt;</SPAN>
</DIV></DIV>
<DIV><SPAN class="b">&nbsp;</SPAN>
<SPAN class="m">&lt;/</SPAN><SPAN class="t">indhold</SPAN><SPAN class="m">&gt;</SPAN></DIV>
</DIV></DIV>
<DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
<SPAN class="b">&nbsp;</SPAN>
<SPAN class="m">&lt;</SPAN><SPAN class="t">navn</SPAN>
<SPAN class="m"> /&gt;</SPAN>
</DIV></DIV>
<DIV class="e"><DIV STYLE="margin-left:1em;text-indent:-2em">
<SPAN class="b">&nbsp;</SPAN>
<SPAN class="m">&lt;</SPAN><SPAN class="t">andet</SPAN>
<SPAN class="m"> /&gt;</SPAN>
</DIV></DIV>
<DIV><SPAN class="b">&nbsp;</SPAN>
<SPAN class="m">&lt;/</SPAN><SPAN class="t">oversigt</SPAN><SPAN class="m">&gt;</SPAN></DIV>
</DIV></DIV>
</BODY>
</HTML>

og deretter fjerne de tegnene du ikke vil ha. Se http://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/027/000/543/msdncompositedoc.xml for verktkøyet som gjør det mulig å se HTML-koden IE bruker for å vise XML.
Avatar billede janegil Nybegynder
17. februar 2003 - 09:39 #8
Hvis det er én eller noen få statiske XML'er du har, kan du bruke View XSL Output verktøyet jeg lenket til, og håndredigere resultatet.
Avatar billede Slettet bruger
17. februar 2003 - 11:05 #9
IE's default XSLT stylesheet ligger på denne adresse: res://msxml.dll/defaultss.xsl (Virker naturligvis kun i IE)

/CS
Avatar billede wired Nybegynder
17. februar 2003 - 23:44 #10
Mange tak - jeg checker det lidt nærmere tirsdag...
Prøvede lige at hente kildeteksten til res://msxml.dll/defaultss.xsl
men det vil den ikke.
Vil prøve din version i morgen janegil....
Avatar billede Slettet bruger
18. februar 2003 - 09:37 #11
Hehe - ja det kan selvfølgelig være lidt svært at greje - ser du: Hvis man i IE skriver "res://msxml.dll/defaultss.xsl", så henter den dette stylesheet, men da filen er XML vil IE jo naturligvis bruge sit indbyggede XSL stylesheet til at fremvise det med... dvs. du ser rent faktisk kildekoden, fremvist af sig selv!

Du kan jo lave en copy af det hele, og paste ind i f.eks. HomeSite, og derefter redigere "-" karaktererne væk - en god XML øvelse :-)

/CS
Avatar billede janegil Nybegynder
18. februar 2003 - 09:58 #12
Ja, en MEGET god øvelse. For stilarket er naturligvis ikke standard XSLT - det er den gamle versjonen som IE5 brukte:
http://www.w3.org/TR/WD-xsl
i stedet for den standard
http://www.w3.org/1999/XSL/Transform
og XML Spy ser ut til å ha problemer med å godta denslags som XML overhodet?

Og anhengig av størrelse og farve skal noen av < og > erstattes med &lt; og &gt; - noen, men ikke alle.

Det er nok lettere å skrive en standardversjon for både IE6 og Mozilla fra bunnen av, enn å bearbeide grunnlaget fra MS.
Avatar billede wired Nybegynder
18. februar 2003 - 22:33 #13
Har prøvet igen i dag nem får følgende fejl:
--------------------
XML-siden kan ikke vises
XML-kan ikke vises ved hjælp af typografiarket XSL. Ret fejlen, og klik derefter på knappen Opdater, eller prøv igen senere.


--------------------------------------------------------------------------------

Der var et ugyldigt tegn i et navn. Der opstod en fejl under behandling af ressourcen 'asb.xsl'. Linje 8, position 500

  <x:comment>function f(e){ if (e.className=="ci"){if (e.children(0).innerText.indexOf("\n")>0) fix(e,"cb");} if (e.className=="di"){if (e.children(0).innerText.indexOf("\n")>0) fix(e,"db");} e.id=""; } function fix(e,cl){ e.className=cl; e.style.display="block"; j=e.parentElement.children(0); j.className="c"; k=j.children(0); k.style.visibility="visible"; k.href="#"; } function ch(e){ mark=e.children(0).children(0); if (mark.innerText=="+"){ mark.innerText="-"; for (var i=1;i<e.children.length;i++) e.children(i).style.display="block"; } else if (mark.innerText=="-"){ mark.innerText="+"; for (var i=1;i<e.children.length;i++) e.children(i).style.display="none"; }} function ch2(e){ mark=e.children(0).children(0); contents=e.children(1); if (mark.innerText=="+"){ mark.innerText="-"; if (contents.className=="db"||contents.className=="cb") contents.style.display="block"; else contents.style.display="inline"; } else if (mark.innerText=="-"){ mark.innerText="+"; contents.style.display="none"; }} function cl(){ e=window.event.srcElement; if (e.className!="c"){e=e.parentElement;if (e.className!="c"){return;}} e=e.parentElement; if (e.className=="e") ch(e); if (e.className=="k") ch2(e); } function ex(){} function h(){window.status=" ";} document.onclick=cl;</x:comment>
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
Avatar billede wired Nybegynder
18. februar 2003 - 22:34 #14
Ved din Janegil skriver den:

XML-siden kan ikke vises
XML-kan ikke vises ved hjælp af typografiarket XSL. Ret fejlen, og klik derefter på knappen Opdater, eller prøv igen senere.


--------------------------------------------------------------------------------

Der refereres til den ikke-definerede enhed 'nbsp'. Der opstod en fejl under behandling af ressourcen 'asb.xsl'. Linje 74, position 18

<SPAN class="b">&nbsp;</SPAN>
-----------------^
Avatar billede wired Nybegynder
18. februar 2003 - 22:35 #15
I min xml fil skriver jeg følgende øverst:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="asb.xsl"?>
Avatar billede janegil Nybegynder
19. februar 2003 - 09:23 #16
Du hadde nok rett fra begynnelsen: »lyder nemt men er sikkert langt sværere«

I XML er det generelt en god ide å skrive "&#x00A0;" i stedet for "&nbsp;".

Men jeg forstår ikke hva som forgår her.
Avatar billede wired Nybegynder
28. juli 2004 - 09:05 #17
lukkker... send et svar og I deler points.
Avatar billede arne_v Ekspert
28. juli 2004 - 10:28 #18
Giv alle point til janegil (der er allerede lagt svar).
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