XML разрешает только определенный ввод в элементе с использованием DTD

Хорошо, я пытаюсь разрешить в элементе категории только следующие входы (электроника, продукты, домашнее хозяйство), однако я не могу понять, как это сделать правильно. Я использую внутреннее DTD и имею два полных примера того, как я хочу, чтобы он обрабатывал документы. Вот код:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE manufacturer[
    <!ELEMENT manufacturer (companyName, address, phone, contactPerson?, products)>
    <!ATTLIST manufacturer identifier CDATA #REQUIRED>
    <!ELEMENT companyName (#PCDATA)>
    <!ELEMENT address (#PCDATA)>
    <!ELEMENT phone (#PCDATA)>
    <!ELEMENT contactPerson (#PCDATA)>
    <!ELEMENT products (product+)>
    <!ELEMENT product (model, price, description, category)>
    <!ATTLIST product code CDATA #REQUIRED>
    <!ELEMENT model (#PCDATA)>
    <!ELEMENT price (#PCDATA)>
    <!ELEMENT description (#PCDATA)>
    <!ELEMENT category (household|groceries|electronics)
    ]>

<manufacturer identifier = "m1">
    <companyName>Kitchen Manufacturers International</companyName>
    <address>1256 Factory Lane, Cleveland, OH 44111</address>
    <phone>216-333-4444</phone>
    <contactPerson>Fred Smith</contactPerson>
    <products>
        <product code = "X345">
            <model>Sun Beam Mixer</model>
            <price>14.75</price>
            <description>Popular handheld mixer</description>
            <category>household</category>
        </product>
        <product code = "MW30">
            <model>GE30 Microwave</model>
            <price>99.95</price>
            <description>A popular model</description>
            <category>household</category>
        </product>
    </products>
</manufacturer>

<manufacturer identifier = "m3">
    <companyName>Kraft Foods Incorporated</companyName>
    <address>1515 Kraft Avenue, Chicago, IL 37897</address>
    <phone>222-333-4444</phone>
    <products>
        <product code = "345DR">
            <model>Jiffy Peanut Butter</model>
            <price>4.95</price>
            <description>America’s favorite, made from real peanuts</description>
            <category>groceries</category>
        </product>
        <product code = "321SD">
            <model>Mac N' Cheese</model>
            <price>1.99</price>
            <description>Every child’s favorite dinner</description>
            <category>groceries</category>
        </product>
        <product code = "123DD">
            <model>Rice Krispies</model>
            <price>2.99</price>
            <description>Snap Crackle and Pop</description>
            <category>groceries</category>
        </product>
    </products>
</manufacturer>

person kmaz13    schedule 30.04.2012    source источник


Ответы (1)


Вы не можете указать ограничение на содержимое XML-элемента с помощью DTD. Вы указали, что единственными дочерними элементами в category могут быть _2 _... и т. Д.

person Francis Upton IV    schedule 30.04.2012
comment
Это то, о чем я думал и везде читал. Но мой учитель сформулировал проблему, сказав, что правильным вводом для категорий являются эти три вещи. Так что я был сбит с толку относительно того, что он хотел ... (Он не хотел, чтобы они были атрибутами, так что ... что угодно) В любом случае, большое спасибо за ответ на мое замешательство. Этот учитель ужасен. - person kmaz13; 30.04.2012