我学XML还没几天,学习资料是从书店里选了半天才选出来的,看了两天后我对XML有了一个模糊的轮廓形成了一个这样的概念:XML文件中的各元素和属性必须要事先在内部或外部的DTD文件中声明后才可用,DTD是用来约束XML的,我把这一点当做一条基本的准则,但今天我遇到的问题却把我懵傻了,我发现一个XML文件即使没有任何的DTD声明也一样可以正常显示,IE也不会报错如下面的:
1<users>
2<name>gzw</name>
3<pass>676767</pass>
4<passanser>nlnl</passanser>
5</users>
后来我又发现即使在你的XML文件中有一个外部声明,只要你同时在这个XML文件的相同目录中新建一个没有任何内容的DTD文件还是不会有错如下面:
1<users>
2<name>gzw</name>
3<pass>676767</pass>
4<passanser>nlnl</passanser>
5</users>
你只要在相同目录新建一个没有任何内容的空的"a.dtd"文件IE也不会报错,显示正常。
进一步看,即使你有一个如下的DTD文件("a.dtd")
你也仍然可以在你的XML文件中添加任何并未在DTD文件中声明过的元素如下
1<aa>元素是从未声明过的但仍可使用:
2<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3<!DOCTYPE users SYSTEM "a.dtd">
4
5<users>
6<name>gzw</name>
7<pass>676767</pass>
8<passanser>nlnl</passanser>
9<aa>DFSDFS</aa>
10</users>
11
12我倒!这到底是怎么回事啊,谁能给我一个明确的答案
13\---------------------------------------------------------------
14
15ie仅仅判断xml文件是否well-formed,并没有严格得判断它的对与错!
16\---------------------------------------------------------------
17
18IE does not validate an XML file by default, use scripting to do it, for example, you can do this in javascript:
19
20var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
21xmlDoc.async = false;
22xmlDoc.validateOnParse = true;
23xmlDoc.load("books.xml");
24var myErr = xmlDoc.parseError;
25if (myErr.errorCode != 0)
26{
27alert("You have error " + myErr.reason);
28}</aa>