2014-07-24 86 views
0

我一個標準的架構格式的意外列表如下XML驗證問題與元素

<?xml version="1.0" encoding="utf-16"?> 
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://HR_XML_BizTalk_Project_Schemas.Schema1" targetNamespace="http://HR_XML_BizTalk_Project_Schemas.Schema1" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="UserDetails"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Any"> 
       <xs:complexType /> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

但我的合作伙伴發送XML在下面的格式。

<ns0:Root xmlns:ns0="http://HR_XML_BizTalk_Project_Schemas.Schema1"> 
    <UserDetails> 
    <ID>ID_0</ID> 
    <Name>Name_0</Name> 
    <Account>Account_0</Account> 
    <Amount>Amount_0</Amount> 
    </UserDetails> 
</ns0:Root> 

我收到錯誤的「元素「的UserDetails具有無效子元素‘ID’預期可能元素的列表:‘任何’」

按我uderstanding,我必須告訴我的合作伙伴不要在UserDetails Record下發送任何數據。
否則,我必須刪除節點,如果在驗證之前UserDetails記錄下存在任何內容。

是否有其他方法可以解決此問題?

回答

2
<xs:element name="Any"> 

這一下名爲Any 元素你是什麼意思,如果可能的任何元素:

<xs:any> 
1

您是否確實打算針對UserDetails的內容要求名爲Any的元素?

相反地,如果您希望允許任何元素序列UserDetails下,改變你的XSD以下幾點:

<?xml version="1.0" encoding="utf-16"?> 
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" 
      xmlns="http://HR_XML_BizTalk_Project_Schemas.Schema1" 
      targetNamespace="http://HR_XML_BizTalk_Project_Schemas.Schema1" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="UserDetails"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:any maxOccurs="unbounded"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

那麼你的伴侶的XML將是有效的。

但是,請注意,當您使用xsd:any時,您沒有很好地傳達您的界面的要求。除非你真的不在乎UserDetails下的內容,否則更好的是陳述你的服務的實際要求。

0

如果我理解你的XSD正確預計XML這樣的:

<ns0:Root xmlns:ns0="http://HR_XML_BizTalk_Project_Schemas.Schema1"> 
    <UserDetails> 
    <Any></Any> 
    </UserDetails> 
</ns0:Root> 

我我不確定你想要檢查什麼,但你的驗證器似乎行爲正確。請解釋你想要做什麼,並確保sombody將能夠幫助你。