元素类型 "firstname" 不能声明多次?
Element type "firstname" must not be declared more than once?
这是我在为此 XML 文档生成 DTD 时遇到的错误
Element type "firstname" must not be declared more than once line no. 21
问题:这是给定的XML文档
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE order SYSTEM "order.dtd">
<order number="1">
<shipto>
<reference customer="C001"></reference>
</shipto>
<contact>Tom</contact>
<date>
<day>14</day>
<month>06</month>
<year>2017</year>
</date>
<item>
<book>
<isbn>1547895</isbn>
<title>Introduction to XML</title>
<price>1490</price>
<author>
<firstname>Ivan</firstname>
<lastname>charles</lastname>
</author>
</book>
<quantity>4</quantity>
<discount>5</discount>
</item>
<item>
<book>
<isbn>1547885</isbn>
<title>Java Programming</title>
<price>2000</price>
<author>
<firstname>James</firstname>
</author>
</book>
<quantity>4</quantity>
<discount>5</discount>
</item>
<person id="C001">
<firstname>Tom</firstname>
<lastname>Richard</lastname>
<address>
<company>ABC</company>
<city>Bangalore</city>
<addressline>Electronic city</addressline>
</address>
</person>
</order>
代码: 这是我为从上面给出的 XML 文档
生成 DTD 而实现的代码
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT order (shipto,contact,date,item+,person)>
<!ELEMENT shipto (reference)>
<!ELEMENT reference (#PCDATA)>
<!ELEMENT contact (#PCDATA)>
<!ELEMENT date (day,month,year)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT month (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT item (book+,quantity+,discount+)>
<!ELEMENT book (isbn+,title+,price+,author+)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (firstname+,lastname*)>
<!ELEMENT firstname (#PCDATA)> \line number 21
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT quantity (#PCDATA)>
<!ELEMENT discount (#PCDATA)>
<!ELEMENT person (firstname,lastname,address)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT address (company,city,addressline)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT addressline (#PCDATA)>
<!ATTLIST order number ID #REQUIRED>
<!ATTLIST reference customer CDATA #REQUIRED>
<!ATTLIST person id ID #REQUIRED>
如错误所说,您可以only declare an element once。
在您的 DTD 中,您已声明 firstname
和 lastname
两次。
尽管 author
和 person
在其内容模型中都允许 firstname/lastname,但您只能声明一次。如果您删除一个 firstname
声明和一个 lastname
声明,您的 DTD 将有效。
此外,在您的 XML 中,order
元素的 number
属性值为 invalid because it starts with a number.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT order (shipto,contact,date,item+,person)>
<!ELEMENT shipto (reference)>
<!ELEMENT reference (#PCDATA)>
<!ELEMENT contact (#PCDATA)>
<!ELEMENT date (day,month,year)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT month (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT item (book+,quantity+,discount+)>
<!ELEMENT book (isbn+,title+,price+,author+)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (firstname+,lastname*)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT quantity (#PCDATA)>
<!ELEMENT discount (#PCDATA)>
<!ELEMENT person (firstname,lastname,address)>
<!ELEMENT address (company,city,addressline)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT addressline (#PCDATA)>
<!ATTLIST order number CDATA #REQUIRED>
<!ATTLIST reference customer CDATA #REQUIRED>
<!ATTLIST person id CDATA #REQUIRED>
这是更正后的代码。请检查
这是我在为此 XML 文档生成 DTD 时遇到的错误
Element type "firstname" must not be declared more than once line no. 21
问题:这是给定的XML文档
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE order SYSTEM "order.dtd">
<order number="1">
<shipto>
<reference customer="C001"></reference>
</shipto>
<contact>Tom</contact>
<date>
<day>14</day>
<month>06</month>
<year>2017</year>
</date>
<item>
<book>
<isbn>1547895</isbn>
<title>Introduction to XML</title>
<price>1490</price>
<author>
<firstname>Ivan</firstname>
<lastname>charles</lastname>
</author>
</book>
<quantity>4</quantity>
<discount>5</discount>
</item>
<item>
<book>
<isbn>1547885</isbn>
<title>Java Programming</title>
<price>2000</price>
<author>
<firstname>James</firstname>
</author>
</book>
<quantity>4</quantity>
<discount>5</discount>
</item>
<person id="C001">
<firstname>Tom</firstname>
<lastname>Richard</lastname>
<address>
<company>ABC</company>
<city>Bangalore</city>
<addressline>Electronic city</addressline>
</address>
</person>
</order>
代码: 这是我为从上面给出的 XML 文档
生成 DTD 而实现的代码<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT order (shipto,contact,date,item+,person)>
<!ELEMENT shipto (reference)>
<!ELEMENT reference (#PCDATA)>
<!ELEMENT contact (#PCDATA)>
<!ELEMENT date (day,month,year)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT month (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT item (book+,quantity+,discount+)>
<!ELEMENT book (isbn+,title+,price+,author+)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (firstname+,lastname*)>
<!ELEMENT firstname (#PCDATA)> \line number 21
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT quantity (#PCDATA)>
<!ELEMENT discount (#PCDATA)>
<!ELEMENT person (firstname,lastname,address)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT address (company,city,addressline)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT addressline (#PCDATA)>
<!ATTLIST order number ID #REQUIRED>
<!ATTLIST reference customer CDATA #REQUIRED>
<!ATTLIST person id ID #REQUIRED>
如错误所说,您可以only declare an element once。
在您的 DTD 中,您已声明 firstname
和 lastname
两次。
尽管 author
和 person
在其内容模型中都允许 firstname/lastname,但您只能声明一次。如果您删除一个 firstname
声明和一个 lastname
声明,您的 DTD 将有效。
此外,在您的 XML 中,order
元素的 number
属性值为 invalid because it starts with a number.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT order (shipto,contact,date,item+,person)>
<!ELEMENT shipto (reference)>
<!ELEMENT reference (#PCDATA)>
<!ELEMENT contact (#PCDATA)>
<!ELEMENT date (day,month,year)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT month (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT item (book+,quantity+,discount+)>
<!ELEMENT book (isbn+,title+,price+,author+)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (firstname+,lastname*)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT quantity (#PCDATA)>
<!ELEMENT discount (#PCDATA)>
<!ELEMENT person (firstname,lastname,address)>
<!ELEMENT address (company,city,addressline)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT addressline (#PCDATA)>
<!ATTLIST order number CDATA #REQUIRED>
<!ATTLIST reference customer CDATA #REQUIRED>
<!ATTLIST person id CDATA #REQUIRED>
这是更正后的代码。请检查