Я просматриваю учебник XSLT по w3cschools, и я нахожусь на этой странице: xsl-if.
На этой странице (в красном) находится текст <xsl:if test="price > 10">
. Это работает. Я изменил код для использования "<"
, и это тоже отлично работает.
Я тестировал <xsl:if test="price > 10">
(обратите внимание на использование >
вместо >
). Это тоже работает.
Но это не удается: <xsl:if test="price < 10">
. Ошибка XML Parsing Error: not well-formed
, и она указывает на символ <
в выражении.
Если символ >
работал нормально, почему использование <
завершилось неудачно? (Я использую FireFox)
Менее чем оператор вызывает ошибку "неправильно сформирован" в xsl-if
Ответ 1
Если симвul > работал нормально, почему с использованием < потерпеть неудачу? (Я использую FireFox)
Поскольку "<" character является одним из немногих, которые являются незаконными в пределах значения атрибута (это символ начала тега).
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
Как ясно видно, "<" и "&" символы не допускаются ни в одном значении атрибута.
Обновление. Как заметил @Tomalak, вышесказанное должно гласить:
Как ясно видно, "<" и "&" символы (если последнее не является частью ссылки на объект или ссылку на символ) не допускаются ни в одном значении атрибута.
Ответ 2
Вы также можете увидеть ответ на это в w3schools:
http://www.w3schools.com/xmL/xml_syntax.asp
Ссылки на сущности
Некоторые символы имеют особое значение в XML.
Если вы поместите символ типа "<" внутри элемента XML он будет генерировать ошибку , потому что синтаксический анализатор интерпретирует его как начало нового Элемент.
Ответ 3
Некодированная "открывающая" скобка <
обычно недействительна в значениях атрибутов XML в соответствии со спецификацией XML.
В то время как "закрывающая" скобка >
разрешена, использование ее в действительности является плохим стилем (IMHO). Значения атрибутов XML должны быть закодированы в формате XML, период.