使用<any> </any>,该架构的有效样本xml是什么

时间:2013-04-18 16:46:23

标签: xml xsd schema

我从供应商那里收到了这个架构,并且我试图弄清楚它内部的内容。

<schema targetNamespace="http://abc.com:9080/product/services/12WebService/types/" xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
    <element name="Message">
        <complexType>
            <sequence>
                <any minOccurs="0"/>
            </sequence>
        </complexType>
    </element>
</schema>

我可以在下面的示例中合法地放入<types:Message>元素。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:types="http://abc.com:9080/product/services/12WebService/types/">
   <soapenv:Header/>
   <soapenv:Body>
      <types:Message>
           <!-- What can go here -->
      </types:Message>
   </soapenv:Body>
</soapenv:Envelope>

1 个答案:

答案 0 :(得分:1)

message内,您可以放置​​一个任意元素 - 即任何名称空间中具有任何名称的元素:

<Message xmlns="http://abc.com:9080/product/services/12WebService/types/">
  <something xmlns="some namespace" . . more attributes here . . .>
     . . . more sub-elements here . . 
  </something>
</Message>

message也有效(由于minOccurs="0"):

<Message xmlns="http://abc.com:9080/product/services/12WebService/types/">
</Message>

你不能放在message内的是多个元素 - 这是无效的:

<Message xmlns="http://abc.com:9080/product/services/12WebService/types/">
  <something1 xmlns="some namespace">
  </something1>
  <something2 xmlns="some namespace">
  </something2>
</Message>

请注意,因为未指定processContents的{​​{1}}属性,默认为any - 这意味着验证失败如果没有strict的架构 - 或者some namespace元素与该架构不匹配。

请参阅something here的文档。