如何在 XML 架构定义中表示 IP 地址?
How do I represent an IP address in an XML Schema Definition?
我想在我的 XML 模式定义 (XSD) 中定义一个代表 IPv4 address in dot-decimal notation 的类型,这样在我的 XML:
<Example>
<Address>192.168.0.1</Address>
</Example>
将被验证为正确和不正确的值,例如:
<Example>
<Address>192.268.0.1</Address>
</Example>
被拒绝为无效。
解决方案
在您的 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>
这将只接受四个点分隔字段中的每个字段中的值 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])
这就是这个组子句:
(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])
重复 {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>
我想在我的 XML 模式定义 (XSD) 中定义一个代表 IPv4 address in dot-decimal notation 的类型,这样在我的 XML:
<Example>
<Address>192.168.0.1</Address>
</Example>
将被验证为正确和不正确的值,例如:
<Example>
<Address>192.268.0.1</Address>
</Example>
被拒绝为无效。
解决方案
在您的 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>
这将只接受四个点分隔字段中的每个字段中的值 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])
这就是这个组子句:
(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])
重复 {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>