XML Schema 安装使用教程

一、XML Schema 简介

XML Schema(XSD,全称 XML Schema Definition)是用于定义 XML 文档结构、数据类型和数据约束的标准方式。它比 DTD 更加强大,支持数据类型、默认值、命名空间等,是企业级 XML 应用推荐的验证方式。


二、XSD 与 DTD 的对比

特性 DTD XSD (XML Schema)
语法格式 SGML 风格 XML 本身
数据类型支持 强类型(string、int 等)
命名空间支持 不支持 支持
可扩展性 较差 很好
可读性 一般 较好(XML 结构)

三、XSD 应用场景

  • 校验 XML 配置文件格式
  • 定义 Web 服务数据结构(如 SOAP)
  • 系统间数据交换(如订单、票据、接口返回值)
  • 配合 JAXB/JAXP 等框架生成 Java 实体类

四、编辑和验证工具

工具 功能
VSCode + XML 插件 支持 XSD 自动补全和验证
Oxygen XML Editor 商业级 XML/XSD 编辑器
XMLSpy 专业 XML/XSD 建模工具
xmllint 命令行验证工具

五、XSD 安装与配置(以 VSCode 为例)

  1. 安装 VSCode:https://code.visualstudio.com/
  2. 安装插件:
    • XML Language Support
    • XML Tools
  3. settings.json 中配置 XSD schema path(可选)
  4. 保存 XML 文件时自动触发校验

六、XML Schema 示例

示例 XML (person.xml)
xml 复制代码
<?xml version="1.0"?>
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="person.xsd">
  <name>小奇</name>
  <age>25</age>
</person>
示例 XSD (person.xsd)
xml 复制代码
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="person">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string"/>
        <xs:element name="age" type="xs:integer"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

七、常用数据类型

  • xs:string
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:decimal
  • xs:IDxs:IDREF

八、常用约束示例

xml 复制代码
<xs:element name="phone">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="\d{11}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>
xml 复制代码
<xs:element name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="男"/>
      <xs:enumeration value="女"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

九、命名空间支持

xml 复制代码
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.example.com/person"
           xmlns="http://www.example.com/person"
           elementFormDefault="qualified">

十、Java 中使用 XSD 校验

java 复制代码
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File("person.xsd"));

Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File("person.xml")));

十一、命令行校验

使用 xmllint 工具:

bash 复制代码
xmllint --noout --schema person.xsd person.xml

十二、常见问题

Q1: 报错"Element not allowed here"?

  • 元素顺序与定义不一致;
  • 子元素缺失;
  • 命名空间未匹配或未声明。

Q2: VSCode 不识别 XSD?

  • 确保安装 XML 插件;
  • 检查文件引用路径是否正确;
  • 是否缺少 xsi:noNamespaceSchemaLocation

十三、学习资源推荐


本文由"小奇Java面试"原创发布,转载请注明出处。

可以搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

相关推荐
ddfa123415 小时前
XML 笔记
xml·服务器
一勺菠萝丶1 天前
Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南
xml·spring boot·mybatis
李少兄13 天前
解决OSS存储桶未创建导致的XML错误
xml·开发语言·python
阳光开朗_大男孩儿13 天前
XML读取和设置例子
xml·java·数据库
悟能不能悟15 天前
在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
xml·java·mybatis
慌糖15 天前
XML重复查询一条Sql语句??怎么解决
xml·数据库·sql
胖大和尚15 天前
在 XML 节点名称前添加前缀
xml
casual_clover16 天前
Android 中 解析 XML 字符串的几种方式
android·xml
SuperherRo17 天前
Web攻防-XSS跨站&文件类型&功能逻辑&SVG&PDF&SWF&HTML&XML&PMessage&LocalStorage
xml·pdf·html·svg·localstorage·swf·pmessage