我有一个XML文件,它有一个带有XSD的名称空间,定义为:
<RootElement xmlns:xsd="http://www.w3.org/xyz" xmlns:xsi="http://www.w3.org/xyz/XMLSchema-instance">
从供应商接收XML,在继续处理之前,我必须执行模式检查。模式检查是用SSIS
中的XML Task
组件完成的。在XML Task
中,我定义了XML
文件的位置,以及XSD
的位置。
如果XSD
的本地版本与XML名称空间中通过xmlns:xsd="http://www.w3.org/xyz"
引用的版本不同,SSIS
XML Task
是否会因为这种差异而导致模式检查失败?换句话说,哪一个有优先检查权;是本地XSD文件,还是名称空间URI中包含的文件?
SSISXML源适配器没有对XSD进行任何验证。
- SSIS使用自己的本地XSD文件来描述结构、数据类型,以及它们到输入XML的SSIS数据类型的映射。
- 输入XML文件中引用的XSD文件具有完全不同的角色。SSIS XML源适配器没有使用它。
SSIS XML源适配器用于将分层XML分解为矩形/关系格式。适配器需要自己的XSD文件。
SSIS XML任务,操作Validation,将使用作为任务参数提供的XSD文件。它应该是文件系统上的XSD文件。SSIS运行时服务器不必通过HTTP协议访问Internet。实际的名称空间值只是为了惟一性。还有一个附加的可选模式位置属性用于指定XSD位置:xsi:schemaLocation="whatever.xsd"