#saxon #xml-validation
#saxon #xml-проверка
Вопрос:
Я использую API-интерфейсы Saxon EE для проверки полезной нагрузки XML с помощью XSD. Моя среда — OSGi. Один из моих пользователей пытается экранировать символ @ в определении регулярного выражения. Я поделился фрагментом строки, который вызывает проблему.
<xsd:restriction base="xsd:string">
<xsd:pattern value=". @. .. "/>
</xsd:restriction>
Это вызывает следующую ошибку при загрузке xsd (внутри библиотеки saxon).
Error at xsd:pattern on line 17 column 70
Syntax error at char 4 in regular expression: Escape character '@' not allowed
Не мог бы кто-нибудь поделиться какими-либо советами о том, как преодолеть эту проблему? Пожалуйста, дайте мне знать, если требуется полный xsd.
Ответ №1:
Правила XSD для регулярных выражений довольно строже, чем во многих других диалектах регулярных выражений: символы могут экранироваться, только если их действительно нужно экранировать, и если escape-последовательность имеет определенное значение. Для него не определен escape-символ @
, поэтому его следует просто записать как @
.
Причина правила заключается в совместимости с пересылкой: оно позволяет вводить новые escape-символы в будущем, не нарушая существующие схемы.