Обработка и анализ XML файла.
Загрузка файла, анализ на определенную структуру, которая известна и задана изначально как «паттерн» с набором условий, сохранение файла в случае нахождения соответствия куска заданной структуре и условиям и последующий вывод файла на экран в виде таблицы с возможностью сортировки и контекстного поиска. Если в загружаемом файле не найдено соответствие заданной структуре и условиям, то он не сохраняется.
Создание API, которое будет предоставлять возможность получения списка файлов, которые были сохранены, а также получения одного или нескольких файлов в виде формата JSON. Создание БД для хранения имен файлов (только тех, которые подошли по условию), даты из обработки (сохранения). На диске файлы хранятся с уникальными именами. При получении данных через API, указывать в формате JSON, какой файл или набор файлов передается с оригинальными именами файлов.
<Component Id="030-032-000-000">
<Value></Value>
<Limit></Limit>
<Error>ERROR</Error>
</Component>
- file_1.xml - не соответствует сигнатуре
- file_2.xml - верно
- file_3.xml - повреждена структура
- элемент Component не является корневым элементом
- (!?) имеет три свойства: Value, Limit, Error
- Также, у элемента Component имеется атрибут Id, который имеет определенное значение "030-032-000-000"; другие значения не соответствуют условию.
- элемент Value должен быть пустым
- элемент Limit должен быть пустым
- элемент Error должен содержать значение “ERROR”
- элемент регистpoнезависимы
доступ должен быть открытым, безключевым, не надо писать целую службу, достаточно просто уметь отдавать данные по запросу без аутентификации и секретного ключа, предусмотреть ответ сервера на обработку некорректного запроса. К заданию прилагается несколько xml файлов для анализа. Используемые инструменты: PHP, JS, SQL.
поиск по табличке и сортировка (js можем обсудить)
- set up php 8.2/8.3
- composer install
- создать базу xmltests
- доступ к базе прописать в .env (DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD)
- php artisan migrate
- http://localhost/xml/index
я хочу хранить свою библиотеку книг в БД. Меня волнуют названия книг и авторы — больше ничего хранить не надо. Предложите структуру таблиц, далее вытащите список книг, которые написаны 3-мя соавторами.
получить отчет «книга — количество соавторов» и отфильтровать те, у которых соавторов меньше 3х.
CREATE TABLE `books` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `authors` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `book_authors` (
`id` int NOT NULL AUTO_INCREMENT,
`book_id` int NOT NULL,
`author_id` int NOT NULL,
PRIMARY KEY (`id`)
)
SELECT ba.book_id as book_id, b.name AS book_name, count(ba.book_id) AS author_count
FROM book_authors ba
JOIN books b ON b.id = book_id
GROUP BY ba.book_id
HAVING count(ba.book_id) < 3