Farerne ved kopiering tekst til XML

Original: http://www.xfront.com/copying-text-into-xml/index.html

Udstedelse

Hvilke problemer kan opstå i at kopiere tekst fra et dokument og indsætte den i et XML-dokument?
Eksempel

Overvej dette XML-dokument:

<?xml version="1.0" encoding="UTF-8"?>
<Document>
      <Para id="...">...</Para>
</Document> 

Antag, at teksten er kopieret fra et dokument og indsættes i XML-dokumentet, enten som indholdet af element eller som værdien af ​​id attribut. Hvilke problemer kan indføres?
Problemer

Reserverede XML tegn: Teksten kan indeholde disse reserverede tegn: {<,>, ‘, “&} Disse tegn kan indføre syntaksfejl i XML-dokumentet og skal måske undslap..
Kodning Mismatch: Redaktøren bruges til at skabe teksten kan anvende en anden kodning end XML-dokumentet er kodning. To typer af problemer kan opstå, når der er et misforhold af kodninger:
En byte sekvens, der repræsenterer en karakter i en kodning kan repræsentere en anden karakter i en anden kodning. Derfor hvis teksten blev skabt i en editor, der bruger et andet tegnsæt end det XML-dokument så de tegn, der skyldes at indsætte tekst i XML-dokumentet kan ikke være den samme.
En byte sekvens, der repræsenterer en karakter i en kodning kan ikke repræsentere alle tegn i en anden kodning. Derfor hvis teksten blev skabt i en editor, der bruger et andet tegnsæt end det XML-dokument og derefter indsætte teksten i XML-dokumentet kan resultere i at indføre ulovlige tegn.
Eksempel: Microsoft Word bruger Windows-1252-kodning. Hexkoden for venstre krøllede (alias smart) citat er x93. I UTF-8-kodning venstre krøllede citat er en tre-byte sekvens af hex koder XE2 x80 x9C, og der er ingen tegn, der svarer til hexkoden x93. Kopiering af en venstre krøllet citat fra et Word-dokument og indsætte den i en UTF-8 XML-dokument kan resultere i XML-dokument, der modtager en byte sekvens, der ikke kan afkodes som UTF-8.
Ikke-XML tegn: Teksten kan indeholde ikke-XML tegn, som, når de indsættes i XML-dokument vil give en fejlagtig XML-dokument.
Entity Referencer: Teksten kan indeholde virksomhedens referencer, der ikke er defineret i XML-dokumentet.
Navnerum Mismatch: Teksten kan indeholde henvisninger til navnerum der ikke er defineret i XML-dokumentet, eller det kan overskrive en namespace, som allerede findes i XML-dokumentet, eller den kan indeholde kode, der ikke er tilladt i XML-dokumentet er namespace.
Delvis Markup: Teksten kan indeholde en ufuldstændig enhed af markup, såsom start-symboler på en CDATA sektion men ikke dets endelige symboler, en start-tag, men ikke dens ende tag, eller det første afgrænser en attribut værdi, men ikke dens ende afgrænser .
Entydighed Kollision: Hvis teksten indsættes i en egenskab, der er af datatype id derefter attribut værdi kan kollidere med et ID værdi andetsteds i dokumentet. Tilsvarende, hvis teksten indsættes i et element, der har en entydighedsbegrænsningen derefter elementets værdi kan ikke længere være unik.
Ugyldig Datatype: Teksten kan muligvis ikke være af den rette datatype for element eller attribut.

Minimering Problemer

Nogle af de ovennævnte problemer kan gå upåagtet hen, når du kopierer og indsætte ved hjælp af en almindelig tekst editor, der ikke forstår XML eller tegnkodninger (fx Notepad, VI). Navnlig problemerne gå upåagtet hen under redigering, kun til overfladen senere, når dokumentet analyseres af en XML-parser.

Der er betydeligt færre farer, når du bruger encoding- og XML-aware redaktører. Således kan påvises problemer tidligere, under redigeringen snarere end under XML-fortolkning.
Anerkendelser

Følgende folk har bidraget til skabelsen af ​​dette dokument:

greg Alvord
Frank Benson
Len Bullard
David Carlisle
Anthony Coates
Roger Costello
bæk Heaton
Ken Holman
pete Kirkham
kit Leuder
Noah Mendelsohn
Dave Pawson
Bryan Rasmussen
Jonathan Robie
Tom Rudick
Rob Simmons
Richard Tobin

Tags

XML

Sidst opdateret: September 6, 2007