XML Schema属性名称相同但属性值不同?

问题描述:

我有服务,有如下格式的请求的方法:在提供XML Schema属性名称相同但属性值不同?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"   xmlns:com="http://com.org.srv"> 
<soapenv:Header/> 
    <soapenv:Body> 
    <com:methodName> 
    <com:someParam>value</com:someParam> 
    <com:param name="firstPoint"> 
     <com:param name="code">value</com:param> 
    </com:param> 
    <com:param name="firstPointDesc"> 
     <com:param name="pName">value</com:param> 
     <com:param name="pLo">value</com:param> 
    </com:param> 
    <com:param name="endPoint"> 
     <com:param name="code">value</com:param> 
    </com:param> 
    <com:param name="endPointDesc"> 
     <com:param name="pName">value</com:param> 
     <com:param name="pLo">value</com:param> 
    </com:param> 
    <com:param name="bunch"> 
     <com:param name="temperature">val</com:param> 
     <com:param name="humidity">val</com:param> 
     <com:param name="pressure">val</com:param> 
    </com:param> 
    </com:methodName> 
</soapenv:Body> 
</soapenv:Envelope> 

此信息,是,我需要来形容它在XSD文件中蚀。 我曾尝试:

<element name="methodNameRequest"> 
    <complexType> 
     <sequence maxOccurs="1" minOccurs="1"> 
      <element name="someParam" type="string" maxOccurs="1" 
       minOccurs="1"> 
      </element> 
      <element name="deviceId" type="string"></element> 
      <element name="param" maxOccurs="1" minOccurs="1"> 
       <complexType> 
        <sequence> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="code" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
        </sequence> 
        <attribute name="name" type="string" 
         default="firstPoint" /> 
       </complexType> 
      </element> 
      <element name="params" maxOccurs="1" minOccurs="1"> 
       <complexType> 
        <sequence> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="pName" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="pLo" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
        </sequence> 
        <attribute name="name" type="string" 
         default="firstPointDesc" /> 
       </complexType> 
      </element> 
      <element name="params" maxOccurs="1" minOccurs="1"> 
       <complexType> 
        <sequence> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="code" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
        </sequence> 
        <attribute name="name" type="string" 
         default="endPoint" /> 
       </complexType> 
      </element> 
      <element name="params" maxOccurs="1" minOccurs="1"> 
       <complexType> 
        <sequence> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="pName" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="pLo" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
        </sequence> 
        <attribute name="name" type="string" 
         default="endPointDesc" /> 
       </complexType> 
      </element> 
      <element name="param" maxOccurs="1" minOccurs="1"> 
       <complexType> 
        <sequence> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="temperature" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="humidity" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
         <element name="param" maxOccurs="1" 
          minOccurs="1"> 
          <complexType> 
           <simpleContent> 
            <extension base="string"> 
             <attribute name="name" 
              type="string" default="pressure" /> 
            </extension> 
           </simpleContent> 
          </complexType> 
         </element> 
        </sequence> 
        <attribute name="name" type="string" 
         default="bunch" /> 
       </complexType> 
      </element> 
.... 

,但没有成功:Multiple elements with name 'param', with different types, appear in the model group.报道蚀。

任何人都可以提供这个或类似结构的描述的有效例子xsd? 我与wsdl模式和服务完全不同。

非常感谢。

XML词汇表的设计者似乎一直致力于使用普通的XML工具使XML无法验证;他们可能已经成功了。为了掩饰他们邪恶的计划,最好的办法可能是将他们的XML映射成同构的,但更容易验证的XML(例如,使这些属性值成为元素名称),或者查看XSD 1.1断言并处理XPath 2.0技能。