Выбор буквенно-цифрового узла в XQuery
У меня есть этот XQuery
объявить @XML xml
set @XML =
'
<root>
<row1>
<value>1</value>
</row1>
<1row2>
<value>2</value>
</1row2>
</root>
'
select @XML.query('/root/1row2')
я продолжаю получать ошибку белый, пытаясь выбрать 1row2.
эта ошибка
XQuery [query()]: Syntax error near '1', expected a step expression.
кажется, что я просто продолжаю получать эту ошибку, когда узел XML начинается с числа, есть ли способ выбрать упомянутый узел?
1 ответ
Решение
Из правил именования XML элементы XML должны следовать следующим правилам именования:
- Имена элементов чувствительны к регистру
- Имена элементов должны начинаться с буквы или подчеркивания
- Имена элементов не могут начинаться с букв xml (или XML, или Xml и т. Д.)
- Имена элементов могут содержать буквы, цифры, дефисы, подчеркивания и точки
- Имена элементов не могут содержать пробелы
- Можно использовать любое имя, слова не зарезервированы (кроме xml).
Итак, имена элементов должны начинаться с буквы или подчеркивания. На SQL Server 2016 SP1
ваш XML является событием недопустимым и не может быть выполнен:
Вам нужно либо восстановить вашу строку, чтобы она была допустимым XML, либо запросить данные, используя другой метод (например, функцию SQL CLR для реализации поддержки выражений регулярных выражений или разделения узлов).