日期:2014-05-18  浏览次数:20883 次

XML--请问,空元素为什么不报错
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE 工程 [
<!ELEMENT 工程 (项目,负责人)>
<!ELEMENT 项目 (#PCDATA)>
<!ELEMENT 负责人 (#PCDATA)>
]>
  <工程>
  <项目>
  咳咳咳
  </项目>
  <负责人/>  
  </工程>


上面XML文档中,内部DTD声明元素中,负责人的元素类型是#PCDATA,可是下面是写的<负责人/>,是个空元素,为什么不报错呢?空元素不是EMPTY吗?

------解决方案--------------------
如果你没有采用dtd验证,是不会报错的

------解决方案--------------------
C# code
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class Sample {

  public static void Main() {

    // Set the validation settings.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ProhibitDtd = false;
    settings.ValidationType = ValidationType.DTD;
    settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
 
    // Create the XmlReader object.
    XmlReader reader = XmlReader.Create("itemDTD.xml", settings);


    // Parse the file. 
    while (reader.Read());
    
  }

  // Display any validation errors.
  private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
  }
}

------解决方案--------------------
强烈建立楼主下一个xml schema看看,
下下来看看清楚明白了,,再不懂得就发帖问问就可以了。。。。

http://www.jb51.net/books/11609.html