我已经完成了为XML编写XSD的工作,当我开始在SSIS中映射它时,我遇到一个错误,说:“设置映射时出错。类型'[我的全局声明的复杂类型]'为没有声明。”。
因此,我尝试寻找适当的方法来声明可重复使用的全局复杂类型,例如地址块。我将复杂类型块移到了不同的位置,例如直接在架构节点的子节点上,紧接在我要引用的那个元素节点的元素节点之前等等。但是,所有这些仍然导致相同的错误。
这是我的XSD的示例格式:
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:Search" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="RESPONSE">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ABC">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Bus" type="Bus" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Bus">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="BusType" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="BusSubType" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Date" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" name="Franchise" type="xs:boolean" />
<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="OperatingSince" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
我期望使用我制作的XSD格式正确映射XML。
非常感谢大家花时间阅读和/或帮助我解决这个问题!
答案 0 :(得分:2)
这是一个名称空间问题。全局类型位于包含的架构文档的targetNamespace中,而type="Bus"
是对没有名称空间的类型的引用。它必须是type="s:Bus"
,其中前缀s
绑定到URI urn:Search