如何在 XSD 中找到类型声明?
How to find a type declaration in an XSD?
我正在查看 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 中没有任何内容可以帮助我完成任务。
我的下一步是什么?
与 PackageType
(ShipConfirmRequest.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>
一般要找声明:
- 首先在XSD中搜索它的用途。
- 在 included/imported XSD 个文件中搜索下一个,及其
included/imported XSDs,递归。 (通常,如果所有文件都
在一个公共目录中,递归地搜索目录树将
够了。)
如果组件在同一命名空间中,您只需查看原始 XSD 和包含的 XSD 的传递闭包。如果组件在不同的命名空间中,您通常可以根据引用的命名空间找到 XSD。
我正在查看 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 中没有任何内容可以帮助我完成任务。
我的下一步是什么?
与 PackageType
(ShipConfirmRequest.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>
一般要找声明:
- 首先在XSD中搜索它的用途。
- 在 included/imported XSD 个文件中搜索下一个,及其 included/imported XSDs,递归。 (通常,如果所有文件都 在一个公共目录中,递归地搜索目录树将 够了。)
如果组件在同一命名空间中,您只需查看原始 XSD 和包含的 XSD 的传递闭包。如果组件在不同的命名空间中,您通常可以根据引用的命名空间找到 XSD。