Атрибут xquery равен id с пробелами - PullRequest
0 голосов
/ 11 февраля 2019

Атрибут SalesOrder равен '12345678' (без пробелов), но "id3" имеет пробелы.Как я могу заставить свой XQuery работать для выбора SalesOrder, игнорируя различия в пробелах?

"id3": "       12345678"

xquery

/SalesOrder[@SalesOrder = "{id3}"]

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Если вы хотите нормализовать только начальные и конечные пробелы, вы можете использовать функцию fn:normalize-space().

/SalesOrder[@SalesOrder = fn:normalize-space($id3)]

normalize-space() свернет повторяющиеся пробелы и удалит пробелы, которые находятся в начале и конце значения, но свернет и сохранит пробел, который был в середине значения

Например, fn:normalize-space(" 123 456 789 ") выдаст «123 456 789».

Если вы хотите удалить все пробелы, вы можете использовать функцию fn:translate().

Например, fn:translate(" 123 456 789 ", " ", "") выдаст «123456789»). Это может быть немного быстрее и более производительным, чем реализация регулярных выражений, такая как fn:replace().

0 голосов
/ 11 февраля 2019

Вы говорите, что $id3 с удаленными пробелами будет соответствовать @SalesOrder?Вы можете удалить пробелы из строки с помощью регулярных выражений и fn:replace():

 /SalesOrder[@SalesOrder = fn:replace($id3, '\s', '')]
...