XSD和SSIS:查找全局声明的复杂类型时出错

时间:2019-06-19 14:19:25

标签: xml ssis xsd

我已经完成了为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。

非常感谢大家花时间阅读和/或帮助我解决这个问题!

1 个答案:

答案 0 :(得分:2)

这是一个名称空间问题。全局类型位于包含的架构文档的targetNamespace中,而type="Bus"是对没有名称空间的类型的引用。它必须是type="s:Bus",其中前缀s绑定到URI urn:Search