2009-10-26 5 views
21

Я пытаюсь получить запрос xpath с использованием функции xpath в нижнем или верхнем регистре, но они, похоже, не работают в селене (где я тестирую мои xpath, прежде чем применять его).Проблема с функциями xpath верхнего и нижнего регистра в селене IDE

Пример, который не работает: //*[.=upper-case('some текст ')]

У меня нет никаких проблем, определяя местонахождение узлов, мне нужно в сложном пути, и даже с использованием агрегированных функций, а поскольку я не использую верхний и нижний регистр.

Неужели кто-нибудь сталкивался с этим раньше? Имеет ли это смысл?

Спасибо.

+0

Хорошо отметить, что для людей, работающих на XSL документов, используя CSS»свойства текста решает проблемы трансформации как прописными буквами. Чтобы получить дополнительную информацию: http://www.w3schools.com/css/pr_text_text-transform.asp – sid3k

ответ

48

upper-case() и lower-case() - это функции XPath 2.0. Скорее всего, ваша платформа поддерживает только XPath 1.0.

Try:

translate('some text','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ') 

который в XPath 1.0 способ сделать это. К сожалению, для этого требуется знание алфавита, который использует текст. Для простого английского языка, вероятно, это работает, но если вы ожидаете акцентированных символов, убедитесь, что вы добавили их в список.

+0

Действительно, спасибо! К сожалению, это совсем не «чисто» ... :( (это усложнит еще некоторые из наших уже сложных определений DSL в GenericFixture для Fitnesse). Любой имеет представление о том, когда селен RC или Firefox (я не знаю Ответ на этот вопрос будет принят XPath 2.0? – Aristotelis

+0

Прошу прощения, но я понятия не имею. Я знаю, что это не чисто, но это лучшее, что вы получите с XPath 1.0. – Tomalak

+3

@Aristotelis: Да, это кажется неясно, но у него есть причина. XML - это Unicode, а не ASCII/английский, поэтому для капитализации он должен знать о сопоставлениях. Значения Collations были добавлены в XPath 2.0. – 2010-09-10 19:35:47

1

Если вам нужен верхний регистр в нескольких местах в xslt, вы можете определить переменные для нижнего регистра и верхнего регистра, а затем использовать их во всей функции перевода. Это должно сделать ваш xslt намного чище.

Пример на XSL/XPATH : No upper-case function in MSXML 4.0 ?