Невозможно добавить шаблон в поле anyURI в xsd - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь добавить шаблон в anyURI таким образом, чтобы я мог устранить начальные / конечные и пробелы между ними, потому что ошибки копирования-вставки создают много проблем.

До сих пор я был в состояниипридумайте это

<element name="randomUri">
   <simpleType>
     <restriction base="anyURI"><pattern value="\S(.*\S)?"/></restriction>
   </simpleType>
</element> 

, но когда я пытаюсь проверить его по xml, создается впечатление, что он не соответствует шаблону, и я мог бы указать начальные / конечные и пробелы между ними.Этот шаблон работал отлично, если я использовал его против строки, т.е. когда я сделал base="string" в моем ограничении.Есть ли какое-то уникальное свойство anyURI, которое не позволяет мне это делать?

PS: я не пошел по пути pattern value = "http://.*, потому что я хотел приспособиться к нестандартным схемам, таким как sample.app://sampleapp., например,

Просто, чтобы прояснить ситуацию ... Я хочу устранить ведущие/ Трейлинг и пробелы между ними для URL.Шаблон, который я использовал выше, работает совершенно нормально, если randomUri был string, но он не работает, когда я делаю randomUri anyURI.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Тип xs:anyURI имеет фасет whiteSpace, равный collapse, что означает, что начальные и конечные пробелы удаляются из значения перед проверкой его по фасету pattern.Это в основном означает, что начальные и конечные пробелы всегда разрешены (и считаются игнорируемыми) и не могут быть предотвращены с помощью фасета pattern.

0 голосов
/ 27 января 2019

Я проверил ваш код на (небольшом) образце, который вы предоставили, и одна из проблем с ним заключается в том, что вы не указали количество в xs:element.Таким образом, он не вышел из строя на xs:pattern, он действительно потерпел неудачу на первом xs:pattern.Таким образом, вы должны были указать квантификатор в xs:element:

<element name="randomUri" maxOccurs="unbounded">
...

. Другим простым предложением может быть указание нуля или более символов ПРОБЕЛ до и после URI, используя \S* вместо \S.Может быть, это улучшит соответствие.

...