xml文件:
<应聘信息> <应聘者> <姓名> 张三 </姓名> <硕士> 湖南大学计算机理学硕士 </硕士> <奖励> 获得计算机竞赛一等奖一次 </奖励> <奖励> 获得三次一等奖学金 </奖励> <处分> 被警告处分一次 </处分> <性别> 男 </性别> </应聘者> <应聘者> <姓名> 李翠花 </姓名> <博士> 武汉大学自动化专业工学博士 </博士> <奖励> 获得五次一等奖学金 </奖励> <性别> 女 </性别> </应聘者> <应聘者> <姓名> 王娟娟 </姓名> <本科> 吉林大学中文系文学学士 </本科> <性别> 女 </性别> </应聘者> </应聘信息>编写的外部dtd:在<xml>标题后 正式xml内容之前 添加外部dtd引用<!DOCTYPE 根元素 SYSTEM "外部dtd文件名.dtd" >
具体内容:
<?
xml version
="1.0"
encoding
="UTF-8"
?>
<!DOCTYPE 应聘信息 SYSTEM "second.dtd"> <应聘信息> <应聘者> <姓名> 张三 </姓名> <硕士> 湖南大学计算机理学硕士 </硕士> <奖励> 获得计算机竞赛一等奖一次 </奖励> <奖励> 获得三次一等奖学金 </奖励> <处分> 被警告处分一次 </处分> <性别> 男 </性别> </应聘者> <应聘者> <姓名> 李翠花 </姓名> <博士> 武汉大学自动化专业工学博士 </博士> <奖励> 获得五次一等奖学金 </奖励> <性别> 女 </性别> </应聘者> <应聘者> <姓名> 王娟娟 </姓名> <本科> 吉林大学中文系文学学士 </本科> <性别> 女 </性别> </应聘者> </应聘信息>
外部dtd文档:
<!ELEMENT 应聘信息 (应聘者+)> <!ELEMENT 应聘者 (姓名|性别|硕士|博士|本科|奖励|处分)*> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT 性别 (#PCDATA)> <!ELEMENT 硕士 (#PCDATA)> <!ELEMENT 博士 (#PCDATA)> <!ELEMENT 本科 (#PCDATA)> <!ELEMENT 奖励 (#PCDATA)> <!ELEMENT 处分 (#PCDATA)>
对于内部dtd文件:在<xml>标题后 正式xml内容之前 添加内部dtd内容
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE 应聘信息 [ <!ELEMENT 应聘信息 (应聘者+)> <!ELEMENT 应聘者 (姓名,硕士?,博士?,本科?,奖励*,处分*,性别)*> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT 硕士 (#PCDATA)> <!ELEMENT 博士 (#PCDATA)> <!ELEMENT 本科 (#PCDATA)> <!ELEMENT 奖励 (#PCDATA)> <!ELEMENT 处分 (#PCDATA)> <!ELEMENT 性别 (#PCDATA)> ]> <应聘信息> <应聘者> <姓名> 张三 </姓名> <硕士> 湖南大学计算机理学硕士 </硕士> <奖励> 获得计算机竞赛一等奖一次 </奖励> <奖励> 获得三次一等奖学金 </奖励> <处分> 被警告处分一次 </处分> <性别> 男 </性别> </应聘者> <应聘者> <姓名>李翠花</姓名> <博士>武汉大学自动化专业工学博士</博士> <奖励>获得五次一等奖学金</奖励> <性别>女</性别> <姓名>王娟娟</姓名> <本科>吉林大学中文系文学学士</本科> <性别>女</性别> </应聘者> </应聘信息>
对于java语言测试引用dtd内容xml文档是否有效(外部dtd与内部dtd均适用):
public class A { public static void main(String[] args) { DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=null; try { factory.setValidating(true); builder=factory.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } try { builder.parse("E:\\IntelliJ IDEA\\jsp\\src\\main\\webapp\\Second\\second.xml"); System.out.println("xml文档经验证有效!"); } catch (SAXException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
测试xml有效结果:
若dtd编写不正确则结果会抛出异常。