两个字母的模式定义,一个下划线和 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>

正则表达式数值范围由两部分组成:

  1. 00 到 39

  2. 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>