2017-03-23 129 views
0

我得到這個錯誤,同時定義Raml爲Xml輸入但是我得到這個錯誤,我已經知道這個問題是回答爲xsd,但我不'噸有XSD在腎錯構瘤屬性'MaxOccurs'不能出現在元素'元素'。「在RAML定義

任何人都可以提出如何定義的XML設計 陣列的解決方案,因爲我已經通過以下網址

https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/#array-type

輸入了:

<numbers> 
    <value>3</value> 
    <value>2</value> 
    <value>1</value> 
</numbers> 


#%RAML 1.0 
title: Claim Request 
version: 0.1 
baseUri: http://localhost:8767/claim 
mediaType: [ application/xml ] 
protocols: HTTP 
types: 
    value: 
    type: string 
    numbers: 
    type: value[] 
    uniqueItems: true 
/claimDemo: 
    post: 
    body: 
    type : numbers 
    responses: 
    200: 
    body: 
     application/json: 
     example: | 
       { 
       "message" : "Hello World" 
       } 

輸出:

Exception stack trace: 
org.mule.module.apikit.exception.BadRequestException: Error validating XML.  Error: s4s-att-not-allowed: Attribute 'maxOccurs' cannot appear in element 'element'. 
at org.mule.module.apikit.HttpRestRequest.validateSchemaV2(HttpRestRequest.java:539) 
at org.mule.module.apikit.HttpRestRequest.validateBody(HttpRestRequest.java:379) 
at org.mule.module.apikit.HttpRestRequest.negotiateInputRepresentation(HttpRestRequest.java:353) 
at org.mule.module.apikit.HttpRestRequest.validate(HttpRestRequest.java:125) 
at org.mule.module.apikit.AbstractRouter.processRouterRequest(AbstractRouter.java:205) 
+0

嗯,有一個XSD文件的地方,不是一個有效的模式,我想你的第一個任務是找到它。 –

回答

0

按在文檔:https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/#xml-serialization-of-type-instances可以使用wrapped選項,這將讓你避免你正面臨着的問題定義在這裏。

見下

#%RAML 1.0 
title: Claim Request 
version: 0.1 
baseUri: http://localhost:8767/claim 
mediaType: [ application/xml ] 
protocols: HTTP 
types: 
    value: string 
    numbers: 
    type: value[] 
    xml: 
     wrapped: true 

/claimDemo: 
    post: 
    body: 
    type: numbers 
    responses: 
    200: 
    body: 
     application/json: 
     example: | 
       { 
       "message" : "Hello World" 
       } 

的例子作爲附加側面說明,以證明其中的錯誤是從你最初的例子來,如果你刪除的數組定義,即:改變:

numbers: 
    type: value[] 
    uniqueItems: true 

numbers: 
    type: value 

然後,你將能夠使用輸入如下:

<numbers value="a"> 
+0

嗨馬特,整個想法是要確保值是一個數字不是一個單一的值 – Zahid

+0

響應的第一部分演示瞭如何實現類似於完整的示例之後的東西。第二部分演示了一個替代方案,它演示了原始樣本不起作用的原因。 –

+0

謝謝你的解決方案 – Zahid

0

嘗試是這樣的:

#%RAML 1.0 
title: Claim Request 
version: 0.1 
baseUri: http://localhost:8767/claim 
mediaType: [ application/xml ] 
protocols: HTTP 
types: 
    value: 
    type: string 
    numbers: 
    type: value[] 
    maxItems: 3 
    uniqueItems: true 
/claimDemo: 
    post: 
    body: 
    type : numbers 
    responses: 
    200: 
    body: 
     application/xml: 
     example: | 
       { 
       "message" : "Hello World" 
       } 
+0

嗨拉斐爾我仍然收到相同的錯誤 消息:錯誤驗證XML。錯誤:s4s-att-not-allowed:屬性'maxOccurs'不能出現在元素'element'中。 Payload:[email protected] Element:/ arrayApi-main/processors/0 @ ramlwitharrays:arrayApi.xml:10(APIkit路由器) --------------- -------------------------------------------------- --------------- 錯誤驗證XML。錯誤:s4s-att-not-allowed:屬性'maxOccurs'不能出現在元素'element'中。 – Zahid

相關問題