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

XML---为什么老是报错
<?xml version="1.0" encoding="gb2312" ?>
<!DOCTYPE students [
  <!ELEMENT students (student*) >
  <!ELEMENT student (sex)>
  <!ATTLIST student name CDATA #REQUIRED>
  <!ATTLIST student id ID #REQUIRED>
  <!ELEMENT sex (#PCDATA)>
]>
<students>
  <student name="熊俊" id="123" >
  <sex>男</sex>
  </student>
  <student name="萧蔷" id="124" >
  <sex>女</sex>
  </student>
</students>


红色地方为什么老是报错,ID类型的属性值,报错,说:不能id值不能以“1”开头,这是什么原因啊?

------解决方案--------------------
ID类型的属性必须包含一个XML名称,而且该名称在文档中是独一无二的。ID属性可为元素分配一个唯一的标识符。

<!ATTLIST student id ID #REQUIRED>

由于数字不是合法的XML名称,所以ID编号不能以数字开头,解决办法是在前面加下划线或字母。

------解决方案--------------------
The first character of an ID value must be a letter, '_', or ':'
http://xmlwriter.net/xml_guide/attlist_declaration.shtml
------解决方案--------------------
探讨

ID类型的属性必须包含一个XML名称,而且该名称在文档中是独一无二的。ID属性可为元素分配一个唯一的标识符。

<!ATTLIST student id ID #REQUIRED>

由于数字不是合法的XML名称,所以ID编号不能以数字开头,解决办法是在前面加下划线或字母。

------解决方案--------------------
楼上的正确 你讲代码改成
C# code
<?xml version="1.0" encoding="gb2312" ?>
<!DOCTYPE students [
  <!ELEMENT students (student*) >
  <!ELEMENT student (sex)>
  <!ATTLIST student name CDATA #REQUIRED>
  <!ATTLIST student id ID #REQUIRED>
  <!ELEMENT sex (#PCDATA)>
]>
<students>
  <student name="熊俊" id="_23" >
  <sex>男</sex>
  </student>
  <student name="萧蔷" id="_24" >
  <sex>女</sex>
  </student>
</students>

------解决方案--------------------
探讨
引用:

ID类型的属性必须包含一个XML名称,而且该名称在文档中是独一无二的。ID属性可为元素分配一个唯一的标识符。

<!ATTLIST student id ID #REQUIRED>

由于数字不是合法的XML名称,所以ID编号不能以数字开头,解决办法是在前面加下划线或字母。


为什么 <student name="熊俊" id="123" >这个没报哪……