Отличается ли проверка шаблона в XSD?

Я пытаюсь проверить элемент XML с проверкой шаблона XSD, используя приведенный ниже шаблон, и он не работает. Требуемое поведение — разрешить все символы, кроме упомянутых в выражении шаблона.

<xsd:pattern value = "^[^&gt;&lt;{}|^`\[\]\\\\]*$"/>

Valid data : TESTING
Invalid data : TE{ST]`I<NG

Но приведенный выше шаблон дает ошибку проверки для действительных данных (ТЕСТИРОВАНИЕ) также в XSD, но то же самое работает нормально, если я использую этот шаблон в пакете сопоставления выражений java regualr. Пожалуйста помоги.

Ваш класс персонажа, возможно, недействителен или, по крайней мере, не делает то, что вы думаете. [&gt;] означает совпадение с любым из &, g, t, ;. Это не означает совпадение с символом HTML &gt;.

Tim Biegeleisen 25.06.2019 07:03

@TimBiegeleisen Вы не можете использовать литералы < и > в XML. Вместо этого нужно использовать сущности.

Robby Cornelissen 25.06.2019 07:06

@RobbyCornelissen Хорошо ... но действителен ли этот класс персонажей? Я никогда не видел разновидность регулярных выражений, которая позволяет использовать несколько символов.

Tim Biegeleisen 25.06.2019 07:07

@TimBiegeleisen Этот класс символов действителен и будет работать по назначению. Проблема с якорями ^ и $.

Robby Cornelissen 25.06.2019 07:17

Каждый день узнаю что-то новое ^^. Таким образом, синтаксический анализатор, вероятно, преобразует &gt; в > внутри для использования в классе.

Tim Biegeleisen 25.06.2019 07:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
5
723
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В отличие от множества комментариев и ответов на этот вопрос, такие объекты, как &gt; и &lt;, можно без проблем использовать в регулярных выражениях схемы XML.

Однако такие привязки, как знак вставки (^) и доллар ($), не поддерживаются.

Учитывая следующую схему с удаленными якорями из шаблона:

<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema" > 
  <xsd:element name = "test" type = "test"/> 

  <xsd:simpleType name = "test"> 
    <xsd:restriction base = "xsd:string"> 
      <xsd:pattern value = "[^&gt;&lt;{}|^`\[\]\\\\]*"/> 
    </xsd:restriction> 
  </xsd:simpleType> 
</xsd:schema>

Это будет правильно проверено:

<test>testing</test>

Пока таких не будет:

<test>{testing</test>

<test>&gt;testing</test>

Другие вопросы по теме