在线验证: http://xmlvalidator.new-studio.org
XML Document (也显示在下方)
当我取消注释以下行时没有。 4
<!ELEMENT persona (#PCDATA|(name,dob?,address*)) >
并评论以下行号。 5
<!ELEMENT persona (name,dob?,address*) >
为什么会出现以下错误?
在这里,我希望用户可以使用可解析的字符串或者可以写出名称,dob&amp;地址标记并在其中写入信息。
当我将编码从“ISO-8859-1”替换为“utf-8”时,将该页面加载到浏览器(Google Chrome)中;它显示以下错误。
error on line 2 at column 21: Encoding error
但验证成功&amp;行。
为什么会显示错误? 哪种编码好?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE personality [
<!ELEMENT personality (persona*) >
<!-- <!ELEMENT persona (#PCDATA|(name,dob?,address*)) > -->
<!ELEMENT persona (name,dob?,address*) >
<!-- <!ELEMENT name (#PCDATA|(first_name,last_name)) > -->
<!ELEMENT name (first_name,last_name) >
<!ELEMENT first_name (#PCDATA) >
<!ELEMENT last_name (#PCDATA) >
<!ELEMENT dob (date+,month+,year+) >
<!ELEMENT date (#PCDATA) >
<!ELEMENT month (#PCDATA) >
<!ELEMENT year (#PCDATA) >
<!ELEMENT address (building,street,city,state,country,country_code) >
<!ELEMENT building (#PCDATA) >
<!ELEMENT street (#PCDATA) >
<!ELEMENT city (#PCDATA) >
<!ELEMENT state (#PCDATA) >
<!ELEMENT country (#PCDATA) >
<!ELEMENT country_code (#PCDATA) >
<!ATTLIST persona id ID #REQUIRED >
<!ATTLIST name type (string|number) "string" >
<!ATTLIST dob type (string|number) "number" >
<!ATTLIST address type (string|number) "string" >
<!ENTITY author "Miguel Pitts" >
<!ENTITY website "example.com" >
<!ENTITY email "miguelpitts4MN@teleosaurs.xyz" >
<!ENTITY copyright "Copyright © Miguel Pitts" >
]>
<?xml-stylesheet type="text/css" href="xmlstyle.css" ?>
<personality>
<persona id="p1">
<name type="string">
<first_name>Miguel</first_name>
<last_name>Pitts</last_name>
</name>
<dob type="number">
<date>12</date>
<month>02</month>
<year>1989</year>
</dob>
<address type="string">
<building>1233</building>
<street>15</street>
<city>NY</city>
<state>Bangkok</state>
<country>China</country>
<country_code>82</country_code>
</address>
</persona>
</personality>
答案 0 :(得分:2)
在这里,我希望用户可以使用可解析的字符串或者可以写出名称,dob&amp;地址标记并在其中写入信息。
可理解,但XML规范不允许(出于Nic Gibson在another SO question中概述的原因)。您最好的选择是稍微重新设计XML;例如,你可以声明
<!ELEMENT persona (str | (name,dob?,address*) ) >
<!ELEMENT str (#PCDATA) >
或者您可以声明
<!ELEMENT persona_simple (#PCDATA) >
<!ELEMENT persona_struct (name,dob?,address*) >
为什么会显示错误?哪种编码好?
这些技巧问题是什么?它显示错误,因为它检测到输入的字符编码不可能是声明的字符编码。通过“哪种编码好?”我假设你的意思是“我应该在我的文档的编码声明中命名哪个编码?” - 该问题的答案是“您在文档中使用的编码”。如果你问这个问题,我想你不确定你的文档实际使用哪种编码;从您描述的行为来看,看起来该文档实际上并非使用UTF-8而是使用ISO 8859第1部分。
答案 1 :(得分:0)