代码之家  ›  专栏  ›  技术社区  ›  Nur Hanisah

XML文件中的内部DTD错误

  •  0
  • Nur Hanisah  · 技术社区  · 6 年前

    我的XML文件无法运行。我在DTD上有一些错误。我的DTD代码有什么问题?我试过在Internet explorer上运行它,但它不起作用。当我没有包含DTD代码时,它工作得很好。但一旦我包含DTD,它就会显示一个空白页面。在中验证xml文件后 http://validator.w3.org/ ,我得到了这些错误

    第25行第23列:文档类型此处不允许元素“book”

    < book instock=“是” &燃气轮机;

    在上下文中找到了上面命名的元素 允许。这可能意味着嵌套的元素不正确-- 例如“body”部分中的“style”元素,而不是内部 “head”--或两个重叠的元素(不允许)

    此错误的一个常见原因是在HTML中使用XHTML语法 文件。由于HTML的隐式闭包元素规则,这 错误可能会产生级联效果。例如,使用XHTML a的“head”部分中“meta”和“link”的“self-closing”标记 HTML文档可能会导致解析器推断“head”的结尾 节和“正文”节的开头(其中“链接”和 不允许使用“meta”;因此报告了错误)

    <?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
    <?xml-stylesheet type ="text/css" href="Books.css"?>
    
    <!DOCTYPE inventory [
        <!ELEMENT inventory(book)>
        <!ELEMENT book(title,author,isbn,publisher,pages,price)>
    <!ATTLIST book instock CDATA #REQUIRED>
        <!ELEMENT title(#PCDATA)>
        <!ELEMENT author(#PCDATA)>
        <!ELEMENT isbn(#PCDATA)>
        <!ELEMENT publisher(#PCDATA)>
        <!ELEMENT pages(#PCDATA)>
        <!ELEMENT price(#PCDATA)>
    ]>
    
    <inventory>
        <book instock = "yes">
            <title>Beginning web programming with html, xhtml, and css </title>
            <author>Duckett, jon </author>
            <isbn>0764570781</isbn>
            <publisher>Wrox pr inc</publisher>
            <pages>840</pages>
            <price>MYR 119.80</price>
        </book>
        <book instock = "yes">
            <title>Core web programming(2nd edition)</title>
            <author>Marty hall, larry brown</author>
            <isbn>0130897930 </isbn>
            <publisher>Prentice hall ptr </publisher>
            <pages>1385</pages>
            <price> MYR 125.00</price>
        </book>
        <book instock = "no">
            <title>An introduction to web design and programming</title>
            <author>Paul s. wang, sanda katila</author>
            <isbn>0534395287</isbn>
            <publisher>Course technology</publisher>
            <pages>592</pages>
            <price> MYR 251.00</price>
        </book>
    </inventory>
    
    1 回复  |  直到 4 年前
        1
  •  0
  •   Jim Garrison    6 年前
    <!ELEMENT inventory(book)>
    

    这表示 inventory 元素只能包含一个 book 。你想要的

    <!ELEMENT inventory(book)*>
    

    或者也许

    <!ELEMENT inventory(book)+>