日期:2014-05-18  浏览次数:20783 次

xml 命名空间的问题,急,高手进!
我们的xml文件的根节点中:
<IndividualAnnex   xmlns= "https://XXXXXX "   xmlns:xsi= "http://XXXXXXX "   xsi:schemaLocation= "https://YYYYYYYY "/>

其中xsi:schemaLocation这个搞不懂,到底是节点的命名空间声明还是属性的命名空间前缀,

我在jDom里把schemaLocation定义为属性,把xsi定位为属性的命名空间前缀,但是往节点上增加该属性时报xsi命名空间已定义,把xsi:schemaLocation都定义为属性又报属性名不能带 ': ',晕了~~

各位高手知道是怎么回事么?




------解决方案--------------------
schemaLocation 属性是在 XML 架构实例命名空间 http://www.w3.org/2001/XMLSchema-instance(通常与前缀 xsi 关联)中定义的,它仅适用于 XML 实例文档,而不适用于 XML 架构文档。它区别于在 XML 架构命名空间 http://www.w3.org/2001/XMLSchema 中定义的 schemaLocation 属性。

xsi:schemaLocation 属性提供一种方法来查找在 XML 实例文档中定义的命名空间的 XML 架构定义。它的值是用空白分隔的统一资源标识符 (URI) 对的列表,其中的每一对 URI 都依次包含一个命名空间以及该命名空间的 XML 架构定义(通常为 .xsd 文件)的位置。

当将 XML 文档反序列化为对象时,XmlSerializer 类忽略 xsi:schemaLocation 属性。但是,在验证 XML 文档时,XmlValidatingReader 类可以使用该属性值来获取 XML 架构定义。