Я борюсь с чем-то странным.Мы должны отправить некоторые сгенерированные документы XML на веб-сайт, где они будут проанализированы с xsd.Этот xsd включает в себя тип данных для текстовых полей, где регулярное выражение используется для исключения различных символов (фактически, reg exp включает в себя определенный список допустимых символов, исключая все, что находится вне правила).
Например, стандартныйдвойные кавычки (") исключены.
В нашем генераторе xml я изменил (") с его сущностью "
, и с этим изменением те данные, которые включают в себя ("), проходят проверку.
Конечно, кавычки - не единственная наша проблема, есть много разных символов, исключенных из reg exp, которые можно найти в наших исходных данных.
Поэтому я сделал небольшую функцию в нашем пакете Oracleкоторый проверяет единицы данных по сравнению с reg exp перед добавлением их в xml и, если они не подходят, циклически просматривает содержимое, ища недопустимые символы и изменяя их с помощью html-сущности, связанной с их кодировкой (таким образом, кавычки изменяются на "
)
Мое удивление в том, что, хотя reg exp проверяет часть данных с "
, он не проверяет часть данных с "
(и да, (#) включены в reg exp).
Есть какие-либо причины для этого?Я не знаю ... # числовые объекты анализируются перед проверкой на xsd или что-то в этом роде?
Кстати, regExp это:
[0-9a-zA-ZñáàéèíìóòúùÁÉÍÓÚÑü\s/çÇ¡!¿=\?%€@&#,;:\.\-_''\*\+\(\) ÀÈÌÒÙÜ’´´`·äëïöÄËÏÖ“”’]+