2017-08-04 48 views
1

我試圖用一個空InvestorID場發送以下XML請求,但得到一個錯誤回來的響應:在XML傳遞空值和XSD模式驗證

「模塊不符合活動的輸出模式,初始值爲「」是無效相對於簡單的類型定義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> 

回答

0

是的,模式值允許一個空字段。

原稿成功驗證根據該模式(假定tns綁定到命名空間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> 

但是,該錯誤消息提到' ',這是不空的:它是含有一個字符串空間字符。也許錯誤可能會在文件中來自其他地方,像這樣的東西:

<tns:InvestorId> </tns:InvestorId> 
+0

謝謝你,我是新來的XML/XSD,只是在需要我的地方模式將允許一個空領域的一些確認。我會研究它是否可能傳遞一個空格字符,但我沒有意識到 – Martin