XMLStarlet
![]() | Эта статья содержит инструкции, советы и инструкции . ( май 2020 г. ) |
Оригинальный автор(ы) | Dagobert Michelsen, Noam Postavsky, Mikhail Grushinskiy |
---|---|
Первоначальный выпуск | 8 февраля 2005 г |
Стабильная версия | 1.6.1 [ 1 ] ![]() |
Репозиторий | |
Написано в | С |
Операционная система | Unix-подобный , Windows, CygWin, Mac OS |
Тип | XML- парсер |
Лицензия | МОЯ лицензия |
Веб-сайт | xmlstar |
XMLStarlet — это набор утилит командной строки (инструментарий) для запроса, преобразования, проверки и редактирования XML- документов и файлов с использованием простого набора команд оболочки аналогично тому, как это делается в UNIX grep, sed, awk, diff, команды patch, join и т. д.
Этот набор утилит командной строки может использоваться теми, кто хочет тестировать запросы XPath или выполнять команды на лету, а также работать со многими документами XML или для автоматической обработки XML с помощью сценариев оболочки.
Чтобы запустить утилиту XMLStarlet, вы можете скачать ее с официального сайта, а затем просто набрать « xml' в командной строке с соответствующими командами или запросами для выполнения (см. #Examples ниже).
Функции
[ редактировать ]Набор функций инструментария включает в себя следующие опции:
- Проверка или проверка XML-файлов (простая проверка правильности формата, DTD, XSD, RelaxNG)
- Вычисление значений выражений XPath в файлах XML (например, текущие суммы и т. д.)
- Поиск XML-файлов на предмет совпадений с заданными XPath. выражениями
- Применение таблиц стилей XSLT к документам XML (включая поддержку EXSLT и передачу параметров в таблицы стилей)
- Запрос XML-документов (например, запрос значений некоторых элементов атрибутов, сортировки и т. д.)
- Изменить или отредактировать XML-документы (например, удалить некоторые элементы)
- Форматируйте или «украшайте» XML-документы (изменяя отступы и т. д.).
- Извлекайте XML-документы, используя URL-адреса http:// или ftp://.
- Просмотр древовидной структуры XML-документов (аналогично команде ls для каталогов)
- Включите один XML-документ в другой с помощью XInclude.
- Канонизация XML c14n
- Экранирование/отмена экранирования специальных символов XML во входном тексте
- Распечатать каталог как документ XML
- Преобразование XML в формат PYX (на основе ESIS — ISO 8879 ) и наоборот.
Утилита командной строки XMLStarlet написана на C и использует libxml2 и libxslt . Реализация широкого выбора возможностей утилиты XMLStarlet стала возможной только благодаря богатому набору возможностей обеих библиотек: libxml2 и libxslt. XMLStarlet статически связан как с libxml2, так и с libxslt, поэтому обычно все, что вам нужно для обработки XML-документов, — это один исполняемый файл.
XMLStarlet — это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензией MIT , которое позволяет бесплатно использовать и распространять как для коммерческих, так и для некоммерческих проектов.
Примеры
[ редактировать ]Рассмотрим следующий пример XML-документа «xmlfile1.xml»:
<?xml version="1.0" encoding="utf-8"?>
<wikimedia>
<projects>
<project name="Wikipedia" launch="2001-01-05">
<editions>
<edition language="English">en.wikipedia.org</edition>
<edition language="German">de.wikipedia.org</edition>
<edition language="French">fr.wikipedia.org</edition>
<edition language="Polish">pl.wikipedia.org</edition>
<edition language="Spanish">es.wikipedia.org</edition>
</editions>
</project>
<project name="Wiktionary" launch="2002-12-12">
<editions>
<edition language="English">en.wiktionary.org</edition>
<edition language="French">fr.wiktionary.org</edition>
<edition language="Vietnamese">vi.wiktionary.org</edition>
<edition language="Turkish">tr.wiktionary.org</edition>
<edition language="Spanish">es.wiktionary.org</edition>
</editions>
</project>
<project name="Wikiversity" launch="2006-10-04">
<editions>
<edition language="English">en.wikiversity.org</edition>
</editions>
</project>
</projects>
</wikimedia>
следующие пять запросов XPath В командной строке к указанному выше XML-файлу «xmlfile1.xml» выполняются .
- Пример 1. Выражение XPath для выбора всех атрибутов имени для всех проектов.
$ xmlstarlet sel -t -v "//wikimedia/projects/project/@name" xmlfile1.xml
Wikipedia
Wiktionary
Wikiversity
- Пример 2: выражение XPath для выбора всех атрибутов последнего проекта Викимедиа.
$ xmlstarlet sel -t -v "/wikimedia/projects/project[last()]/@*" xmlfile1.xml
Wikiversity
2006-10-04
- Пример 3. Выражение XPath для выбора адресов всех выпусков Викисловаря (текст всех элементов издания, которые существуют в элементе проекта с атрибутом имени Викисловаря).
$ xmlstarlet sel -t -v "/wikimedia/projects/project[@name='Wiktionary']/editions/edition" xmlfile1.xml
en.wiktionary.org
fr.wiktionary.org
vi.wiktionary.org
tr.wiktionary.org
es.wiktionary.org
- Пример 4: выражение XPath для выбора адресов всех изданий Викисловаря Викимедиа, языки которых отличаются от турецкого и испанского (все НЕ турецкие и не испанские).
$ xmlstarlet sel -t -v "/wikimedia/projects/project[@name='Wiktionary']/editions/edition[@language!='Turkish' and @language!='Spanish']" xmlfile1.xml
en.wiktionary.org
fr.wiktionary.org
vi.wiktionary.org
- Пример 5. Выражение XPath для выбора всех атрибутов выпусков, позиция которых больше или равна 3 в списке выпусков.
$ xmlstarlet sel -t -v "/wikimedia/projects/project/editions/edition[position() >= 3]/@*" xmlfile1.xml
French
Polish
Spanish
Vietnamese
Turkish
Spanish
XML-документ можно проверить на соответствие схеме XSD, сохраненной в файле «xsdfile.xsd», следующим образом:
$ xmlstarlet val -e -s xsdfile.xsd xmlfile1.xml
xmlfile1.xml - valid
См. также
[ редактировать ]- XML (расширяемый язык разметки) — это язык разметки, определяющий набор правил для кодирования документов в формате, читаемом как человеком, так и машиной.
- XPath (язык путей XML) — это язык запросов для выбора узлов из XML-документа.
- XSLT (преобразования расширяемого языка таблиц стилей) — это язык преобразования XML-документов в другие XML-документы или другие форматы, такие как HTML для веб-страниц, обычный текст и т. д.
- Определение типа документа (DTD) определяет допустимые строительные блоки XML-документа.