0

0

XML Schema xs:import用法 如何在一个XSD中导入另一个XSD

煙雲

煙雲

发布时间:2026-02-25 03:31:31

|

994人浏览过

|

来源于php中文网

原创

xs:import仅用于导入不同targetnamespace的xsd,必须指定非空namespace和可访问的schemalocation;同命名空间合并须用xs:include,且namespace值须与被导入xsd的targetnamespace逐字符一致。

xml schema xs:import用法 如何在一个xsd中导入另一个xsd

xs:import 和 xs:include 用法混淆导致解析失败

很多人一上来就用 xs:import,结果 XML 验证器报错说“namespace not declared”或“schemaLocation is required”,其实根本没搞清它和 xs:include 的分工:xs:import 只能导入**不同 targetNamespace** 的 XSD;同命名空间的合并必须用 xs:include

常见错误现象:xsd:import 没写 namespace 属性、漏掉 schemaLocation、或试图用它加载当前文件同 namespace 的定义——这时解析器直接忽略或报错。

  • xs:import 必须带 namespace(非空字符串)和 schemaLocation(路径可相对,但需可访问)
  • 如果被导入 XSD 的 targetNamespace 为空字符串(即无命名空间),xs:import 不能导入它——得用 xs:include
  • 多个 xs:import 声明顺序无关,但所有 import 必须在 xs:schema 根元素内、其他定义(如 xs:element)之前

schemaLocation 路径写错或不可达

路径看似对了,但验证时提示 “Unable to locate imported schema” 或 “Failed to load document”,多半是 schemaLocation 没按实际部署结构写准。XSD 解析器不会自动补缀后缀或猜路径。

使用场景:开发时本地测试 vs. 生产环境部署路径不一致;IDE 内置校验器(如 Eclipse、IntelliJ)和命令行 xmllint 行为也不完全一致。

  • 路径支持相对地址,但基准是**当前 XSD 文件所在目录**,不是执行命令的当前工作目录
  • 避免用 ../common.xsd 这类上溯路径——某些工具(尤其老版本 .NET XmlSchemaSet)会拒绝解析
  • 如果目标 XSD 有 targetNamespace="http://example.com/types",那 schemaLocation 值应明确指向该文件,例如 "types.xsd",而不是 "http://example.com/types"(后者是命名空间 URI,不是路径)

命名空间前缀未声明或未绑定

即使 xs:import 成功加载了外部 XSD,你在本文件里引用它的类型时仍会报错,比如 “Cannot resolve the name 'tns:Person' to a(n) 'type definition' component”——问题出在命名空间前缀没声明或没和导入的 namespace 对上。

谱乐AI
谱乐AI

谱乐AI,集成 Suno、Udio 等顶尖AI音乐模型的一站式AI音乐生成平台。

下载

参数差异:xs:import 中的 namespace 是目标 XSD 的 targetNamespace 字符串,而你在本文件中用到的前缀(如 tns:)必须通过 xmlns:tns="http://example.com/types" 显式绑定。

  • 导入语句里的 namespace 值,必须和被导入 XSD 的 targetNamespace **逐字符一致**(包括大小写、末尾斜杠等)
  • 本文件中所有对该命名空间下类型的引用(如 type="tns:Address"),其前缀(tns)必须已在根 xs:schema 元素上用 xmlns:tns=... 声明
  • 不要复用已有前缀(如 xsxsi)绑定新命名空间,容易引发冲突

验证工具对 import 的支持程度不一

有些工具压根不下载远程 schemaLocation,或者缓存旧版、忽略本地路径——你以为导入成功了,其实只是验证器跳过了校验。

性能 / 兼容性影响:Java 的 javax.xml.validation 默认启用网络访问,但生产环境常禁用;.NET 的 XmlSchemaSet 需手动 Add() 所有依赖 XSD;xmllint --schema 则严格按路径加载,不支持 HTTP 重定向。

  • 调试时加个不存在的文件名(如 schemaLocation="bogus.xsd"),看是否报错——不报错说明工具根本没尝试加载
  • 把被导入 XSD 的 targetNamespace 改一个字母,再验证,如果没报类型找不到的错,基本确认 import 没生效
  • 跨域或内网环境慎用 HTTP 协议的 schemaLocation,优先走本地路径或预加载到 XmlSchemaSet

事情说清了就结束。最常被忽略的是:import 的 namespace 字符串必须和 targetNamespace 完全一致,连末尾有没有斜杠都不能错。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

193

2023.06.14

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

802

2023.07.24

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

617

2023.11.02

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

177

2024.02.23

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

148

2024.02.23

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

111

2025.10.10

eclipse字体放大教程
eclipse字体放大教程

本专题整合了eclipse字体放大教程,阅读专题下面的文章了解更多详细内容。

140

2025.10.10

eclipse左边栏不见了解决方法
eclipse左边栏不见了解决方法

本专题整合了eclipse左边栏相关教程,阅读专题下面的文章了解更多详细内容。

113

2025.10.15

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号