欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XML——合法的文档构建XSD

程序员文章站 2022-05-30 13:16:27
...

XML——合法的文档构建XSD

前言

  我们看一下我们经常在哪里使用过XSD,我们web项目中的web.xml和spring的配置文件经常能够看到其存在,下面是spirng配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"      
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

介绍

  上一篇介绍了如何通过DTD实现xml文件的文档构建,XSD是什么呢? 它跟DTD的区别又是什么呢?
  XSD(xml schema definition)是通过xml编写的,作用是用来描述和定义XML文档结构。
  它比DTD更完善,功能更强大,并且支持扩展。XML Schema 最重要的能力之一就是对数据类型的支持。

实现XSD

编写xsd文件

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.chen.com"
           xmlns="http://www.chen.com"
           elementFormDefault="qualified">
    <!--xmlns引用命名空间 xs为前缀-->
    <!-- targetNamespace定义元素命名空间 -->
    <!-- elementFormDefault指出任何 XML文档使用该xsd的必须在schema 中声明命名空间限定 -->

    <xs:element name="root">
        <!--添加文档注释-->
        <xs:annotation>
            <xs:documentation>这是根节点</xs:documentation>
        </xs:annotation>
        <!--复合类型-->
        <xs:complexType>
            <xs:sequence><!--xsd指示器以指定的顺序声明元素-->
                <xs:element name="node1">
                    <xs:complexType>
                        <!--只有复合类型才有属性-->
                        <xs:attribute name="id" type="xs:int" use="required"/>
                    </xs:complexType>
                </xs:element>
                <xs:element name="node2">
                    <xs:simpleType>
                        <!--对值进行限定0-100-->
                        <xs:restriction base="xs:int">
                            <xs:minInclusive value="0"/>
                            <xs:maxInclusive value="100"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="node3" type="property">

                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!--公共的元素内容限定-->
    <xs:simpleType name="property">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="replace"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

编写xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns="http://www.chen.com"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.chen.com /xml/xsd/my.xsd">
    <node1 id="1"/>
    <node2>1</node2>
    <node3>2019-11-26</node3>
</root>

后言

这里讲了基本的使用,xml schema的东西还有很多,可以去菜鸟教程上继续深入