向 xsd 中的任何 URI 数据类型添加模式

问题描述 投票:0回答:2

如何保证url元素以“http://”开头?

<xs:element name="url" type="xs:anyURI"/>
xsd xsd-validation
2个回答
8
投票

您可以使用

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
网址:

https://github.com

如果你也想匹配

https
,你可以将模式更改为

https?://.+

这意味着

s
是允许的并且是可选的。

如果您只想匹配有效的 URL,那么您需要改进它以检查字符,后跟一个点、更多字符、有效的域后缀等。如果您通过正则表达式搜索 URL 验证,您会发现几个示例。您也可以尝试此资源。要试验正则表达式,Regex 101 是一个很好的资源。

XSD 中的模式匹配有一些限制。检查这个SO问题/答案,其中讨论了这一点。


0
投票

我如何在我的 JSON-LD VP JSON 中使用它。

我尝试了以下方法,但它不起作用,

{
  "type": "ex:TermsAndConditions",
  "gx:url": "http://www.stackoverflow.com",
  "gx:hash": "d8402a23de560f5ab34b22d1a142feb9e13b3143"
}

Please help me with the correction
© www.soinside.com 2019 - 2024. All rights reserved.