Gra*_*amS 1 xml xsd ip-address
我想在我的XML模式定义(XSD)中定义一个类型,它以点十进制表示法表示IPv4地址,因此在我的XML中:
<Example>
<Address>192.168.0.1</Address>
</Example>
Run Code Online (Sandbox Code Playgroud)
将被验证为正确和不正确的值,例如:
<Example>
<Address>192.268.0.1</Address>
</Example>
Run Code Online (Sandbox Code Playgroud)
被拒绝为无效.
在XSD文件中使用以下类型定义:
<xs:simpleType name="IPv4Address">
<xs:annotation>
<xs:documentation>IPv4 address in dot-decimal notation. Equivalent to [0-255].[0-255].[0-255].[0-255]</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="((1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])" />
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
这将仅接受四个点分隔字段中每个字段中的值0到255.
模式是:
((1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])
Run Code Online (Sandbox Code Playgroud)
这只是这个组子句:
(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])
Run Code Online (Sandbox Code Playgroud)
之后{3}用一个\.点重复三次,然后再一次没有点.
这些|栏将该组子句分为三个替代匹配:
1?[0-9]?[0-9]匹配从0到199的所有数字.
2[0-4][0-9]匹配从2开始的三位数字,从200到249.
25[0-5]匹配250到255
一旦定义,类型可以在架构中使用,如下所示:
<xs:element name="Example">
<xs:complexType>
<xs:sequence>
<xs:element name="Address" maxOccurs="1" type="IPv4Address" />
</xs:sequence>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |