xml约束及解析

内部dtd约束

<?xml version="1.0" encoding="UTF-8" ?> <!-- 声明xml文档头 -->
<!-- 内部DTD约束 -->
<!--
    !DOCTYPE: 固定语法 文档类型
    students: 自定义根标签名字
    []: 存放子标签
    ELEMENT: 元素(标签)
       #PCDATA:元素是字符串类型#PCDATA(不能再有子元素,也不能为空)
    DTD中标签的顺序就是日后使用的顺序, 不允许改变
-->
<!DOCTYPE students[
        <!-- 标签 -->
        <!--
            (student): 只能有一对student标签
            (student?): 0~1(student+): 至少1(student*): 0~多次
        -->
        <!ELEMENT students (student*)>
        <!ELEMENT student (name, age, sex)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT sex (#PCDATA)>
        <!-- 属性 -->
        <!--
            ATTLIST: 属性
            student: 哪个标签指定属性
            id: 指定的属性名
            CDATA: 属性控制
                #REQUIRED: 必须有
                #FIXED "值": 固定值
                #IMPLIED: 可有可无
        -->
        <!ATTLIST student id CDATA #REQUIRED>
        <!ATTLIST name class CDATA #FIXED "qwe">
        <!ATTLIST age test CDATA #IMPLIED>
        ]>

<students>
  <student id="aa">
    <name class="qwe">张三</name>
    <age test="aaa">18</age>
    <sex></sex>
  </student>
</students>

外部dtd

外部DTD是我们自己编写的DTD文件。通过引入方式引入DTD。

在外部创建一个xxx.dtd文件,文件内容和内部dtd [ ] 中的内容相同。

<!ELEMENT students (student*)>
<!ELEMENT student (name, age, sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED>
<!ATTLIST name class CDATA #FIXED "qwe">
<!ATTLIST age test CDATA #IMPLIED>```

==xml引入外部dtd文件==
```java
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "aa.dtd">
<students>
  <student id="aa" >
    <name class="qwe">张三</name>
    <age test="aaa">18</age>
    <sex></sex>
  </student>
</students>

xsd约束

<!--
  声明xsd约束
 		aa: 自定义名称(随意)
  	schema: 约束(固定)
-->
<aa:schema xmlns:aa="http://www.w3.org/2001/XMLSchema">
  <!--
        aa:element: 标签
        name: 标签名
    -->
  <aa:element name="students">
    <!-- 必须设置为复杂类型 -->
    <aa:complexType>
      <!-- 在此标签中规范了 标签的顺序 -->
      <aa:sequence>
        <!-- 引用其他标签 --
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值