两个字母的模式定义,一个下划线和 0-40 之间的值
Pattern Definition for two letters, an underscore and value from 0-40
我需要在 XSD 中定义一个限制模式,它将元素的可能内容限制为 DB_ 和一个从 0 到 40 的数字。目前我得到一个 xsd 验证错误.
元素应如下所示
<DB>DB_00</DB>
<DB>DB_01</DB>
<DB>DB_02</DB>
...
<DB>DB_39</DB>
<DB>DB_40</DB>
到目前为止我定义的模式:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DB">
<xs:complexType>
<xs:restriction base="xs:string">
<xs:pattern value="DB_([0-40])"/>
</xs:restriction>
</xs:complexType>
</xs:element>
</xs:schema>
感谢您的帮助!
PS : 请宽容这是我第一次 post :-)
你可以试试这个
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="DB" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="DB_(0?[1-9]|[1-3][0-9]|40)"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
首先 XML 应该是格式正确的。缺少根元素。
XML
<root>
<DB>DB_00</DB>
<DB>DB_01</DB>
<DB>DB_02</DB>
<DB>DB_39</DB>
<DB>DB_40</DB>
</root>
正则表达式数值范围由两部分组成:
00 到 39
40
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="DB"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DB" type="myType"/>
<xs:simpleType name="myType">
<xs:restriction base="xs:string">
<xs:pattern value="DB_([0-3]{1}[0-9]{1}|40)"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
我需要在 XSD 中定义一个限制模式,它将元素的可能内容限制为 DB_ 和一个从 0 到 40 的数字。目前我得到一个 xsd 验证错误. 元素应如下所示
<DB>DB_00</DB>
<DB>DB_01</DB>
<DB>DB_02</DB>
...
<DB>DB_39</DB>
<DB>DB_40</DB>
到目前为止我定义的模式:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DB">
<xs:complexType>
<xs:restriction base="xs:string">
<xs:pattern value="DB_([0-40])"/>
</xs:restriction>
</xs:complexType>
</xs:element>
</xs:schema>
感谢您的帮助!
PS : 请宽容这是我第一次 post :-)
你可以试试这个
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="DB" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="DB_(0?[1-9]|[1-3][0-9]|40)"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
首先 XML 应该是格式正确的。缺少根元素。
XML
<root>
<DB>DB_00</DB>
<DB>DB_01</DB>
<DB>DB_02</DB>
<DB>DB_39</DB>
<DB>DB_40</DB>
</root>
正则表达式数值范围由两部分组成:
00 到 39
40
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="DB"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DB" type="myType"/>
<xs:simpleType name="myType">
<xs:restriction base="xs:string">
<xs:pattern value="DB_([0-3]{1}[0-9]{1}|40)"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>