Avatar billede myllesen Nybegynder
30. august 2004 - 13:10 Der er 8 kommentarer og
2 løsninger

Tvungen ny linie i XML

Hvordan laver man et tvungent linieskift i XML? (CR/LF)
Avatar billede Slettet bruger
30. august 2004 - 21:14 #1
Det afhænger lidt af hvad din XML skal bruges til, men du kan gøre 2 forskellige ting for at bevare whitespace indhold i et element:

1. Tilføj en "xml:space" attribut med værdien "preserve"
2. Wrap indholdet i en CDATA Section

Eksempler:

<kode xml:space="preserve">
var f=1000;
</kode>

<kode><![CDATA[
var f=1000;
]]></kode>

/CS
Avatar billede myllesen Nybegynder
30. august 2004 - 21:37 #2
Det må jeg prøve. Men hvorfor skal det være så svært?
Avatar billede Slettet bruger
30. august 2004 - 21:54 #3
Det er ikke nødvendigvis "svært" - men XML har jo ingen predefinerede elementer som f.eks. HTML, der bestemmer om whitespace er "vigtig" eller ubetydelig; XML er ren data.

/CS
Avatar billede myllesen Nybegynder
31. august 2004 - 10:01 #4
Øhm, jeg kommer i tvivl om jeg har forklaret spørgsmålet godt nok. Jeg skal have delt en tekstlinie på et bestemt sted - det har vel ikke noget med whitespace at gøre?

For exempel:

<title abbrev="Titel">
Denne tekst skal deles sådan her...</title>

|
v

Denne tekst skal
deles sådan her...
Avatar billede janegil Nybegynder
31. august 2004 - 10:18 #5
Et X.css som spesifiserer
linie {display: block}

Bruke dette CSS ved å deklarere
<?xml-stylesheet href="X.css" type="text/css"?>

og kode
<title abbrev="Titel">
<linie>Denne tekst skal</linie>
<linie>deles sådan her...</linie>
</title>

Hvis de to linjene alltid skal skrives som to linjer, så er de to separate objekter, og det virker rimelig å kode dem som to XML-elementer. Synes jeg.

Og hvis de en dag skal på samme linje, endrer du stilarket til
linie {display: inline}
uten å gjøre endringer i selve XML'en.

Se fx http://heima.olivant.fo/~styrheim/xml/sql/pecking-order.xml
Avatar billede Slettet bruger
31. august 2004 - 10:26 #6
Jeg vil give janegil ret i at du burde dele din XML i 2 <linie> elementer hvis det er den tilsigtede effekt. Du er jo nødt til at fortælle "efterbehandleren" (XSLT eller hvad der nu bruges) hvor det linieskift skal være - enten vha. whitespace (dvs. et hard-coded linieskft) eller vha. f.eks. <linie> elementer el .lign.

/CS
Avatar billede myllesen Nybegynder
31. august 2004 - 11:43 #7
OK, jeg er vanskelig ;-) Jeg vil gerne have en løsning der ikke forudsætter andre filer (fx X.css).

De første forslag fra greystate virkede ikke. Ingen effekt.
Avatar billede janegil Nybegynder
31. august 2004 - 11:53 #8
Kan du bruke <br xmlns="http://www.w3.org/1999/xhtml" /> ?

Den vil ikke gi en generelt linjeskift, men burde gi det i en HTML-browser.
Avatar billede myllesen Nybegynder
31. august 2004 - 12:14 #9
Nope, det skal fungere uden en browser.
Avatar billede janegil Nybegynder
31. august 2004 - 12:58 #10
Hvis du vil ha CR/LF i selve XML'en, er det enkelt nok: &#x000A; for line feed, og &#x000D; for carriage return. Du kan også bruke entertasten i de fleste editorer.

I en HTML-browser vil dette vises som whitespace, dvs som mellomrom eller ny linje, avhengig av situasjonen.

Men hvis du ikke bruker browser, hva bruker du så, for å se om noe virker?
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