发布时间:2025-12-10 04:05:10 浏览次数:8
验证xml格式DTD验证
您可以使用DTD来定义XML文档的合法构件。DTD可以写在文档内部,也可以写在单独的文档中。
文档内部
& lt?xml版本= & # 34;1.0"?& gt& lt!DOCTYPE注释[& lt;!元素注释(收件人、发件人、正文)>& lt!元素to (#PCDATA)>& lt!元素来自(#PCDATA)>& lt!元素体(#PCDATA)>]& gt;& lt注意& gt& ltto & gtll & lt/to & gt;& lt来自& gtzh & lt/from & gt;& ltbody & gt你好& lt/body & gt;& lt/note & gt;DTD包含在上述格式的声明中。
& lt!DOCTYPE根元素[元素声明]>:外部文档如果DTD位于XML源文件之外,则应该将其封装在DTD文档中,并以XML声明。
& lt!DOCTYPE根元素系统& # 34;文件名& # 34;& gtDTD元素声明的语法格式
& lt!元素名称元素内容描述>:元素内容描述的格式
#PCDATA
关键字#PCDATA的描述元素包含字符数据,内容只能是字符数据。
示例:
& lt?xml版本= & # 34;1.0"?& gt& lt!文档类型名称[& lt;!元素名称(#PCDATA)>]& gt;& lt名称& gt张。子元素显示一个元素包含子元素。当一个元素只包含子元素而不包含字符数据时,意味着该元素类型有一个元素类型。当声明这种类型的元素时,对其内容的约束由内容模型指定(内容模型是一种简单的语法,它决定子元素的类型和顺序)。
示例:
& lt?xml版本= & # 34;1.0"?& gt& lt!DOCTYPE注释[& lt;!元素注释(收件人、发件人、正文)>& lt!元素to (#PCDATA)>& lt!元素来自(#PCDATA)>& lt!元素体(#PCDATA)>]& gt;& lt注意& gt& ltto & gtll & lt/to & gt;& lt来自& gtzh & lt/from & gt;& ltbody & gt你好& lt/body & gt;& lt/note & gt;一些复杂的内容模型有
& lt!-竖线|表示这些至少有一个?零个或多个可以有一个或没有*一个或多个+一个或多个,至少一个->:& lt;!-内容模型表示简历应具有任意姓名、性别、年龄、电话号码和手机,填写一个家庭住址或留空,零个或多个爱好,至少一个教育经历,可选工作经历–>:& lt;!要素简历(姓名,性别,年龄,(电话|手机),家庭住址?、兴趣爱好*、教育经历+、工作经历*)>:混合内容可以同时包含子元素和字符数据(使用混合内容模型时,#PCDATA关键字必须是模型中的第一个选项,模型中不能使用逗号、问号和加号。只有竖线可以用来分隔#PCDATA和元素)
& lt?xml版本= & # 34;1.0"?& gt& lt!DOCTYPE电子邮件[& lt;!元素电子邮件(# PC data | body)* & gt;& lt!元素体(#PCDATA)>]& gt;& lt电子邮件& gt邮件
示例:
& lt!元素br EMPTY & gt关键字ANY ANY表示该元素可以包含任何字符数据和子元素。
& lt!元素注释ANY & gtXML模式定义在DTD之后,W3C引入了一个新的规范来验证XML格式:XML模式定义。
Schema语法格式
& lt?xml版本= & # 34;1.0"?& gt& ltxs:schema xmlns:xs = & # 34;http://www.w3.org/2001/XMLSchema"目标命名空间= & # 34;http:///j2j . idril . cn & # 34;xmlns = & # 34http://j2j . idril . cn & # 34;elementFormDefault = & # 34合格& # 34;& gt& ltxs:element name = & # 34;注意& # 34;& gt& ltxs:complex type & gt;& ltxs:sequence & gt;& ltxs:element name = & # 34;到& # 34;type = & # 34xs:string & # 34;/& gt;& ltxs:element name = & # 34;从& # 34;type = & # 34xs:string & # 34;/& gt;& ltxs:element name = & # 34;正文& # 34;type = & # 34xs:string & # 34;/& gt;& lt/xs:sequence & gt;& lt/xs:complex type & gt;& lt/xs:element & gt;& ltXs:schema //指定模式中使用的元素和数据类型的名称空。还规定前缀xs: xmlns:xs="应该用于来自这个名称空的元素和数据类型。http://www.w3.org/2001/XMLSchema"//解释这个schema定义的元素来自targetNamespace="之间的names空;http:///j2j . idril . cn & # 34;//默认命名的xmlns between 空被指定= & # 34;http://j2j . idril . cn & # 34;//指出在任何XML实例文档中使用的和在这个schema中声明的元素都必须命名。空Limit elementFormDefault = & # 34;合格& # 34;& gt//简单元素(只包含文本,不包含子元素或属性的元素)//常用的类型有xs:strig,xs:decimal,xs:integer,xs:Boolean,xs:date,XS:time < xs:element name = & # 34;到& # 34;type = & # 34xs:string & # 34;/& gt;//property//常用的类型有xs:strig,xs:decimal,xs:integer,xs:Boolean,xs:date,xs:time < xs:attribute name = & # 34;郎& # 34;type = & # 34xs:string & # 34;/& gt;//为XML元素或属性定义定义可接受的值
Schema的使用
类似地,您需要用xml声明Schema。
<?xml version="1.0"?><note xmlns="http://j2j.idril.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://j2j.idril.cn node.xsd"> <to>ll</to> <from>zh</from> <body>hello</body></note>
// 规定了默认的命名空间的声明xmlns="http://j2j.idril.cn"// 定义了XML Schema实例命名空间xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" // 包含两个值 第一个值是需要使用的命名空间 第二个值是供命名空间使用的XML Schema的位置xsi:schemaLocation="http://j2j.idril.cn node.xsd"