Skip to content

misiam/AdvancedXml.HW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AdvancedXml.HW

Задание к модулю Advanced XML

Общая постановка

Ваш знакомый – руководитель районной библиотеки – попросил помочь с доработкой существующей библиотечной системы. К сожалению, исходных кодов самой программы не осталось, но о полном переписывании речь не идет (нет возможностей, всем в целом нравится текущий вариант, и т.д.). К счастью, выяснилось, что в качестве формата хранения, а также для обмена данными с центральным библиотечным фондом используется XML достаточно простой структуры (см. приложенный файл books.xml) Поэтому, после обсуждения, принято решение сделать ряд утилит, которые будут работать с этими XML напрямую и закрывать отдельные текущие актуальные вопросы.

Примечание! При выполнении конкретных заданий вы можете как реализовать отдельные утилиты (консольные или GUI – на ваш выбор), так и реализовать библиотеку классов, которая будет реализовывать запрошенный функционал и тесты к ней (но не реализовывать интерфейс). Обсудите с ментором и выберите устраивающий вас вариант.

Задание 1. Проверка файла обмена

Для передачи данных о поступивших в фонды книгах используется обмен XML-файлами той же структуры, что и само хранилище (см. books.xml). Библиотечная программа умеет читать эти файлы и добавлять нужную информацию в хранилище. К сожалению, если в транспортном файле нарушена структура, то загрузка завершается ошибкой, с невнятным сообщением и без какой-либо диагностики, где именно нарушена структура. Ваша задача:

  • Разработать XML Schema для транспортного файла. При этом чтобы делались такие проверки: 1 Тэг isbn – опциональный, но если присутствует, должен содержать корректный ISBN номер 2 Тэг genre содержит значения из заранее предопределенного списка (пусть это будут те жанры, которые присутствуют в books.xml) 3 Тэги publish_date и registration_date содержат даты в формате yyyy-mm-dd. 4 Атрибут id – является идентификатором, уникальным в рамках документа

  • Написать утилиту проверки, которая используя разработанную схему, проверяет входной файл и выдает места обнаружения ошибок (например, можно выдавать id тех книг, в которых найдены ошибки, или строку и позицию тэга с ошибкой, ...).

Задание 2. RSS-лента

У библиотеки есть сайт, на который они хотели бы размещать анонсы поступлений. К сожалению, для полноценного наполнения сайта нет ресурсов, поэтому решено давать RSS ленту новостей, которую строить на основе файлов каталога. Ваша задача:

  • Разработать xslt преобразование из формата books.xml в RSS или Atom формат. При этом: 1 В качестве даты новости использовать дату регистрации 2 Если книга имеет жанр компьютерной литературы и указан isbn, то в качестве ссылки на полную новость давать ссылку на Online-библиотек Safary Books Online в формате http://my.safaribooksonline.com//
  • Разработать утилиту, которая принимает на вход файл формата books.xml и выдает новую ленту новостей

Задание 3. Отчет

Формируем несколько HTML отчетов (особое оформление не требуется – только данные). Формирование HTML делаем с помощью XSLT. Необходимо сделать:

  • Отчет называется «Текущие фонды по жанрам» и содержит: 1 Шапку (заголовок) отчета с текущей датой 2 По таблице на каждый жанр, в таблице колонки:  Автор  Название  Дата издания  Дата регистрации 3 Итог по каждой таблице (общее количество книг указанного жанра) 4 Общий итог по всей библиотеке
  • Утилиту, которая принимает на вход: исходный файл с данными, файл преобразования (XSLT), файл html, куда сохранить результат.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published