2015-03-15 7 views
0

Я новичок в HTML и Xpath и нуждаюсь в небольшой помощи.Я правильно использую <?

Я пытаюсь использовать меньше, чем функция в HTML, но он продолжает появляться с ошибкой.

value.singleNodeValue.setAttribute("select", "match[round &lT; '"+matchround+"']");

где round это имя атрибута и matchround является пользовательским вводом Я хочу, чтобы сравнить.

Может кто-то, пожалуйста, подчеркнуть, что я делаю неправильно, так как большее, чем утверждение, работает отлично.

+0

Какая ошибка вы получаете? –

+0

Я не получаю и не выводю вообще, это мой код для большего и меньшего, чем if (searchcondition1 == "GreaterThan") { // больше value.singleNodeValue.setAttribute ("select", "match [round> '"+ matchround +']"); } else {// Менее value.singleNodeValue.setAttribute ("select", "match (round < '" + matchround + "'"); –

+0

Вам нужно объяснить и показать контекст своего вопроса, вы говорите: Я пытаюсь использовать меньше, чем функцию в HTML », но HTML вообще не имеет функций. И меньше, чем в XPath, это оператор, а не функция. Является ли код, который вы показали Javascript? Вы пытаетесь установить значение атрибута к выражению XPath? Это не имеет смысла в контексте HTML, поскольку HTML-атрибуты не имеют выражений XPath в качестве их значения. Как выражение XPath, которое вы хотите построить, выглядит точно? В самом XPath операторы '<' and '>' являются никогда не сбежал. –

ответ

1

Общие и объекты параметров в XML: с учетом регистра.

&lT; (с капиталом T как в настоящее время указано в коде на вашем вопрос) не совпадает с &lt;.

Также не совсем понятно, как ваш пример намеревается использовать XPath. Похоже, вы просто пытаетесь установить атрибут с именем select со строкой, которая имеет едва ли не сходство с функцией XPath match(). Также обратите внимание, что match() доступен только в XPath 2.0.

ответ на ваш заданный вопрос в том, что вы должны использовать &lt; (чувствительно к регистру) вместо буквального < в XML, так что парсеры не перепутать < для начала элемента.

Ответ на ваш реальный вопрос будет зависеть от вашего clarification of what your true end goal is.

+0

Я пробовал это в нижнем регистре, пока нет разницы –

+0

@FarhadAli Почему люди догадываются, что может быть неправильно? Просто покажите _all вашего кода_ и ввод и удалите теги, которые не применяются (вы не используете XSLT, я думаю). –

0

Какое сравнение вы хотите сделать, какую ценность имеет matchround? Это строка или число? XPath 1.0 не поддерживает меньше или больше сравнений по строковым значениям, а только сравнение числа. И вы говорите, что round - это имя атрибута, в котором в XPath вам нужно @round. Поэтому, если matchround является числом (например, 50), тогда выполнение setAttribute("select", "match[@round < " + matchround + "]") создаст атрибут с выражением XPath match[@round < 50] в качестве его значения. Любое экранирование произойдет только в том случае, если дерево DOM сериализовано, значение атрибута в DOM будет содержать чисто выражение XPath с символом <, а не с ссылкой на сущность.

Смежные вопросы