При проверке xml через xsd объекты воспринимаются как упомянутый символ - PullRequest
0 голосов
/ 07 февраля 2019

Я борюсь с чем-то странным.Мы должны отправить некоторые сгенерированные документы XML на веб-сайт, где они будут проанализированы с xsd.Этот xsd включает в себя тип данных для текстовых полей, где регулярное выражение используется для исключения различных символов (фактически, reg exp включает в себя определенный список допустимых символов, исключая все, что находится вне правила).

Например, стандартныйдвойные кавычки (") исключены.

В нашем генераторе xml я изменил (") с его сущностью ", и с этим изменением те данные, которые включают в себя ("), проходят проверку.

Конечно, кавычки - не единственная наша проблема, есть много разных символов, исключенных из reg exp, которые можно найти в наших исходных данных.

Поэтому я сделал небольшую функцию в нашем пакете Oracleкоторый проверяет единицы данных по сравнению с reg exp перед добавлением их в xml и, если они не подходят, циклически просматривает содержимое, ища недопустимые символы и изменяя их с помощью html-сущности, связанной с их кодировкой (таким образом, кавычки изменяются на ")

Мое удивление в том, что, хотя reg exp проверяет часть данных с ", он не проверяет часть данных с " (и да, (#) включены в reg exp).

Есть какие-либо причины для этого?Я не знаю ... # числовые объекты анализируются перед проверкой на xsd или что-то в этом роде?

Кстати, regExp это:

[0-9a-zA-ZñáàéèíìóòúùÁÉÍÓÚÑü\s/çÇ¡!¿=\?%€@&#,;:\.\-_''\*\+\(\) ÀÈÌÒÙÜ’´´`·äëïöÄËÏÖ“”’]+
...