【问题标题】:Why is this DTD not valid?为什么这个 DTD 无效?
【发布时间】:2015-05-26 09:29:31
【问题描述】:

我已尝试使用 1-2 个验证器验证此 DTD,但我不确定它为什么无效:

DTD 代码:

任何帮助将不胜感激!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cars 
[
    <!ELEMENT car (maker, model, year, colour, engine, number_of_doors, accessories)>

    <!ELEMENT maker (#PCDATA)>
    <!ELEMENT model (#PCDATA)>
    <!ELEMENT year (#PCDATA)>
    <!ELEMENT colour (#PCDATA)>
    <!ELEMENT engine (number_of_cylinders)>
    <!ELEMENT number_of_doors (#PCDATA)>
    <!ELEMENT accessories (#PCDATA)>

    <!ELEMENT number_of_cylinders (#PCDATA)>

    <!ATTLIST accessories radio (yes|no) #REQUIRED
        air_conditioning (yes|no) #REQUIRED
        power_windows (yes|no) #REQUIRED
        power_steering (yes|no) #REQUIRED
        power_brakes (yes|no) #REQUIRED
    >
]>

【问题讨论】:

  • 显示您的输入 XML 并告诉我们验证器给出了哪些错误消息。

标签: xml attributes element dtd


【解决方案1】:

要使具有内部 DTD 子集的 XML 文档有效,请进行以下更改:

  1. 将文档元素从cars 更改为car
  2. 构建与给定内部子集关联的 XML。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE car 
    [
    <!ELEMENT car (maker, model, year, colour, engine, number_of_doors, accessories)>
    
    <!ELEMENT maker (#PCDATA)>
    <!ELEMENT model (#PCDATA)>
    <!ELEMENT year (#PCDATA)>
    <!ELEMENT colour (#PCDATA)>
    <!ELEMENT engine (number_of_cylinders)>
    <!ELEMENT number_of_doors (#PCDATA)>
    <!ELEMENT accessories (#PCDATA)>
    
    <!ELEMENT number_of_cylinders (#PCDATA)>
    
    <!ATTLIST accessories radio (yes|no) #REQUIRED
        air_conditioning (yes|no) #REQUIRED
        power_windows (yes|no) #REQUIRED
        power_steering (yes|no) #REQUIRED
        power_brakes (yes|no) #REQUIRED>
    ]>
    <car>
        <!-- Finish building out the XML per the internal subset. -->
    </car>
    

【讨论】:

    【解决方案2】:

    您可以使用这个验证器最适合 DTD https://validator.w3.org/check

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2019-03-26
      相关资源
      最近更新 更多