xsd-parser-rs
xsd-parser-rs copied to clipboard
Generate code from all related XSD's at once
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
.
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>
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"/>