如何在XSD中查找类型声明?

时间:2017-12-23 01:56:12

标签: xml api xsd ups

我正在审核UPS Shipping API的XML,而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"/>

...                

我想知道PackageWeightType的可能值是什么,但我无法弄清楚如何回溯。 XSD的顶部是

<?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"/>

但在IF.xsd中没有什么我能看到的东西可以帮助我完成任务。

我接下来的步骤是什么?

1 个答案:

答案 0 :(得分:2)

包含PackageTypeShipConfirmRequest.xsd,版本201707)的XSD也包含PackageWeightType

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

UnitOfMeasurementType

<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>

一般来说,要找到声明:

  1. 首先在您看到其用途的XSD中搜索。
  2. included/imported XSD文件中搜索下一个,然后搜索它们 包含/导入的XSD,递归。 (通常,如果所有文件都是 在公共目录中,递归地grepping目录树 就足够了。)
  3. 如果组件位于同一名称空间中,则只需查看原始XSD和包含的XSD的传递闭包。如果组件位于不同的命名空间中,通常可以根据引用的命名空间找到XSD。