XML - как решить, стоит ли помещать те же узлы в родительский узел - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть XML bookstore, и я не уверен, как его структурировать.

Я обращаю внимание на то, что у книги может быть несколько авторов.

I обычно XML-файлы помещают элементы с одинаковыми именами в родительский элемент.

В чем идея? Каковы преимущества и недостатки следующих двух слегка отличающихся подходов?

1) Авторы не находятся в родительском элементе:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="web">
        <title lang="en">Superbook</title>
        <author>
            <name>Clark</name>
            <lastname>Kent</lastname>
        </author>
        <author>
            <name>Lois</name>
            <lastname>Lane</lastname>
        </author>
        <author>
            <name>Lex</name>
            <lastname>Luther</lastname>
        </author>
        <year>2003</year>
        <price>49.99</price>
    </book>
    <book category="web" cover="paperback">
        <title lang="en">Batman</title>
        <author>
            <name>Bruce</name>
            <lastname>Wayne</lastname>
        </author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

2) Авторы находятся в родительском элементе:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="comic">
        <title lang="en">Superbook</title>
        <authors>
            <author>
                <name>Clark</name>
                <lastname>Kent</lastname>
            </author>
            <author>
                <name>Lois</name>
                <lastname>Lane</lastname>
            </author>
            <author>
                <name>Lex</name>
                <lastname>Luther</lastname>
            </author>
        </authors>
        <year>2003</year>
        <price>49.99</price>
    </book>
    <book category="comic" cover="paperback">
        <title lang="en">Batman</title>
        <authors>
            <author>
                <name>Bruce</name>
                <lastname>Wayne</lastname>
            </author>
        </authors>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

1 Ответ

0 голосов
/ 01 апреля 2020

Вы, как сайты спецификации W3, можете использовать элементы / атрибуты по своему усмотрению.
Я использую макет на основе атрибутов и избегаю элементов "коллекции", таких как "авторы", которые на самом деле не служат цель

<xml>
    <book category='web' year='2003' price='49.99'>
        <title lang='en'>Superbook</title>
        <author name='Clark' lastname='Kent'/>
        <author name='Lois' lastname='Lane'/>
        <author name='Lex' lastname='Luther'/>
    </book>

    <book category='web' cover='paperback' year='2003' price='49.99'>
        <title lang='en'>Batman</title>
        <author name='Bruce' lastname='Wayne'/>
    </book>
</xml>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...