Ответ 1
Да, одинарные кавычки действительны.
Из спецификации XML:
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
| "'" ([^<&'] | Reference)* "'"
Являются ли одинарные кавычки действительными в HTML? И более конкретно: XHTML strict.
<table width="100%">
<table width='100%'>
Да, одинарные кавычки действительны.
Из спецификации XML:
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
| "'" ([^<&'] | Reference)* "'"
Источником путаницы в этом вопросе, похоже, исходит из этой статьи,
http://www.javascriptkit.com/howto/xhtml_intro.shtml
который, кажется, утверждает, что одинарные кавычки недействительны в xhtml. Однако, поскольку спецификация не цитируется, и поскольку в статье также утверждается, что имена нижних регистров для атрибутов и элементов запрещены, автор может просто выражать запрет на редакцию, запрещающий использование одинарных кавычек.
Согласно spec, оба действительны: -)
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
| "'" ([^%&'] | PEReference | Reference)* "'"
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
| "'" ([^<&'] | Reference)* "'"
[11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
И W3C-Validator также принимает его.