2017-12-23 9 views
1

Ich bin der Überprüfung der XML für die UPS Versand API und die XSD enthält diesen Block:Wie findet man eine Typdeklaration in einer XSD?

<xsd:complexType name="PackageType"> 
    <xsd:sequence> 
     <xsd:element name="Description" type="xsd:string" minOccurs="0"/> 
     <xsd:element name="PackagingType" type="PackagingTypeType" minOccurs="0"/> 
     <xsd:element name="Dimensions" type="DimensionsType" minOccurs="0"/> 
     <xsd:element name="DimWeight" type="PackageWeightType" minOccurs="0"/> 
     <xsd:element name="PackageWeight" type="PackageWeightType" minOccurs="0"/> 
     <xsd:element name="LargePackageIndicator" type="xsd:string" minOccurs="0"/> 

...

Ich mag würde, um zu sehen, was die möglichen Werte für PackageWeightType sind , aber ich kann nicht herausfinden, wie man zurückgeht. Die Oberseite des XSD ist

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<xsd:schema xmlns:ups="http://www.ups.com/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="201707"> 
    <xsd:include schemaLocation="IF.xsd"/> 

aber es gibt nichts in IF.xsd, dass ich sehen kann, dass mir in meiner Suche helfen würde.

Was sind meine nächsten Schritte?

Antwort

2

Das gleiche XSD, die PackageType (ShipConfirmRequest.xsd, Version 201707) beherbergt enthält auch PackageWeightType:

<xsd:complexType name="PackageWeightType"> 
    <xsd:sequence> 
     <xsd:element name="UnitOfMeasurement" type="UnitOfMeasurementType"/> 
     <xsd:element name="Weight" type="xsd:string"/> 
    </xsd:sequence> 
</xsd:complexType> 

und UnitOfMeasurementType auch:

<xsd:complexType name="UnitOfMeasurementType"> 
    <xsd:sequence> 
     <xsd:element name="Code" type="xsd:string"/> 
     <xsd:element name="Description" type="xsd:string" minOccurs="0"/> 
    </xsd:sequence> 
</xsd:complexType> 

Allgemeinen eine Erklärung zu finden:

  1. Suchen Sie zuerst in der XSD, in der Sie seine u sehen se.
  2. Suche weiter in der included/imported XSD-Dateien, und ihre enthalten/importiert XSDs, rekursiv. (In der Regel, wenn alle Dateien in einem gemeinsamen Verzeichnis befinden, greppen der Verzeichnisbaum rekursiv genügen.)

Wenn die Komponente im gleichen Namensraum ist, müssen Sie nur schauen in der ursprünglichen XSD und die transitiven Hülle der mitgelieferten XSDs. Wenn sich die Komponente in einem anderen Namespace befindet, können Sie das XSD normalerweise anhand des referenzierten Namespace finden.

+0

Wie kann ich die möglichen Werte daraus ableiten, wenn 'Code' nur eine Zeichenkette ist? (Wie kann ich wissen, ob "OZS" ein möglicher Code ist, zum Beispiel?) –

+0

Wenn Code als xs: string deklariert ist, legt das Schema keine Beschränkungen für seinen Wert fest. Es kann Einschränkungen geben, die durch einen anderen Mechanismus auferlegt werden (z. B. Validierung, die auf Benutzereingabefelder in einem Formular angewendet wird), aber wenn das Schema die Beschränkungen nicht definiert, dann ist es sinnlos, sie im Schema zu suchen. –

Verwandte Themen