Запрос относительно целого числа в xpath - PullRequest
1 голос
/ 09 января 2012

Можем ли мы поставить целое число в моем запросе xpath, например "A / B / 123".Если нет, то скажите, пожалуйста, есть ли способ поместить целые числа в xpath

Ответы [ 3 ]

2 голосов
/ 09 января 2012

Первый символ имен элементов XML ограничен следующим набором

":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]

См. http://www.w3.org/TR/REC-xml/#NT-NameStartChar. Сюда не входят цифры.

Почему бы не использовать атрибут в разметке и искать его в запросе XPath, например,

XML

<A>
    <B>
        <C id="123" />
    </B>
</A>

1017 * XPath * A/B/C[@id="123"]

1 голос
/ 09 января 2012

В XPath 2.0 выражение X / Y / 123 является допустимым, но оно не делает ничего очень полезного: оно возвращает последовательность, состоящую из такого количества экземпляров 123, сколько имеется элементов в X / Y.

Как ответили другие: чего вы пытаетесь достичь?

1 голос
/ 09 января 2012

Можем ли мы поставить целое число в моем запросе xpath, например, "A / B / 123".

Ответ отрицательный , поскольку на шаге определения местоположения /123 строка 123 не является ни проверкой узла, ни именем узла.

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

Итак, все следующие синтаксически правильны :

/A/B/C123

/A/B/C_123

/A/B/_123

/π/Σ/φ_123

/А/Б/Щ_123

/A/B/C[. = 123]    

/A/B/C[. = '123']

/A/B/C[text() = 123]    

/A/B/C[text() = '123']    

/A/B/C[@someAttribName = 123]

/A/B/C[@someAttribName = '123']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...