Добавить шаблон к любому типу данных URI в xsd

Как я могу гарантировать, что элемент URL начинается с «http://»?

<xs:element name="url" type="xs:anyURI"/>

person grv    schedule 11.03.2014    source источник


Ответы (1)


Вы можете добавить 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 вопрос/ответ, в котором это обсуждается.

person helderdarocha    schedule 11.03.2014