xiazaizai03 2014-04-18 11:57 采纳率: 0%
浏览 1139

DTD的ATTLIST没有效果

定义了xml和dtd文件,但是dtd的属性约束没有效果。

xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books SYSTEM "books2.dtd">
<books>
    <book id="a123" city="阿斯顿">
        <name>
        </name>
        <author>
        </author>
        <price>
        123
        </price>
    </book>
    <book id="a123">
        <name>
        </name>
        <author>
        </author>
        <price>
        321
        </price>
    </book>
</books>

下面是dtd文件

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (book+)>
<!ELEMENT book (name?,author,(price|money))>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST book
    id ID #REQUIRED
    title CDATA #IMPLIED
    lang CDATA #FIXED "固定值"
    category  CDATA "默认值"
    pId IDREF #REQUIRED
    city (北京|上海|广州) #REQUIRED
>
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 23:39
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的XML文档中,你已经正确地使用了<book>元素,并且为它指定了一个ID。然而,当你尝试创建一个包含多个book元素的文档时,你会发现<book>元素并没有按照预期的方式被识别。这主要是因为你的DTD(Document Type Definition)中的book元素是一个组合类型(Composite type),而不是一个单个元素。

    为了解决这个问题,你需要确保你的<book>元素是正确的,以及它的属性和内容符合DTD的要求。例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE books SYSTEM "books2.dtd">
    <books>
        <book id="a123" city="阿斯顿">
            <name>
            </name>
            <author>
            </author>
            <price>
            123
            </price>
        </book>
        <book id="b456" city="伦敦">
            <name>
            </name>
            <author>
            </author>
            <price>
            456
            </price>
        </book>
    </books>
    

    在这个例子中,我们创建了一个新的<book>元素,并将其ID设为b456。此外,我们还添加了一些额外的信息到每个book元素中,比如城市名称和价格。

    请注意,这个例子假设你的DTD文件仍然有效并且包含了所有的期望信息。如果你的DTD文件有错误或遗漏了某些部分,请提供完整的DTD文件以获得帮助。

    评论

报告相同问题?