如何在XSD中查找类型声明?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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文件中搜索下一个及其包含/导入的XSD,递归搜索。 (通常,如果所有文件都在公共目录中,则递归地对目录树进行grepping就足够了。)
如果组件位于同一名称空间中,则只需查看原始XSD和包含的XSD的传递闭包。如果组件位于不同的命名空间中,通常可以根据引用的命名空间找到XSD。
以上是关于如何在XSD中查找类型声明?的主要内容,如果未能解决你的问题,请参考以下文章