【转载】dtd与scheme的区别一
一. dtd是什么?document type definition,定义xml的格式的一种方式规则,
它是一套标记的语法规则,定义与元素,子元素,属性及其取值,其中规定了元素的顺序,个数,属性
1 DTD的语法:<!ELEMENT 元素名称元素内容声明>
2 DTD元素内容的常用类型:
EMPTY 表示该元素不能包含任何子元素和文本,仅可以使用属性
#PCDATA 表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素
3 定义属性: <!ATTLIST 元素名称
属性名 类型 约束
>
4 DTD属性类型:
CDATA 表明该属性只能包含字符数据
ID 该属性的取值必须是唯一的
#REQUIRED 用来告诉XML解析程序,该元素的所有实例都必须有盖属性的值
5、DTD与XML文档关联形式有三种:
内部DTD,外部DTD,公共DTD
语法<!DOCTYPE 根元素名称 [定义内容]>
使用外部DTD用到:<!DOCTYPE 根元素名称 SYSTEM "DTD路径">
使用公共的DTD语法::<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD路径">
举例:
struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.i18n.encoding" value="utf-8"/><include file="struts-default.xml" /><!-- <package name="news"><action name="list" method="list"> <result type="velocity"></result></action></package> --></struts>
<?xml version="1.0" encoding="UTF-8"?><!--/* * $Id$ * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */--><!-- START SNIPPET: strutsDtd --><!-- Struts configuration DTD. Use the following DOCTYPE <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">--><!ELEMENT struts (package|include|bean|constant)*><!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)><!ATTLIST package name CDATA #REQUIRED extends CDATA #IMPLIED namespace CDATA #IMPLIED abstract CDATA #IMPLIED externalReferenceResolver NMTOKEN #IMPLIED><!ELEMENT result-types (result-type+)><!ELEMENT result-type (param*)><!ATTLIST result-type name CDATA #REQUIRED class CDATA #REQUIRED default (true|false) "false"><!ELEMENT interceptors (interceptor|interceptor-stack)+><!ELEMENT interceptor (param*)><!ATTLIST interceptor name CDATA #REQUIRED class CDATA #REQUIRED><!ELEMENT interceptor-stack (interceptor-ref*)><!ATTLIST interceptor-stack name CDATA #REQUIRED><!ELEMENT interceptor-ref (param*)><!ATTLIST interceptor-ref name CDATA #REQUIRED><!ELEMENT default-interceptor-ref (#PCDATA)><!ATTLIST default-interceptor-ref name CDATA #REQUIRED><!ELEMENT default-action-ref (#PCDATA)><!ATTLIST default-action-ref name CDATA #REQUIRED><!ELEMENT default-class-ref (#PCDATA)><!ATTLIST default-class-ref class CDATA #REQUIRED><!ELEMENT global-results (result+)><!ELEMENT global-exception-mappings (exception-mapping+)><!ELEMENT action (param|result|interceptor-ref|exception-mapping)*><!ATTLIST action name CDATA #REQUIRED class CDATA #IMPLIED method CDATA #IMPLIED converter CDATA #IMPLIED><!ELEMENT param (#PCDATA)><!ATTLIST param name CDATA #REQUIRED><!ELEMENT result (#PCDATA|param)*><!ATTLIST result name CDATA #IMPLIED type CDATA #IMPLIED><!ELEMENT exception-mapping (#PCDATA|param)*><!ATTLIST exception-mapping name CDATA #IMPLIED exception CDATA #REQUIRED result CDATA #REQUIRED><!ELEMENT include (#PCDATA)><!ATTLIST include file CDATA #REQUIRED><!ELEMENT bean (#PCDATA)><!ATTLIST bean type CDATA #IMPLIED name CDATA #IMPLIED class CDATA #REQUIRED scope CDATA #IMPLIED static CDATA #IMPLIED optional CDATA #IMPLIED><!ELEMENT constant (#PCDATA)><!ATTLIST constant name CDATA #REQUIRED value CDATA #REQUIRED ><!-- END SNIPPET: strutsDtd -->