Avatar billede globen Nybegynder
21. juli 2011 - 18:39 Der er 6 kommentarer og
1 løsning

Wel frmed XML

Hej eksperter!

Jeg fik i dag nærmest bidt mit hoved af, af en kollega, som jeg havde leveret noget xml til, da der var et element der indeholdt et apostrof - altså '. Han påstod at det derved ikke var well formed, og at han ikke kunne arbejde med det. Han mente altså at det skulle escapes.

Nu har jeg googlet rundt i snart en time, og jeg syntes egentlig ikke jeg kan finde et konkret svar på hvilke forudsætninger der skal være opfyldt for at xml kan siges at være well formed.

Med mindre der er noget jeg ikke har tænkt over (meget muligt), så burde de eneste restriktioner være, at data i xml naturligvis ikke må indeholde < eller >, og heller ikke " så vidt det er i en attribut, da disse er de eneste karakterer der adskiller data og markup.

Taget jeg fejl?

Er dette ikke well formed xml?

<Root>
<Field>56'</Field>
</Root>

Nogen der kan poste link der beskriver dette?
Avatar billede arne_v Ekspert
21. juli 2011 - 19:19 #1
Avatar billede arne_v Ekspert
21. juli 2011 - 19:22 #2
The ampersand character (&) and the left angle bracket (<) MUST NOT appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they MUST be escaped using either numeric character references or the strings " & " and " < " respectively. The right angle bracket (>) may be represented using the string " > ", and MUST, for compatibility, be escaped using either " > " or a character reference when it appears in the string " ]]> " in content, when that string is not marking the end of a CDATA section.

...

To allow attribute values to contain both single and double quotes, the apostrophe or single-quote character (') may be represented as " ' ", and the double-quote character (") as " " ".

forskellen er paa must og may be.
Avatar billede globen Nybegynder
21. juli 2011 - 19:58 #3
Da der tikkede en mail ind i min mailboks fra eksperten kunne jeg ikke lade være med at tænke "Hmmm... Mon det er arne_v der har svaret?". :)

Jeg skal lige være 230% sikker, så jeg spørger lige om disse tre alle er well formed:

<Root>
  <Field testAtt='&apos;'>bla</Field>
</Root>

<Root>
  <Field testAtt="&apos;">bla</Field>
</Root>

<Root>
  <Field testAtt="'">bla</Field>
</Root>

Og så må du godt komme med et svar! :)
Avatar billede arne_v Ekspert
21. juli 2011 - 20:39 #4
Der er ogsaa wellformed.

Der er masser af tools - desktop og web - som kan checke for det. Eksmepel paa web:

http://www.w3schools.com/xml/xml_validator.asp

Og et svar.
Avatar billede arne_v Ekspert
21. juli 2011 - 20:40 #5
om igen
Avatar billede jokkejensen Novice
05. august 2011 - 08:36 #6
Best practice er vel at forsøge at undgå de predefined xml entities, og ' er predefined, og kan skabe forvirring ved ex xslt bearbejdelse. Dog er det valid, men man ser også meget valid html, som stadig er en omgang rod.

Med andre ord, ville jeg undgå at benytte "'" som attribut i xml. <- men nej, det har intet at sige.
Avatar billede arne_v Ekspert
05. august 2011 - 22:54 #7
Helt enig.
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