Jump to content

ХаXml

ХаXml
Оригинальный автор(ы) Малькольм Уоллес
Стабильная версия
v1.25.13 [1] / 13 июля 2023 г .; 12 месяцев назад ( 13.07.2023 )
Репозиторий https://github.com/HaXml/HaXml
Написано в Хаскелл
Тип библиотека
Лицензия LGPL 2.1

HaXml — это набор утилит для анализа , фильтрации , преобразования и создания на расширяемом языке разметки ( XML документов ) с использованием языка программирования Haskell . [2]

Утилиты HaXml включают в себя: [2] [3]

HaXml предоставляет библиотеку комбинаторов с набором функций высшего порядка , которые обрабатывают XML-документы после того, как они представлены с использованием собственных типов данных Haskell . [4] Основной тип данных: Content который представляет подмножество документа XML. [5]

HaXml позволяет преобразовывать XML в данные Haskell и наоборот, а также XML в XML (путем преобразования или фильтрации ). Обычное использование парсера HaXml включает определение метода обхода XML-данных, и он имеет CFilter тип ( фильтр содержимого ), где type CFilter = Content -> [Content]. Это означает, что эта функция , определенная пользователем, возьмет фрагмент данных XML и либо вернет больше фрагментов, либо не вернет ничего. Этот подход позволяет выбирать элементы XML, удовлетворяющие определенным условиям (например, теги с определенным именем или все дочерние элементы указанного тега). [6] [7]

В главе 22 «Расширенный пример: программирование веб-клиента» книги « Реальный мир Haskell» Брайана О'Салливана, Дона Стюарта и Джона Герзена рассматривается следующий пример. [6] XML-файл выглядит следующим образом (упрощенная версия):

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" version="2.0">
  <channel>
    <title>Haskell Radio</title>
    <link>http://www.example.com/radio/</link>
    <description>Description of this podcast</description>
    <item>First item</item>
    <item>Second item</item>
  </channel>
</rss>

Создан следующий контентный фильтр:

channel :: CFilter
channel = tag "rss" /> tag "channel"

Этот фильтр позже используется для получения названия канала:

getTitle :: Content -> String
getTitle doc = contentToStringDefault "Untitled Podcast" (channel /> tag "title" /> txt $ doc)
  1. ^ «Релиз v1.25.13» . Гитхаб . Проверено 10 января 2024 г.
  2. ^ Jump up to: а б Гайда, Михал Й.; Крылов Дмитрий (5 ноября 2020 г.). «Быстрые инструменты XML/HTML для Haskell: XML TypeLift и улучшенный Xeno». Зенодо . arXiv : 2011.03536v1 . дои : 10.5281/zenodo.3929549 . S2CID   226282051 .
  3. ^ «Ридми» . Гитхаб . Проверено 10 января 2024 г.
  4. ^ Му, Шин-Чэн; Ху, Чжэньцзян; Такеичи, Масато. Двунаправленность HaXML (PDF) (Отчет). Архивировано из оригинала (PDF) 10 января . Получено 10 , января
  5. ^ Олендорф, Мануэль (6 января 2007 г.). Справочник по набору инструментов Haskell XML с примерами обработки документов RDF (PDF) . fhwedel Кафедра компьютерных наук. п. 78. Архивировано (PDF) из оригинала 13 января 2024 года . Проверено 13 января 2024 г.
  6. ^ Jump up to: а б О'Салливан, Брайан; Герцен, Джон; Стюарт, Дон (2008). «Глава 22. Расширенный пример: программирование веб-клиента» . Реальный мир Haskell . О'Рейли Медиа . ISBN  978-0596514983 .
  7. ^ Уоллес, Малькольм; Рансиман, Колин (1 сентября 1999 г.). «Haskell и XML: общие комбинаторы или перевод на основе типов?» (PDF) . Уведомления ACM SIGPLAN . 34 (9): 148–159. дои : 10.1145/317765.317794 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c93738c7dbf0b3e0468ef3af3f0a9c59__1721114700
URL1:https://arc.ask3.ru/arc/aa/c9/59/c93738c7dbf0b3e0468ef3af3f0a9c59.html
Заголовок, (Title) документа по адресу, URL1:
HaXml - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)