связывание данных из разных элементов в XML-файле через xslt - PullRequest
0 голосов
/ 05 июня 2018

У меня есть следующий xml-файл, в котором каждый элемент книги имеет три атрибута: @xml: id, @author и @info (в составе '#' + '@ xml: id' + '- ana' исовпадает с идентификатором соответствующего элемента жанра).

<?xml version="1.0" encoding="UTF-8"?>
<doc>
    <Collection>
        <books>
            <book xml:id="d1" author="#e1" info="#d1-ana"/>
            <book xml:id="d2" author="#e2" info="#d2-ana"/>
            <book xml:id="d3" author="#e2" info="#d3-ana"/>
        </books>
        <genre xml:id="d1-ana"> autobiography </genre>
        <genre xml:id="d2-ana"> romance </genre>
        <genre xml:id="d3-ana"> horror </genre>
    </Collection>
    <authors>
        <author xml:id="e1">Author1</author>
        <author xml:id="e2">Author2</author>
    </authors>
</doc>

Что я хотел бы сделать, это для тех случаев, когда @author имеет одинаковое значение (второй и третий элемент книги с @authorзначение # e2), поменяйте местами порядок жанров, то есть на первом месте будет элемент жанра со значением horror, а на втором - элемент со значением romance, например:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
    <Collection>
        <books>
            <book xml:id="d1" author="#e1" info="#d1-ana"/>
            <book xml:id="d2" author="#e2" info="#d2-ana"/>
            <book xml:id="d3" author="#e2" info="#d3-ana"/>
        </books>
        <genre xml:id="d1-ana"> autobiography </genre>
        <genre xml:id="d3-ana"> horror </genre>
        <genre xml:id="d2-ana"> romance </genre>
    </Collection>
    <authors>
        <author xml:id="e1">Author1</author>
        <author xml:id="e2">Author2</author>
    </authors>
</doc>

Я не совсемубедитесь, как сравнить эти элементы книги и как создать ссылку на элементы жанра (@xml: id каждого элемента жанра равно # + значение @info элементов книги).

...