xsd-parser-rs icon indicating copy to clipboard operation
xsd-parser-rs copied to clipboard

Generate code from all related XSD's at once

Open victor-soloviev opened this issue 5 years ago • 2 comments

As onvif-rs (https://github.com/lumeohq/onvif-rs) user I want all types from onvif-rs::schema fully comply with all XSD's used by onvif.xsd.

onvif.xsd dependency graph is a bit branchy and we have to reflect it in onvif_rs::schema module. To accomplish this we need to run xsd-parser-rs on all XSD's reachable from onvif.xsd and put the generated code into module structure of onvif-rs.

victor-soloviev avatar Feb 27 '20 12:02 victor-soloviev

b-2.xsd: 
targetNamespace="http://docs.oasis-open.org/wsn/b-2" 
xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"

<xsd:complexType name="PauseFailedFaultType">
 <xsd:complexContent>
   <xsd:extension base="wsrf-bf:BaseFaultType"/>
 </xsd:complexContent>
</xsd:complexType>

LeonidKrutovsky avatar Apr 06 '20 17:04 LeonidKrutovsky

ref from metadatastream.xsd

<xs:complexType name="EventStream">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:element ref="wsnt:NotificationMessage"/>
     <xs:element name="Extension" type="tt:EventStreamExtension"/>
     <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>  <!-- reserved for ONVIF -->
  </xs:choice>
</xs:complexType>

to b-2.xsd

<!-- ================== Message Helper Types  ===================== -->
  <xsd:complexType name="NotificationMessageHolderType" >
    <xsd:sequence>
      <xsd:element ref="wsnt:SubscriptionReference" 
                   minOccurs="0" maxOccurs="1" />
      <xsd:element ref="wsnt:Topic" 
                   minOccurs="0" maxOccurs="1" />
      <xsd:element ref="wsnt:ProducerReference" 
                   minOccurs="0" maxOccurs="1" />
      <xsd:element name="Message">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:any namespace="##any" processContents="lax"
                     minOccurs="1" maxOccurs="1"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="NotificationMessage"
               type="wsnt:NotificationMessageHolderType"/>

LeonidKrutovsky avatar Apr 06 '20 17:04 LeonidKrutovsky