属性'MaxOccurs'不能出现在元素'element'中。“在RAML defination中

时间:2017-03-23 03:55:16

标签: xml mule raml

我在定义Raml for Xml输入时遇到此错误但是我得到了这个错误,我已经知道这个问题是针对xsd的,但我在Raml中没有xsd

任何人都可以建议如何在xml设计中定义数组的解决方案 因为我已经通过了下面的Url

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"
              }

2 个答案:

答案 0 :(得分: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"
              }

答案 1 :(得分: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">