无法实现外部DTD

时间:2014-07-14 15:25:15

标签: xml external dtd

修改

我在实施DTD时遇到了麻烦。我的DTD中一直出现错误:

"根元素之前的文档中的标记必须格式正确。"

在我的XML文档中,我收到错误:

"文档类型声明包含或指向的标记声明必须格式正确。"

DTD

<?xml version="1.0" encoding="UTF-8"?>
<!-- New document created with EditiX at Sun Jul 06 07:25:48 AST 2014 -->


<!ELEMENT periodic-elements (periodic-element*)>
<!ELEMENT periodic-element (symbol, name, atomic-number, atomic_weight)>
<!ELEMENT symbol (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT atomic_number (#PCDATA)>
<!ELEMENT atomic_weight (#PCDATA)>

XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- New document created with EditiX at Sun Jul 06 07:25:48 AST 2014 -->

<!DOCTYPE periodic SYSTEM "C:\Users\Randy\Desktop\CMIS 170\Week 3\Homework 3\Homework3DTD.txt">
<periodic>
<element>  
  <symbol>FE</symbol> 
  <name>Iron</name> 
  <atomic_number>26</atomic_number>
  <atomic_weight>55.845</atomic_weight> 
</element>

<element>
  <symbol>Ir</symbol> 
  <name>Iridium</name> 
  <atomic_number>77</atomic_number>
  <atomic_weight>192.217</atomic_weight> 
</element>

<element>  
  <symbol>P</symbol> 
  <name>Phosphorus</name> 
  <atomic_number>15</atomic_number>
  <atomic_weight>30.973762</atomic_weight> 
</element>

<element>  
  <symbol>Uut</symbol> 
  <name>Ununtrium</name> 
  <atomic_number>113</atomic_number>
  <atomic_weight>284</atomic_weight> 
</element>

<element>  
  <symbol>Po</symbol> 
  <name>Polonium</name> 
  <atomic_number>84</atomic_number>
  <atomic_weight>209</atomic_weight> 
</element>
</periodic>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要从DTD中删除DOCTYPE声明。

有关更好的解释,请参阅External referenced DTD in XML

您还需要在XML中的DOCTYPE声明中将elements更改为periodic。 DOCTYPE声明中的名称必须与根元素的名称匹配。

修改

您的DTD中的姓名和您的XML都不匹配。例如,在您的DTD中,您有periodic-elementsperiodic-element,但您的XML有periodicelement

此外,您对periodic-element的声明引用了元素atomic-number,但您的声明为atomic_number

这是一个验证的版本。你应该可以从这开始并随意修改它。

DTD

<?xml version="1.0" encoding="UTF-8"?>
<!-- New document created with EditiX at Sun Jul 06 07:25:48 AST 2014 -->


<!ELEMENT periodic-elements (periodic-element*)>
<!ELEMENT periodic-element (symbol, name, atomic_number, atomic_weight)>
<!ELEMENT symbol (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT atomic_number (#PCDATA)>
<!ELEMENT atomic_weight (#PCDATA)>

<强> XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- New document created with EditiX at Sun Jul 06 07:25:48 AST 2014 -->

<!DOCTYPE periodic-elements SYSTEM "C:\Users\Randy\Desktop\CMIS 170\Week 3\Homework 3\Homework3DTD.txt">
<periodic-elements>
    <periodic-element>  
        <symbol>FE</symbol> 
        <name>Iron</name> 
        <atomic_number>26</atomic_number>
        <atomic_weight>55.845</atomic_weight> 
    </periodic-element>

    <periodic-element>
        <symbol>Ir</symbol> 
        <name>Iridium</name> 
        <atomic_number>77</atomic_number>
        <atomic_weight>192.217</atomic_weight> 
    </periodic-element>

    <periodic-element>  
        <symbol>P</symbol> 
        <name>Phosphorus</name> 
        <atomic_number>15</atomic_number>
        <atomic_weight>30.973762</atomic_weight> 
    </periodic-element>

    <periodic-element>  
        <symbol>Uut</symbol> 
        <name>Ununtrium</name> 
        <atomic_number>113</atomic_number>
        <atomic_weight>284</atomic_weight> 
    </periodic-element>

    <periodic-element>  
        <symbol>Po</symbol> 
        <name>Polonium</name> 
        <atomic_number>84</atomic_number>
        <atomic_weight>209</atomic_weight> 
    </periodic-element>
</periodic-elements>