Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dtd/xml—我做错了什么?_Xml_Dtd - Fatal编程技术网

dtd/xml—我做错了什么?

dtd/xml—我做错了什么?,xml,dtd,Xml,Dtd,我正在为一些xml代码编写dtd。尽管读了很多这方面的文章,我还是被困在了哪里。任何建议都将不胜感激。我知道这是基本的,但我是新来的,它不是点击 这是修正后的dtd <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE Refs [ <!ELEMENT Refs (Book)> <!ELEMENT Book (author,editor,pdate,title,pplace,pname)> <!ELEM

我正在为一些xml代码编写dtd。尽管读了很多这方面的文章,我还是被困在了哪里。任何建议都将不胜感激。我知道这是基本的,但我是新来的,它不是点击

这是修正后的dtd

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Refs [
<!ELEMENT Refs (Book)>
<!ELEMENT Book (author,editor,pdate,title,pplace,pname)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT editor (#PCDATA)>
<!ELEMENT pdate (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT pplace (#PCDATA)>
<!ELEMENT pname (#PCDATA)>
]>
这是xml文件

<Refs>
<Book>
    <author>RANGANATHAN</author>
    <editor>anon</editor>
    <pdate>1967</pdate>
    <title>PROLEGOMENATOLIBRARYCLASSIFICATION</title>
    <pplace>NEWYORKNY</pplace>
    <pname>ASIAPUBLISHINGHOUSE</pname>
</Book>
 </Refs>

从您发布的内容来看,您的文档必须将Refs作为文档顶级元素,但您的示例XML将Book作为文档元素。因此,您可以更改文档并将所有内容包含在Refs顶级元素中

如果XMLPI给您带来了麻烦,那么如果您只处理XML标记,那么您可以不使用它;XML不需要它,只有当您打算在应用程序中使用其他标记(如HTML和/或SGML)时,它才有用

序言末尾的]>字符序列之间不能有空格,因此请删除换行符

显示为DTD的内容实际上是一个文档序言,必须是XML文件本身的开头;如果希望它位于单独的.dtd文件中,请省去DOCTYPE声明并删除closing]>,以便外部.dtd文件只包含元素声明。然后,您可以将refs.dtd用作XML文件中的第一行来引用外部.dtd文件,其中refs.dtd仅包含元素声明

据我所知,XMLPI也不应作为外部DTD的一部分,而只是在文档序言的开头使用


另外,DTD开头的垃圾字符是怎么回事?

我不确定您使用的验证器是什么,所以我不打算评论该验证程序的位置。有关使用外部DTD的说明,请参阅。这可能不是必需的,但这取决于您使用什么来验证XML

若要修复当前设置,请尝试将DOCTYPE Refs更改为DOCTYPE Book。DOCTYPE必须与根元素匹配。或者,您可以添加Refs根元素,如另一个答案中所述

另一个答案还提到,在结束doctype声明时,需要删除“]和>”之间的换行符。虽然在同一行上同时具有]>是常见的


您还需要删除ï»?这是BOM字节顺序标记在编码不正确时的样子。你不能有任何字符之前,你有什么具体的问题?顺便说一句,您的XML无效,缺少标记。dtd-正确吗?@AndroidMe-您有什么理由认为不正确吗?您是否尝试过使用DTD?谢谢您的回答。是的,在验证器中如果XML PI出现问题,如果您只处理XML标记,您可以不使用它;XML不需要它——XML 1.0版不需要XML声明,但确实需要。非常感谢你们。我将根据你的建议修改它,并将其张贴出来,看看我是否做得正确,如果可以的话。好的,修改了原件。如果您能看一看,我将不胜感激。谢谢。在原来的帖子里修改过。@Daniel现在没有了,谢谢Daniel。我现在开始做一个较长的练习,这只是其中的一小部分。最后有问题。如果没有快乐,我会尝试找出答案并发布。谢谢你的帮助和回复。非常感谢。