定义DTD以存储值的多个实例

时间:2009-11-19 20:56:38

标签: xml dtd

请告诉我如何扩展以下代码,以便在xml文档中添加五个专业?

<?xml version=”1.0” encoding=”ISO-8859”?>
<!DOCTYPE person [
<!ELEMENT first_name (#PCDATA)>
<!ELEMENT last_name (#PCDATA)>
<!ELEMENT profession (#PCDATA)>
<!ELEMENT name (first_name, last_name)>
<!ELEMENT person (name, profession)>]>
<person>
    <name>
        <first_name>Jack</first_name>
        <last_name>Jill</last_name>
    </name>
    <profession>website</profession>
</person>

感谢您的回答

3 个答案:

答案 0 :(得分:3)

这样的事情应该做

<?xml version=”1.0” encoding=”ISO-8859”?>
<!DOCTYPE person [
    <!ELEMENT first_name ( #PCDATA ) >
    <!ELEMENT last_name ( #PCDATA ) >
    <!ELEMENT name ( first_name, last_name ) >
    <!ELEMENT person ( name, professions ) >
    <!ELEMENT profession ( #PCDATA ) >
    <!ELEMENT professions ( profession+ ) >
]>
<person>
    <name>
        <first_name>Jack</first_name>
        <last_name>Jill</last_name>
    </name>
    <professions>
        <profession>website</profession>
        <profession>some other profession</profession>
    </professions>
</person>

答案 1 :(得分:1)

文档顶部的DTD为每个人元素指定一个名称和一个职业。

将其更改为使用+(如果您需要一个或多个职业)或*(如果您想要0个或更多职业):

<!ELEMENT person (name, profession+)

<!ELEMENT person (name, profession*)

请注意,DTD相当不合时宜,通常由XSD规范取代,后者更灵活,并且本身用XML编写。

答案 2 :(得分:1)

将DTD更改为

<?xml version=”1.0” encoding=”ISO-8859”?>
<!DOCTYPE person [
<!ELEMENT first_name (#PCDATA)>
<!ELEMENT last_name (#PCDATA)>
<!ELEMENT profession (#PCDATA)>
<!ELEMENT professions (profession*)>
<!ELEMENT name (first_name, last_name)>
<!ELEMENT person (name, professions)>]>
<person>
<name>
<first_name>Jack</first_name>
<last_name>Jill</last_name>
</name>
<professions>
    <profession>prof 1</profession>
    <profession>prof 2</profession>
</professions>
</person>