Как избежать двойных кавычек в значениях атрибутов XML?


144

Из следующих испытаний

<tag attr="\"">
<tag attr="<![CDATA["]]>">
<tag attr='"'>

Только последний работает для анализатора XML, который я использую здесь. Есть ли альтернатива?


1
&quot;это ответ; вот объяснение .
kjhughes

Ответы:


229

Ты можешь использовать &quot;


3
При именовании переменных, функций, атрибутов и т. Д. Явное и более длинное соглашение об именах лучше, чем акронимы или сокращенное; Я всегда предпочитаю ясность краткости - это мое незапрошенное мнение.
Даниэль Соколовски

1
Я согласен с Дэниелом. Краткость может сэкономить вам 1 секунду набора текста, но затем люди должны потратить 10 минут, пытаясь понять, что происходит.
NL3294

1
@ Даниэль Соколовски: Что вы двое имеете в виду? Есть ли какой-то отсутствующий контекст (например, удаленные комментарии)?
Питер Мортенсен

Должно быть @PeterMortensen, сейчас я забыл, это было почти 7 лет назад :)
Даниэль Соколовски

54

Из спецификации XML :

Чтобы значения атрибутов могли содержать как одинарные, так и двойные кавычки, апостроф или символ одинарной кавычки (') может быть представлен как "& apos;", а символ двойной кавычки (") как" & quot; ".


18

Символ двойной кавычки ( ") может быть экранирован как &quot;, но вот остальная часть истории ...

В этом контексте необходимо использовать двойные кавычки :

  • В атрибутах XML, разделенных двойными кавычками:

    <EscapeNeeded name="Pete &quot;Maverick&quot; Mitchell"/>
    

Символ двойной кавычки не нужно экранировать в большинстве случаев:

  • В текстовом содержимом XML:

    <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
    
  • В атрибутах XML, разделенных одинарными кавычками ( '):

    <NoEscapeNeeded name='Pete "Maverick" Mitchell'/>
    

    Точно так же ( ') не требует экранирования, если ( ") используются для разделителей значений атрибутов:

    <NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>
    

Смотрите также


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.