Как я могу гарантировать, что элемент URL начинается с «http://»?
<xs:element name="url" type="xs:anyURI"/>
Как я могу гарантировать, что элемент URL начинается с «http://»?
<xs:element name="url" type="xs:anyURI"/>
Вы можете добавить xs:restriction
для регулярного выражения, используя xs:pattern
:
<xs:element name="url">
<xs:simpleType>
<xs:restriction base="xs:anyURI">
<xs:pattern value="http://.+" />
</xs:restriction>
</xs:simpleType>
</xs:element>
Это будет соответствовать всему, что начинается с http://
. Он будет соответствовать:
http://www.stackoverflow.com
http://somethingsomethingsomething
http://123456789!!!!!
http://0
Он не будет соответствовать https
URL:
https://github.com
Если вы хотите также соответствовать https
, вы можете изменить шаблон на
https?://.+
что означает, что s
разрешено и является необязательным.
Если вы хотите сопоставлять только действительные URL-адреса, вам нужно улучшить его, чтобы проверять символы, за которыми следует точка, другие символы, действительный суффикс домена и т. д. Если вы ищете проверку URL-адресов с помощью регулярных выражений, вы найдете несколько примеров. Вы также можете попробовать этот ресурс. А чтобы поэкспериментировать с Regex, Regex 101 — отличный ресурс.
Сопоставление шаблонов в XSD имеет некоторые ограничения. Проверьте этот SO вопрос/ответ, в котором это обсуждается.