w3c验证(怎样做一个符合w3c规范的网页)
各位老铁们好,相信很多人对w3c验证都不是特别的了解,因此呢,今天就来为大家分享下关于w3c验证以及怎样做一个符合w3c规范的网页的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
关于表单验证
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path= request.getContextPath();
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base rel="external nofollow" href="<%=basePath%>">
<title>填写注册信息</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" rel="external nofollow" href="styles.css">
-->
<link rel="external nofollow" href="./rayx.css" rel="stylesheet" type="text/css">
</head>
<body>
<script language="javascript">
<!--
function selectCity(){
if(RegInfoPost.state.value=="上海"){
RegInfoPost.city.value="上海";
}
else if(RegInfoPost.state.value=="天津"){
RegInfoPost.city.value="天津";
}
else if(RegInfoPost.state.value=="北京"){
RegInfoPost.city.value="北京";
}
else if(RegInfoPost.state.value=="重庆"){
RegInfoPost.city.value="重庆";
}
else if(RegInfoPost.state.value=="中国香港"){
RegInfoPost.city.value="中国香港";
}
else if(RegInfoPost.state.value=="中国澳门"){
RegInfoPost.city.value="中国澳门";
}
else{
RegInfoPost.city.value="";
}
}
function checkCity(){
if(RegInfoPost.city.value=="北京"){
RegInfoPost.address.focus();
}
if(RegInfoPost.city.value=="上海"){
RegInfoPost.address.focus();
}
if(RegInfoPost.city.value=="天津"){
RegInfoPost.address.focus();
}
if(RegInfoPost.city.value=="重庆"){
RegInfoPost.address.focus();
}
if(RegInfoPost.city.value=="中国香港"){
RegInfoPost.address.focus();
}
if(RegInfoPost.city.value=="中国澳门"){
RegInfoPost.address.focus();
}
}
-->
</script>
<script language="javascript">
<!--
function onSubmit(){
<%//检查姓名%>
if(RegInfoPost.realName.value==""){
alert("请填写姓名!");
RegInfoPost.realName.focus();
return false;
}
<%//检查身份证%>
else if(RegInfoPost.identityCard.value==""){
alert("请填写身份证号码!");
RegInfoPost.identityCard.focus();
return false;
}
<%//检查身份证的格式是否合法%>
else if(chkid(RegInfoPost.identityCard.value)==0){
alert("您填写的身份证号码不是合法的身份证号码!");
RegInfoPost.identityCard.focus();
return false;
}
<%//检查邮政编码%>
else if(RegInfoPost.zip.value==""){
alert("请填写邮政编码!");
RegInfoPost.zip.focus();
return false;
}
<%//检查邮政编码是否含有空格%>
else if(chkspc(RegInfoPost.zip.value)!=1){
alert("邮政编码含有空格!");
RegInfoPost.zip.focus();
return false;
}
<%//检查邮政编码是否符合格式%>
else if(checkZip(RegInfoPost.zip.value)==0){
alert("不是中国的邮政编码,或者邮政编码有非法字符!");
RegInfoPost.zip.focus();
return false;
}
<%//检查省市自治区%>
else if(RegInfoPost.state.value=="default"){
alert("请选择省市自治区!");
RegInfoPost.state.focus();
return false;
}
<%//检查城市%>
else if(RegInfoPost.city.value==""){
alert("请填写城市!");
RegInfoPost.city.focus();
return false;
}
<%//检查地址%>
else if(RegInfoPost.address.value==""){
alert("请填写地址!");
RegInfoPost.address.focus();
return false;
}
<%//检查主要联系电话%>
else if(RegInfoPost.phone.value==""){
alert("请填写主要联系电话!");
RegInfoPost.phone.focus();
return false;
}
<%//检查生日(年)%>
else if(RegInfoPost.birthdayYear.value==""){
alert("请填写您的生日!");
RegInfoPost.birthdayYear.focus();
return false;
}
<%//检查出生年份有效性%>
else if(chkYear(RegInfoPost.birthdayYear.value)==0){
alert("您的生日不符合格式!");
RegInfoPost.birthdayYear.focus();
return false;
}
<%//检查生日(月)%>
else if(RegInfoPost.birthdayMonth.value=="default"){
alert("请填写您的生日!");
RegInfoPost.birthdayMonth.focus();
return false;
}
<%//检查生日(日)%>
else if(RegInfoPost.birthdayDay.value=="default"){
alert("请填写您的生日!");
RegInfoPost.birthdayDay.focus();
return false;
}
<%//检查电子邮件%>
else if(RegInfoPost.email.value==""){
alert("请填写您的电子邮件地址!");
RegInfoPost.email.focus();
return false;
}
<%//检查电子邮件是否合法%>
else if(chkemail(RegInfoPost.email.value)!=1){
alert("电子邮件地址不符合格式!");
RegInfoPost.email.focus();
return false;
}
<%//检查用于确认的电子邮件地址%>
else if(RegInfoPost.email.value!=RegInfoPost.email2.value){
alert("请确认您的电子邮件填写的准确无误!");
RegInfoPost.email2.focus();
return false;
}
else{
<%
session.setAttribute("frompage","reg.jsp");
%>
RegInfoPost.submit();
}
}
<%
//函数名:chkspc
//功能介绍:检查是否含有空格
//参数说明:要检查的字符串
//返回值:0:有空格 1:没有空格 2:有空格
%>
function chkspc(a){
var i=a.length;
var j= 0;
var k= 0;
while(k<i){
if(a.charAt(k)!=""){
j= j+1;
}
k= k+1;
}
if(j==0){
return 0;
}
if(i!=j){
return 2;
}
else{
return 1;
}
}
<%
//函数名:checkNum
//功能介绍:检查是否为数字
//参数说明:要检查的数字
//返回值:0:不是数字 1:是数字
%>
function checkNum(num){
var i,j,strTemp;
strTemp="0123456789";
if(num.length==0)
return 0;
for(i=0;i<num.length;i++){
j=strTemp.indexOf(num.charAt(i));
if(j==-1){
return 0;
}
}
return 1;
}
<%
//函数名:chkid
//功能介绍:检查身份证
//参数说明:要检查的字符串
//返回值:0:不合格 1:合格
%>
function chkid(id){
if(id.length!=15&& id.length!=18){
return 0;
}
else if(chkspc(id)!=1){
return 0;
}
else if(checkNum(id)==0){
return 0;
}
else
return 1;
}
<%
//函数名:checkZip
//功能介绍:检查是否为有效的邮政编码
//参数说明:要检查的数字
//返回值:1为是有效的,0为不是有效的
%>
function checkZip(zip){
if(zip.length!=6){
return 0;
}
else if(checkNum(zip)==0){
return 0;
}
}
<%
//检查电子邮件是否合法
//函数名:chkemail
//参数说明:要检查的字符串
//返回值:1:是
%>
function chkemail(a){
var i=a.length;
var temp= a.indexOf('@');
var tempd= a.indexOf('.');
if(temp> 1){
if((i-temp)> 3){
if((i-tempd)>0){
return 1;
}
}
}
}
<%
/**
*检查出生年份是否符合规定
*返回值:0:不正确 1:正确
*/
%>
function chkYear(year){
if(year.length!=4)
return 0;
if(checkNum(year)==0)
return 0;
else if(chkspc(year)!=1)
return 0;
else
return 1;
}
-->
</script>
<form name="RegInfoPost" method="post" action="reg.do">
<table align="center">
<tr>
<td><strong><font color="green">用户注册页面</font></strong></td>
</tr>
</table>
<table width="750" height="617" border="0" align="center">
<tr>
<td colspan="6"><hr color="#cccccc" noshade="yes" size="2">
</td>
</tr>
<tr>
<td width="150" height="30" valign="top"><!--DWLayoutEmptyCell--></td>
<td width="339" valign="middle">
<span class="style2"><strong>用户名称:</strong></span>
<input name="userName" type="text" class="item_table" id="userName" maxlength="10">
<span class="error">(*6-16个字符)</span>
</td>
<td width="126" valign="middle"></td>
</tr>
<tr>
<td></td>
<td valign="middle"><strong>用户密码:</strong>
<input name="password" type="password" class="item_table" id="password" maxlength="10">
<span class="error">(*6-16个字符)</span>
</td>
<td></td>
</tr>
<tr>
<td height="30"></td>
<td valign="middle"><strong>确认密码:</strong>
<input name="password2" type="password" class="item_table" id="password2" maxlength="10">
<span class="error">(*确认密码)</span>
</td>
<td></td>
</tr>
<tr align="center" valign="middle">
<td height="30" colspan="3" valign="middle"><hr color="#cccccc" noshade="yes" size="1"></td>
</tr>
<tr align="center" valign="middle">
<td height="20" colspan="3"><span class="error">密码保护(在您忘记密码时,将通过以下问题来重新获得您的密码)</span></td>
</tr>
<tr align="center" valign="middle">
<td height="30"></td>
<td colspan="2" align="left" valign="middle"><strong>密码提示问题:</strong>
<input name="question" type="text" class="item_table" id="question" maxlength="20">
<span class="error">*(不超过20个字符)</span></td>
</tr>
<tr align="center" valign="middle">
<td height="30"></td>
<td colspan="2" align="left" valign="middle"><strong>密码提示答案:</strong>
<input name="answer" type="text" class="item_table" id="answer" maxlength="10">
<span class="error">*(不超过10个字符)</span></td>
</tr>
<tr>
<td height="14" colspan="2" valign="top"><strong>姓名</strong>
<font color="#ff0000"><span class="error">*</span></td>
<td colspan="2" valign="top"><strong>身份证号码</strong>
<font color="#ff0000"><span class="error">*</span></td>
</tr>
<tr>
<td height="18" colspan="2" valign="top">
<input name="realName" type="text" id="realname" class="item_table"></td>
<td colspan="2" valign="top">
<input name="identityCard" type="text" id="identityCard" size="18" maxlength="18" class="item_table">
</td>
</tr>
<tr>
<td width="100" height="14"></td>
<td width="100"></td>
<td width="100"></td>
<td width="100"></td>
</tr>
<tr>
<td><strong>国家或地区</strong><font color="#ff0000"><span class="error">*</span></td>
<td><strong>邮政编码</strong><font color="#ff0000"><span class="error">*</span></td>
<td><strong>省市自治区</strong><font color="#ff0000"><span class="error">*</span></td>
<td><strong>城市</strong><font color="#ff0000"><span class="error">*</span></td>
</tr>
<tr>
<td>
<select name="country" id="country" class="item_table">
<option selected>中国</option>
<option>中国香港</option>
<option>中国澳门</option>
<option>中国台湾</option>
</select>
</td>
<td>
<input name="zip" type="text" id="zip" class="item_table">
</td>
<td>
<select name="state" id="state" onclick="selectCity()" class="item_table">
<option value="default" selected name="value" isCity="false">选择省市自治区</option>
<option name="value" value="北京" isCity="true">北京</option>
<option name="value" value="上海" isCity="true">上海</option>
<option name="value" value="天津" isCity="true">天津</option>
<option name="value" value="重庆" isCity="true">重庆</option>
<option name="value" value="安徽省" isCity="false">安徽省</option>
<option name="value" value="福建省" isCity="false">福建省</option>
<option name="value" value="甘肃省" isCity="false">甘肃省</option>
<option name="value" value="广东省" isCity="false">广东省</option>
<option name="value" value="广西壮族自治区" isCity="false">广西壮族自治区</option>
<option name="value" value="贵州省" isCity="false">贵州省</option>
<option name="value" value="海南省" isCity="false">海南省</option>
<option name="value" value="河北省" isCity="false">河北省</option>
<option name="value" value="河南省" isCity="false">河南省</option>
<option name="value" value="黑龙江省" isCity="false">黑龙江省</option>
<option name="value" value="湖北省" isCity="false">湖北省</option>
<option name="value" value="湖南省" isCity="false">湖南省</option>
<option name="value" value="吉林省" isCity="false">吉林省</option>
<option name="value" value="江苏省" isCity="false">江苏省</option>
<option name="value" value="江西省" isCity="false">江西省</option>
<option name="value" value="辽宁省" isCity="false">辽宁省</option>
<option name="value" value="内蒙古自治区" isCity="false">内蒙古自治区</option>
<option name="value" value="宁夏回族自治区" isCity="false">宁夏回族自治区</option>
<option name="value" value="青海省" isCity="false">青海省</option>
<option name="value" value="山东省" isCity="false">山东省</option>
<option name="value" value="山西省" isCity="false">山西省</option>
<option name="value" value="陕西省" isCity="false">陕西省</option>
<option name="value" value="四川省" isCity="false">四川省</option>
<option name="value" value="台湾省" isCity="false">台湾省</option>
<option name="value" value="西藏自治区" isCity="false">西藏自治区</option>
<option name="value" value="新疆维吾尔自治区" isCity="false">新疆维吾尔自治区</option>
<option name="value" value="云南省" isCity="false">云南省</option>
<option name="value" value="浙江省" isCity="false">浙江省</option>
<option name="value" value="中国香港" isCity="true">中国香港</option>
<option name="value" value="中国澳门" isCity="true">中国澳门</option>
</select>
</td>
<td>
<input name="city" type="text" id="city" onfocus="checkCity()" class="item_table">
</td>
</tr>
<tr>
<td colspan="4"></td>
</tr>
<tr>
<td colspan="4"><strong>送货地址</strong><font color="#ff0000"><span class="error">*</span></td>
</tr>
<tr>
<td colspan="4">
<input name="address" type="text" id="address" size="41" class="item_table">
</td>
</tr>
<tr>
<td colspan="4"></td>
</tr>
<tr>
<td colspan="2"><strong>主要联系电话</strong>
<font color="#ff0000">
<span class="error">*</span></td>
</tr>
<tr>
<td colspan="2">
<input name="phone" type="text" id="phone" class="item_table">
</td>
</tr>
<tr>
<td colspan="4"></td>
</tr>
<tr>
<td colspan="4"><hr color="#cccccc" noshade="yes" size="1"></td>
</tr>
<tr>
<td colspan="4"><span class="error">请填写真实有效的电子邮件地址</span></td>
</tr>
<tr>
<td colspan="4"><strong>电子邮件地址<font color="#ff0000"></strong><span class="error">*</span></td>
</tr>
<tr>
<td colspan="4">
<input name="email" type="text" id="email" size="40" class="item_table"></td>
</tr>
<tr>
<td colspan="4"><span class="style2">范例:</span><span class="style3"> myname@hotmail.com</span></td>
</tr>
<tr>
<td colspan="4"><strong>请再一次输入您的电子邮件地址</strong><font color="#ff0000"><span class="error">*</span></td>
</tr>
<tr>
<td colspan="4">
<input name="email2" type="text" id="email2" size="40" class="item_table"></td>
</tr>
<tr>
<td colspan="4"><hr color="#cccccc" noshade="yes" size="1"></td>
</tr>
<tr>
<td colspan="4"></td>
</tr>
<tr>
<td></td><td colspan="2"><div align="center"><strong>接受用户协议</strong></div></td>
</tr>
<tr>
<td height="87" colspan="4"><div align="center">
<textarea name="textarea" cols="70" rows="15" wrap="VIRTUAL" class="item_table">本网站仅为威迅教育交流学习之用,您必须无条件接受以下条件方可继续注册。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播下列信息:
(一)煽动抗拒、破坏宪法和法律、行政法规实施的;
(二)煽动颠覆国家政权,推翻社会主义制度的;
(三)煽动分裂国家、破坏国家统一的;
(四)煽动民族仇恨、民族歧视,破坏民族团结的;
(五)捏造或者歪曲事实,散布谣言,扰乱社会秩序的;
(六)宣扬封建迷信、淫秽、色情、赌博、暴力、凶杀、恐怖、教唆犯罪的;
(七)公然侮辱他人或者捏造事实诽谤他人的,或者进行其他恶意攻击的;
(八)损害国家机关信誉的;
(九)其他违反宪法和法律行政法规的;
(十)进行商业广告行为的。
二、互相尊重,对自己的言论和行为负责。</textarea>
</div></td>
</tr>
<tr>
<td colspan="4"><div align="center"><strong>当通过点击”注册“按钮即表示我已无条件接受以上协议</strong></div></td>
</tr>
<tr>
<td colspan="4"><hr color="#cccccc" noshade="yes" size="1"></td>
</tr>
<tr>
<td colspan="4"><div align="center">
<input type="submit" name="Submit" value="注册" onClick="return onSubmit()">
<input type="reset" name="Reset" value="重置">
</div></td>
</tr>
<tr>
<td height="46" colspan="4"></td>
</tr>
</table>
</form>
<jsp:include page="../copyright.jsp" flush="true"/>
</body>
</html>
怎样做一个符合w3c规范的网页
作为网站技术开发人员而言,往往是站在自己的开发角度来实施网站布署(读取数据及开发的方便性等等),而不是站在网站访问者与搜索引擎角度。因此大部分的网站在浏览方面不够直观或是方便,特别是现在w3c的规范,更是在大部分的网站开发人员脑里一片空白。何况百度、google、msn、yahoo等专业搜索引擎更有自己的搜索规则及判断网页等级技术,所以网站要优化,优化的目的只有一个:符合标准,符合蜘蛛爬行的标准,更重要的是符合网站访问者浏览的方便及易用性。以下文章中,珍岛高端网站制作公司专家主要通过三个方面来讲述有关W3C!
什么是W3C标准
W3C其实就是World Wide Web Consortium,全球万维网联盟的简称。W3C的主要职责就是确定未来万维网的发展方向,并且制定相关的推荐(recommendation,由于W3C是一个民间组织,没有约束性,因此只提供建议)。HTML4.01规范建议(HTML4.01 Specification Recommendation)就是由W3C所制定的。它还负责制定XML,MathML等其他网络语言规范。
怎样通过W3C标准的验证?
步骤方法如下:
1、图片的alt=""属性必须每张图片都加上,而且对齐属性用CSS来定义。不加不能通过XHTML 1.0的验证。
2、每个文档必须加上DTD声明。
a)!DOCTYPE html PUBLIC"-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
去掉后能通过验证,但有警告:No DOCTYPE found! Checking with default XHTML 1.0 Transitional Document Type.
3、RSS的XML通过时其中的域名地址必须与检测的地址一致,否则会报错。
4、标签的链接属性加上JAVASCRIPT事件时必须为#空链,不能为javascript:;或javascript:void(null);
5、同一个页面当中,同名的ID会产生冲突。所以以ID定义样式的必须改成类引用。
<div id="a1">111</div>
<div id="a1">222</div>
如果不用W3C来检测的话,在CSS设计里是允许这样做的。
那是程序的角度不能相同,CSS上是可以相同的!
之前就是相同的产生问题,后面就改成类引用了!
6、不可省略双引号或单引号。
a)这个是指属性,标准是双引号~
单引号也能通过验证。
7、标签之间不可错位嵌套。
<div class="CaseDetaListSS">原文链接:<a href='/html/cases/cases_61.html'>官方网站</div></a>
这是不允许的。
8、所有的标签都使用小写。
9、FLASH的标签代码中不能含有,必须采用其它的方法实现。
10、所有的标签中含有的属性必须有值(官方的说法)。
11、标签必须配对完成,单标签必须以/关闭
12、JS和CSS外部引入文件必须加上类型定义。
13、所有的样式全部写在外部文件。用类名定义。在使用的地方引用。
14、页面上的一些特殊字符必须用HTML代码来标识.如“&”写成“&“
没通过W3C标准验证的原因
每次修正代码后要刷新代码,使它们重新生效——一个小错误常常会引发之后整页的连串错误。因此如果操作不当,“修正错误”也可能引发更多错误。每次修正后使代码重新生效,这样就可以确保完全解决问题。
知道了上面这些基本的异常情况,下面珍岛高端网站制作公司专家我们就来看看版面设计无效的几个原因。
1、div标签未关闭
这是版面设计失效的最常见原因之一。当我们了解到这是多少精致的版块设计失效的罪魁祸首时,总会大吃一惊。开启的div标签是最普遍的版块设计失误之一,也是最难诊断的失误之一。验证程序有时会指向错误的开启div标签,诊断时就像大海捞针一样麻烦。
2、麻烦的embed标签
九十年代早期,Microsoft和Netscape的浏览器开始能够辨认非标准的独有字体。遗憾的是这意味着W3C验证程序还不能识别某些关键HTML标签,如“embed”,即使这些标签已经被广泛使用。如果确实希望得到严格的DOCTYPE(文档类型)验证,就只能放弃嵌套。
如果同时想要生效的版面设计和嵌入式媒体,可以试试Flash Satay方法。
3、不当的DOCTYPE声明
不声明DOCTYPE,或者在文件开始错误声明DOCTYPE,也是一个常见错误。根据一般经验,Strict DOCTYPE是大家追求的最高级验证。Strict validation表明你的网页能够在所有浏览器上都得到最佳展示。Strict声明代码如下:
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4、结尾斜线
如果你的网站不能验证,很有可能是在代码的某个地方漏写了结尾斜线。我们很容易忽略结尾斜线之类的东西,特别是在image标签等元素中。例如:
在严格的DOCTYPE中这是无效的。要在img标签结尾处加上“/”以解决此问题。
<img src="" alt="">
5、Align标签
如果DOCTYPE被设为Transitional,你就会使用“align”标签,但如果要求更高一点希望得到Strict验证,你会看到很多错误。 Align是另一个不可用于版面设计的标签。可以尝试用“float”或者“text-align”来代替align转换元素。
6、JavaScript
如果已经声明Strict DOCTYPE,就需要在JavaScript中覆盖CDATA标签。验证程序的这一方面难倒了很多程序员,因为网站倾向于为广告和追踪脚本使用嵌入的 JavaScript。如果必须用到JavaScript,可以在其前后加上如下标签:
<script type="text/javascript">
/*<![CDATA[*/
// JavaScript here
};
/* ]]>*/
</script>
7、图像需要“alt”属性
你可能还没有注意到,图像也是高级验证的潜在绊脚石。除了结尾斜线,高级验证也要求用alt标签来描述图像,如alt=”Scary vampire picture”.
搜索引擎也靠alt标签来识别网页上的图像,所以无论怎样加上alt标签总是好的。
8、未知实体数据
实体数据是又一个影响验证的易犯错误。我们可以考虑用适当的编码字符来代替“&”等符号。entire list中列出在XHTML版块设计中可用的适当的编码字符实体数据。
w3c dom
DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范(http://www.w3.org/DOM/),DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件。简单理解,DOM解决了Netscape的Javascript和Microsoft的Jscript之间的冲突,给予web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对像。
DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中导航寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM被认为是基于树或基于对象的。
对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如 Simple API for XML(SAX),适用于处理数据流,即随着数据的流动而依次处理数据。基于事件的 API消除了在内存中构造树的需要,但是却不允许开发人员实际更改原始文档中的数据。
SAX等模型会从头至尾的顺序解析整个XML文档,当遇到一个节点的开始或或者结束时,会产生一个时间,程序员可以注册事件处理函数以对各个节点进行处理。
另一方面,DOM还提供了一个 API,允许开发人员添加、编辑、移动或删除树中任意位置的节点,从而创建一个引用程序。这个模型就是基于树型数据结构的,他在使用之前必须加载整个文档或者至少是结构良好的文档片段
解析器是一个软件应用程序,设计用于分析文档(这里是指 XML文件),以及做一些特定于该信息的事情。在诸如 SAX这样基于事件的 API中,解析器将向某种监听器发送事件。在诸如 DOM这样基于树的 API中,解析器将在内存中构造一颗数据树。
作为 API的 DOM
从 DOM Level 1开始,DOM API包含了一些接口,用于表示可从 XML文档中找到的所有不同类型的信息。它还包含使用这些对象所必需的方法和属性。
Level 1包括对 XML 1.0和 HTML的支持,每个 HTML元素被表示为一个接口。它包括用于添加、编辑、移动和读取节点中包含的信息的方法,等等。然而,它没有包括对 XML名称空间(XML Namespace)的支持,XML名称空间提供分割文档中的信息的能力。
DOM Level 2添加了名称空间支持。Level 2扩展了 Level 1,允许开发人员检测和使用可能适用于某个节点的名称空间信息。Level 2还增加了几个新的模块,以支持级联样式表、事件和增强的树操作。
当前正处于定稿阶段的 DOM Level 3包括对创建 Document对象(以前的版本将这个任务留给实现,使得创建通用应用程序很困难)的更好支持、增强的名称空间支持,以及用来处理文档加载和保存、验证以及 XPath的新模块;XPath是在 XSL转换(XSL Transformation)以及其他 XML技术中用来选择节点的手段。
DOM的模块化意味着作为开发人员,您必须知道自己希望使用的特性是否受正在使用的 DOM实现所支持。
确定特性可用性
DOM推荐标准的模块性质允许实现者挑选将要包括到产品中的部分,因而在使用某个特定的特性之前,首先确定该特性是否可用可能是必要的。本教程仅使用 DOM Level 2 Core API,不过在着手您自己的项目时,了解如何能够检测特性是有所帮助的。
DOM中定义的接口之一就是 DOMImplementation。通过使用 hasFeature()方法,您可以确定某个特定的特性是否受支持。DOM Level 2中不存在创建DOMImplementation的标准方法,不过下面的代码将展示如何使用 hasFeature()来确定 DOM Level 2样式表模块在某个 Java应用程序中是否受支持。
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.DOMImplementation;
public class ShowDomImpl{
public static void main(String args[]){
try{
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
DocumentBuilder docb= dbf.newDocumentBuilder();
DOMImplementation domImpl= docb.getDOMImplementation();
if(domImpl.hasFeature("StyleSheets","2.0")){
System.out.println("Style Sheets are supported.");
} else{
System.out.println("Style Sheets are not supported.");
}
} catch(Exception e){}
}
}
(DOM Level 3将包括用于创建 DOMImplementation的标准方法。)
本教程将使用单个文档来展示 DOM Level 2 Core API的对象和方法。
基本的 XML文件
本教程中的所有例子都是用了一个包含如下节点的 XML文件,它表示输入某个商业系统的订单。回顾一下,XML文件的基本组成部分包括:
XML声明:基本的声明<?xml version="1.0" encoding="UTF-8"?>将这个文件定义为 XML文档。在声明中指定一种字符编码的情况并不鲜见,如下所示。通过这种方式,不管该 XML文件使用的语言或字符编码是什么,只要解析器理解特定的编码,它就能够正确地读取该 XML文件。
DOCTYPE声明:XML是人机之间交换信息的便利手段,但是要使它能够顺利地工作,必须要有一个公共的词汇表。可选的 DOCTYPE声明可用于指定一个应该用来与此文件做比较的文档(在本例中为 orders.dtd),以确保不会产生任何混淆或丢失信息(例如,丢失一个 userid或错误拼写某个元素名称)。以这种方式处理过的文档称为有效的文档。成功的有效性检查并不是 XML所必需的,后面的例子实际上从文档中省略了 DOCTYPE声明。
数据本身:XML文档中的数据必须包含在单个根元素内,比如下面的 orders元素。要使 XML文档得到处理,它必须是格式良好的(well-formed)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ORDERS SYSTEM"orders.dtd">
<orders>
<order>
<customerid limit="1000">12341</customerid>
<status>pending</status>
<item instock="Y" itemid="SA15">
<name>Silver Show Saddle, 16 inch</name>
825.00</price>
<qty>1</qty>
</item>
<item instock="N" itemid="C49">
<name>Premium Cinch</name>
49.00</price>
<qty>1</qty>
</item>
</order>
<order>
<customerid limit="150">251222</customerid>
<status>pending</status>
<item instock="Y" itemid="WB78">
<name>Winter Blanket(78 inch)</name>
20</price>
<qty>10</qty>
</item>
</order>
</orders>
在 DOM中,使用 XML信息意味着首先将它划分为节点。
DOM是domain object model(域对象模型)的缩写
DOM(Digital Orthophoto Map数字正射影像图)
数字正射影像图(DOM, Digital Orthophoto Map):是对航空(或航天)像片进行数字微分纠正和镶嵌,按一定图幅范围裁剪生成的数字正射影像集。它是同时具有地图几何精度和影像特征的图像。>
DOM具有精度高、信息丰富、直观逼真、获取快捷等优点,可作为地图分析背景控制信息,也可从中提取自然资源和社会经济发展的历史信息或最新信息,为防治灾害和公共设施建设规划等应用提供可靠依据;还可从中提取和派生新的信息,实现地图的修测更新。评价其它数据的精度、现实性和完整性都很优良。合肥市数字正射影像图DOM.jpg。
该图的技术特征为:数字正射影像,地图分幅、投影、精度、坐标系统、与同比例尺地形图一致,图像分辨率为输入大于400dpi;输出大于250dpi。由于DOM是数字的,在计算机上可局部开发放大,具有良好的判读性能与量测性能和管理性能等,如用农村土地发证,指认宗界地界比并数字化其点位坐标、土地利用调查等等。DOM可作为独立的背景层与地名注名,图廓线公里格、公里格网及其它要素层复合,制作各种专题图。
生产技术
制作的主要技术方法:采用航空像片或高分辨率卫星遥感图像数据等。利用:1) VintuoZo系统数字摄影测量工作站。VintuoZo系统可以利用对DEM的检测及编辑,来提高DOM的精度。还可以通过像片间、图幅间进行灰度接边,以保证影像色调的一致性。 2)采用jx-4 DPW系统。jx-4 DPW是一套基于WINDOWS NT的数字摄影测量系统。因其对DEM的编辑采用的是单点编辑,而且该系统还具有对DOM的零立体检查的功能,故其DOM的精度较高。基于DEM的单片数字微分纠正VintuoZo系统具有单片数字微分纠正的模块。
数字正射影像图的应用
洪水监测、河流变迁、旱情监测;
农业估产(精准农业);
土地覆盖与土地利用土地资源的动态监测;
荒漠化监测与森林监测(成林害虫);
海岸线保护;
生态变化监测。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!