Подтвердить что ты не робот

Менее чем оператор вызывает ошибку "неправильно сформирован" в xsl-if

Я просматриваю учебник XSLT по w3cschools, и я нахожусь на этой странице: xsl-if.

На этой странице (в красном) находится текст <xsl:if test="price &gt; 10">. Это работает. Я изменил код для использования "&lt;", и это тоже отлично работает.

Я тестировал <xsl:if test="price > 10"> (обратите внимание на использование > вместо &gt;). Это тоже работает. Но это не удается: <xsl:if test="price < 10">. Ошибка XML Parsing Error: not well-formed, и она указывает на символ < в выражении.

Если символ > работал нормально, почему использование < завершилось неудачно? (Я использую FireFox)

4b9b3361

Ответ 1

Если симвul > работал нормально, почему с использованием < потерпеть неудачу? (Я использую FireFox)

Поскольку "<" character является одним из немногих, которые являются незаконными в пределах значения атрибута (это символ начала тега).

Из Спецификация XML

[10]    AttValue    ::=    '"' ([^<&"] | Reference)* '"' 

Как ясно видно, "<" и "&" символы не допускаются ни в одном значении атрибута.

Обновление. Как заметил @Tomalak, вышесказанное должно гласить:

Как ясно видно, "<" и "&" символы (если последнее не является частью ссылки на объект или ссылку на символ) не допускаются ни в одном значении атрибута.

Ответ 2

Вы также можете увидеть ответ на это в w3schools:

http://www.w3schools.com/xmL/xml_syntax.asp

Ссылки на сущности

Некоторые символы имеют особое значение в XML.

Если вы поместите символ типа "<" внутри элемента XML он будет генерировать ошибку , потому что синтаксический анализатор интерпретирует его как начало нового Элемент.

Ответ 3

Некодированная "открывающая" скобка < обычно недействительна в значениях атрибутов XML в соответствии со спецификацией XML.

В то время как "закрывающая" скобка > разрешена, использование ее в действительности является плохим стилем (IMHO). Значения атрибутов XML должны быть закодированы в формате XML, период.