Reputation: 9
I used some tools to generate a .xsd from my .xml file. But I always get 3. xsd files as Output which reference to each other. I need just one .xsd file, that's why I started to build it up by my own. But I'm quite new to this, so I need your help.
That's my xml file:
<testxml xmlns="https://localhost:8443/ns0"
xmlns:ns7="https://localhost:8443/ns7"
xmlns:ns9="https://localhost:8443/ns9"
xmlns:ns3="https://localhost:8443/ns3">
<NotificationMessage>
<SubscriptionReference>
<ns3:Address>https://localhost:8443/</ns3:Address>
</SubscriptionReference>
<Message>
<ns9:SubmitObjectsRequest>
<ns7:RegistryObjectList>
<ns7:ExtrinsicObject>
<ns7:Classification>
<ns7:Slot name="slot1">
<ns7:ValueList>
<ns7:Value>Slot_1</ns7:Value>
</ns7:ValueList>
</ns7:Slot>
<ns7:Name>
<ns7:LocalizedString value="Classification Slot_1"/>
</ns7:Name>
</ns7:Classification>
<ns7:ExternalIdentifier>
<ns7:Name>
<ns7:LocalizedString value="ExternalIdentifier_1"/>
</ns7:Name>
</ns7:ExternalIdentifier>
</ns7:ExtrinsicObject>
</ns7:RegistryObjectList>
</ns9:SubmitObjectsRequest>
</Message>
</NotificationMessage>
</testxml>
This is the result of "my" xsd file, which I created by myself. I don't really know if I build in the three namespaces correctly. Can anybody tell me if this looks good or if there are many errors? Thank you!
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ns7="https://localhost:8443/ns7"
xmlns:ns9="https://localhost:8443/ns9"
xmlns:ns3="https://localhost:8443/ns3"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="https://localhost:8443/ns0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="testxml">
<xs:complexType>
<xs:sequence>
<xs:element name="NotificationMessage">
<xs:complexType>
<xs:sequence>
<xs:element name="SubscriptionReference">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns3:Address" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns9:SubmitObjectsRequest">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns9:RegistryObjectList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:ExtrinsicObject">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Classification">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Slot">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:ValueList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Value"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name"
type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
<xs:element ref="ns7:Name">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:LocalizedString">
<xs:complexType>
<xs:attribute name="value"
type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="ns7:ExternalIdentifier">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:Name">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns7:LocalizedString">
<xs:complexType>
<xs:attribute name="value"
type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Upvotes: 0
Views: 172
Reputation: 11
I use http://www.utilityarena.com/xsdBuilder?initial for converting XMl's to XSD as it has a graphical XSD editor which I have not seen anywhere in free tools. Also It allows you to modify the occurrence etc graphically once your XML is rendered as a graphical XSD tree.
Here is the XSD Output It gave me which is perfect
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://localhost:8443/ns0" xmlns:ns7="https://localhost:8443/ns7" xmlns:ns9="https://localhost:8443/ns9" xmlns:ns3="https://localhost:8443/ns3">
<xsd:element id="root" name="testxml">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_12" name="NotificationMessage" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_13" name="SubscriptionReference" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_14" name="Address" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element id="xsdEl_15" name="Message" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_16" name="SubmitObjectsRequest" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_17" name="RegistryObjectList" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_18" name="ExtrinsicObject" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_19" name="Classification" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_20" name="Slot" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_22" name="ValueList" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_23" name="Value" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute id="xsdEl_21" name="name" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element id="xsdEl_24" name="Name" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_25" name="LocalizedString" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element id="xsdEl_26" name="ExternalIdentifier" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_27" name="Name" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element id="xsdEl_28" name="LocalizedString" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Regards Rajeev.
Upvotes: 0
Reputation: 11527
Opening your schema up in Visual Studio 2013 with the BizTalk SDK installed I get a warning
Running the Validate Schema I get two additional warnings
warning BEC999: Namespace 'https://localhost:8443/ns3' is not available to be referenced in this schema.
warning BEC999: Namespace 'https://localhost:8443/ns9' is not available to be referenced in this schema.
error BEC3001: If ref is present, all of , , , , , nillable, default, fixed, form, block, and type must be absent.
Basically the error is telling you that if you have a ref="something" you should then not define it under that element as a complex, but later on as a type.
But I think what you are trying to do is just not supported (see the possible duplicate). You usually define things in a different namespace in a different XSD file as per the three files your tool generated, I got the same result when I generated the schemas from your sample XML, so the output of your tool is correct.
Upvotes: 1