长春建设平台网站的公司,美容整形网站模板,做网站广告中敏感词会涉及到工商,wordpress分类文章获取为什么需要约束#xff1f; 比如现在定义一个person的xml文件#xff0c;只想要这个文件里面保存人的信息#xff0c;比如name age等#xff0c;但是如果在xml文件中写了一个标签猫#xff0c;发现可以正常显示#xff0c;因为符合语法规范。但是猫肯定不…为什么需要约束 比如现在定义一个person的xml文件只想要这个文件里面保存人的信息比如name age等但是如果在xml文件中写了一个标签猫发现可以正常显示因为符合语法规范。但是猫肯定不是人的信息xml的标签是自定义的需要技术来规定xml中只能出现的元素这个时候需要约束。 xml的约束的技术 dtd约束和schema约束
dtd约束 * 创建一个文件 后缀名 .dtd 步骤 1看xml中有多少个元素 有几个元素在dtd文件中写几个 !ELEMENT 2判断元素是简单元素还是复杂元素 - 复杂元素有子元素的元素 !ELEMENT 元素名称 (子元素) - 简单元素没有子元素 !ELEMENT 元素名称 (#PCDATA) 3需要在xml文件中引入dtd文件 !DOCTYPE 根元素名称 SYSTEM dtd文件的路径 dtd的三种引入方式 1引入外部的dtd文件 !DOCTYPE 根元素名称 SYSTEM dtd路径 2使用内部的dtd文件 !DOCTYPE 根元素名称 [ !ELEMENT person (name,age) !ELEMENT name (#PCDATA) !ELEMENT age (#PCDATA)] 3使用外部的dtd文件网络上的dtd文件 !DOCTYPE 根元素 PUBLIC DTD名称 DTD文档的URL - 后面学到框架 struts2 使用配置文件 使用 外部的dtd文件 - !DOCTYPE struts PUBLIC -//Apache Software Foundation//DTD Struts Configuration 2.0//EN http://struts.apache.org/dtds/struts-2.0.dtd 使用dtd定义元素 * 语法 !ELEMENT 元素名 约束 * 简单元素没有子元素的元素 !ELEMENT name (#PCDATA) *** (#PCDATA): 约束name是字符串类型 *** EMPTY : 元素为空没有内容 - sex/sex *** ANY:任意 * 复杂元素 !ELEMENT person (name,age,sex,school) - 子元素只能出现一次 * !ELEMENT 元素名称 (子元素) * 表示子元素出现的次数 : 表示一次或者多次 ? 表示零次或者一次 * 表示零次或者多次 * 子元素直接使用逗号进行隔开 , ** 表示元素出现的顺序 * 子元素直接使用|隔开 ** 表示元素只能出现其中的任意一个 使用dtd定义属性 * 语法 !ATTLIST 元素名称 属性名称 属性类型 属性的约束 * 属性类型 - CDATA: 字符串 -!ATTLIST birthday ID1 CDATA #REQUIRED - 枚举 表示只能在一定的范围内出现值但是只能每次出现其中的一个 ** 红绿灯效果 ** (aa|bb|cc) - !ATTLIST age ID2 (AA|BB|CC) #REQUIRED - ID: 值只能是字母或者下划线开头 - !ATTLIST name ID3 ID #REQUIRED * 属性的约束 - #REQUIRED属性必须存在 - #IMPLIED属性可有可无 - #FIXED: 表示一个固定值 #FIXED AAA - 属性的值必须是设置的这个固定值 - !ATTLIST sex ID4 CDATA #FIXED ABC - 直接值 * 不写属性使用直接值 * 写了属性使用设置那个值 - !ATTLIST school ID5 CDATA WWW schema约束
* 创建一个schema文件 后缀名是 .xsd ** 根节点 schema ** 在schema文件里面 ** 属性 xmlnshttp://www.w3.org/2001/XMLSchema - 表示当前xml文件是一个约束文件 ** targetNamespacehttp://www.cust.edu.cn/20151111 - 使用schema约束文件直接通过这个地址引入约束文件 ** elementFormDefaultqualified 步骤 1看xml中有多少个元素 element 2看简单元素和复杂元素 * 如果复杂元素 complexType sequence 子元素 /sequence /complexType 3简单元素写在复杂元素的 element nameperson complexType sequence element namename typestring/element element nameage typeint/element /sequence /complexType /element 4在被约束文件里面引入约束文件 person xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://www.itcast.cn/20151111 xsi:schemaLocationhttp://www.itcast.cn/20151111 1.xsd ** xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance -- 表示xml是一个被约束文件 ** xmlnshttp://www.cust.edu.cn/20151111 -- 是约束文档里面 targetNamespace ** xsi:schemaLocationhttp://www.itcast.cn/20151111 1.xsd -- targetNamespace 空格 约束文档的地址路径 sequence表示元素的出现的顺序 all: 元素只能出现一次 choice元素只能出现其中的一个 maxOccursunbounded 表示元素的出现的次数 any/any:表示任意元素 * 可以约束属性 * 写在复杂元素里面 ***写在 /complexType之前 attribute nameid1 typeint userequired/attribute - name: 属性名称 - type属性类型 int stirng - use属性是否必须出现 required 复杂的schema约束 company xmlns http://www.example.org/company xmlns:depthttp://www.example.org/department xmlns:xsi http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.example.org/company company.xsd http://www.example.org/department department.xsd * 引入多个schema文件可以给每个起一个别名 employee age30 !-- 部门名称 -- dept:name100/dept:name * 想要引入部门的约束文件里面的name使用部门的别名 detp:元素名称 !-- 员工名称 -- name王晓晓/name /employee