Оператор Less-than вызывает ошибку «не правильно сформирован» в xsl-if - PullRequest
12 голосов
/ 20 августа 2010

Я изучаю 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)

Ответы [ 3 ]

12 голосов
/ 20 августа 2010

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

Поскольку символ «<» является одним из немногих, которые недопустимы в значении атрибута (это символ начала тега). </p>

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

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

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

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

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

6 голосов
/ 20 августа 2010

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

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

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

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

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

4 голосов
/ 20 августа 2010

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

Хотя «закрывающая» скобка > разрешена, использование ее в действительности является плохим стилем (ИМХО). Значения атрибута XML должны быть закодированы в формате XML, точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...