使用 XSD 模式验证在 XML 中传递空值

Passing an empty value in XML with XSD pattern validation

我正在尝试发送以下带有空 InvestorID 字段的 XML 请求,但在响应中返回错误:

"module does not conform to the activity output schema. The initial value ' ' is not valid with respect to the simple type definition InvestorIDType"

  <tns:Investor>
    <tns:InvestorId/>
    <tns:firstName>FirstName</tns:firstName>
    <tns:lastName>LastName</tns:lastName>
    <tns:dateOfBirth>1970-01-01</tns:dateOfBirth>
  </tns:Investor>

我的简单类型的模式值 ([0-9]{10})? 是否应该允许空字段? (如下图)

<simpleType name="InvestorIDType">
    <restriction base="string">
        <pattern value="([0-9]{10})?" />
    </restriction>
</simpleType>

是的,模式值允许空字段。

原始文档成功验证了此架构(假设 tns 绑定到名称 space http://www.example.com):

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.example.com"
  targetNamespace="http://www.example.com"
  elementFormDefault="qualified">
    <xs:simpleType name="InvestorIDType">
        <xs:restriction base="xs:string">
            <xs:pattern value="([0-9]{10})?" />
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="Investor">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="InvestorId" type="InvestorIDType"/>
                <xs:element name="firstName" type="xs:string"/>
                <xs:element name="lastName" type="xs:string"/>
                <xs:element name="dateOfBirth" type="xs:date"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

但是,错误消息提到 ' ',它不是空的:它是一个包含一个 space 字符的字符串。也许错误可能来自文件中的其他地方,例如:

<tns:InvestorId> </tns:InvestorId>