Когда я пытаюсь проверить XML-файл против XSD в Java (см. этот пример) существуют некоторые несовместимости между регулярными выражениями, данными в файле XSD и регулярных выражениях в Java.
Если существует регулярное выражение как "[ab-]"
в XSD (значение любого из символов, "b" или "-", Java жалуется на синтаксическую ошибку в выражении.
Это - известная ошибка начиная с 28-MAR-2005, посмотрите базу данных ошибки Sun.
Что я могу сделать для работы вокруг этой ошибки? До сих пор я пытаюсь "исправить" файл XSD путем замены "[ab-]"
"[ab\-]"
, но иногда это не опция.
Если у Вас есть проблемы с этой ошибкой, также голосуйте за нее в базе данных ошибки Sun!
Так как ошибка уже подана, я бы порекомендовал попробовать другой процессор XML схемы. Там не будет много, что вы можете сделать с этим.
Если вы сможете предварительно получить поток XSD включен, то вы можете создать анализатор, который понимает базовую структуру регулярных выражений и может исправить все, что выглядит как форма [. * -] (где .star не буквальный в этом случае).
Несмотря на то, что в мире может быть не лучшим решением, вы можете рассмотреть возможность использования SAX Parser. Я использовал его уже более 3 лет, однако я не сделал много валидации на регеекс с ним, поэтому я не могу говорить с этим, связанная с этим.
Кроме того, я думаю, что Kaleb, вероятно, верна на стороне предварительной обработки (что является чем-то идеальным) - вы можете использовать Regex для любого из входящих регеектов, чтобы сделать замену ... хотя Это имеет вполне кодовый запах об этом.
Редактировать: Дополнительная мысль, которая только что приехала ко мне. Если Regex не нужно быть в XSD - то есть. Это просто потому, что это было «простым» в прошлом - вы можете сделать проверку REGEX вне XSD. Но, если другие системы используют XSD, что, вероятно, не правильное решение, и вы можете забыть, что я сказал что-нибудь.