21. juli 2011 - 18:39Der 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.
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 " " ".
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.
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.