Как лучше всего проверить максимальную длину в XSD для буквенно-цифровых полей?

#xml #validation #types #xsd #maxlength

Вопрос:

Мне нужно проверить максимальную длину буквенно-цифровых данных в XML-документе, используя схему XSD. Если я использую базовое ограничение xs:string, я получу ошибки проверки типа, потому что он содержит числа. Есть ли лучший способ сделать это?

Каждое поле в XML, которое я проверяю, имеет разную длину поля, которую я проверяю. Единственные, в которых я получаю ложные ошибки, — это ошибки со смешанными числами и символами, которые ожидаются для этих конкретных полей. Мне нужно проверить максимальную длину, потому что, если они превысят ее, она не сохранится в базе данных, и я хочу знать, когда это произойдет с сообщением об ошибке.

Любые предложения или мысли будут оценены по достоинству!

Комментарии:

1. Настройте шаблон с помощью регулярного выражения [A-Za-z0-9]{1,12} . Я использовал только буквы ASCII, но вместо них язык регулярных выражений, используемый в XSD с классами символов Юникода, довольно мощный для поддержки других букв (например p{L} , для всех букв Юникода).

Ответ №1:

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

Конечно, ограничение xs:string типа, использующего фасет максимальной длины, никоим образом не ограничит содержимое строки, за исключением ее длины.