<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF146%3ASysadmin</id>
		<title>LXF146:Sysadmin - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF146%3ASysadmin"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF146:Sysadmin&amp;action=history"/>
		<updated>2026-05-13T00:23:37Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF146:Sysadmin&amp;diff=15342&amp;oldid=prev</id>
		<title>2sash-kan: Новая страница: «==По рецептам доктора Брауна==  : Эзотерическое системное администрирование из причудлив…»</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF146:Sysadmin&amp;diff=15342&amp;oldid=prev"/>
				<updated>2014-07-14T15:33:08Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «==По рецептам доктора Брауна==  : Эзотерическое системное администрирование из причудлив…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==По рецептам доктора Брауна==&lt;br /&gt;
&lt;br /&gt;
: Эзотерическое системное администрирование из причудливых заворотов кишок серверной&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Д-р Крис Браун|Содержание=Доктор обучает, пишет и консультирует по Linux. Ученая степень по физике элементарных частиц ему в этом совсем не помогает.|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
===За исследования!===&lt;br /&gt;
&lt;br /&gt;
: Splunk Тонете в файлах журнала? Ответом может стать «поисковая система оперативной разведки»...&lt;br /&gt;
&lt;br /&gt;
Занятые серверы Linux генерируют бездну машинных данных, от журналов web-доступа Apache до предупреждений sshd об отказах в попытке доступа.&lt;br /&gt;
&lt;br /&gt;
Для их исследования существуют несколько классических утилит. Скажем, Logwatch – прекрасная программа для создания сводок файлов журнала, и имеется куча программ, помогающих понять, хорошо ли функционирует ваш сайт (например, http://www.sawmill.co.uk).&lt;br /&gt;
&lt;br /&gt;
Splunk (http://www.splunk.com) немного другой. Он предпринимает более интерактивный подход к добыче данных с вашей машины – возможно, чтобы глубже забуриться в поисках проблемы эксплуатации либо рассмотреть долгосрочные тенденции в работе машины.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|Заголовок=Ничто не ново под луной|Содержание=Многие из вас, видимо, считают, что планшетные ПК – крутые новые игрушки. (Не могу подтвердить это, купив свой – ниша функциональности между смартфоном и ноутбуком слишком узка, чтобы йоркширец [уроженцы Йоркшира традиционно считаются прижимистыми, – прим. ред.] расстался с наличными.) Ну, пусть они и крутые, но уж не новые, по крайней мере, в концепции.&lt;br /&gt;
&lt;br /&gt;
Еще в 1968 Алан Кей [Alan Kay] демонстрировал картонные макеты своего ручного устройства Dynabook –его работа поразительно напоминала современные планшеты. Прикиньте масштаб времени: сколько лет вам было в 1968? Ваши родители уже познакомились?&lt;br /&gt;
&lt;br /&gt;
Тех Dynabook, которые Кей определял как «личный компьютер, способный... подкреплять устремления человека, особенно ребенка»,&lt;br /&gt;
у нас еще нет. Но мы к ним идем. Ищите в Google ‘alan kay dynabook’, если вам интересно.|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
Splunk работает как демон. Как и Beagle, он обшаривает машинные данные и индексирует их. Но Beagle ищет вашу персональную информацию, а Splunk – информацию о системе. Интерфейс его основан на web-браузере.&lt;br /&gt;
&lt;br /&gt;
На настройку источников данных для Splunk требуется время. Он умеет индексировать вывод системного журнала, журналы событий окон, файлы настройки (и вообще любые указанные файлы), журналы Apache и WebSphere, и многое другое.&lt;br /&gt;
&lt;br /&gt;
Приведенный ниже снимок экрана показывает простой поиск строки «failed» в системном журнале. Оказывается, имел место огромный всплеск около 8 утра 14 апреля. Копнув глубже, мы видим, что более 99,9 % этого исходит от программы под названием ntfs-3g. Фильтрация по времени генерации, по хосту, откуда это пришло, и по файлу журнала очень проста. Можно просматривать индивидуальные сообщения и даже перейти прямо на файл журнала, откуда идут ошибки.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Как добыть Splunk|Содержание=На сайте http://www.splunk.com есть доступные для скачивания файлы RPM и Deb. Я установил Deb на Ubuntu без проблем. При этом вам дается 60-дневная лицензия; после этого срока вы можете либо принять свободную однопользовательскую лицензию (которая ограничивает вас индексированием только 500 МБ в день), либо обновиться до лицензии Enterprise. Цены зависят от объемов индексируемого Splunk ежедневного трафика, и это не дешево.|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
===XML для администраторов===&lt;br /&gt;
&lt;br /&gt;
: XML Вы испытывали чувство, что этот язык ставит вас в тупик? Добрый Доктор преподает простое введение, исцеляя ваш истерзанный разум.&lt;br /&gt;
&lt;br /&gt;
Несколько лет назад, когда Novell перешел с NetWare на Linux, я проводил множество тренингов для их консультантов. Некоторые из них считали переход шагом в неверном направлении, хотя бы в техническом отношении, и не стеснялись твердить мне это.&lt;br /&gt;
&lt;br /&gt;
Любимой мишенью их критики было изобилие форматов файлов системных настроек в Linux. «Не разумнее ли, – спрашивали они, – везде использовать XML?»&lt;br /&gt;
&lt;br /&gt;
Я и тогда не соглашался с этой идеей, и теперь не согласен. С тем же успехом можно предложить записывать все файлы как ASCII-строки, чтобы они имели общую структуру. Хотя, конечно, XML открывает новое измерение в разнообразии мини-языков.&lt;br /&gt;
&lt;br /&gt;
Лично мне XML не нравится. Он напоминает мне куски сырого сала, вывешиваемые зимой для синиц – хорошо для своих целей, но для людей несъедобно. Он засоряет страницу, тяжело читается и требует много лишнего места. И так уж вышло, что XML все-таки не используется в базовых файлах настройки Linux, типа /etc/passwd, /etc/fstab и /etc/hosts; и даже файл syslog-ng.conf устоял перед наваждением XML.&lt;br /&gt;
&lt;br /&gt;
Но в других местах вы встретите множество XML под капотом. Например, документ OpenOffice.org – это на самом деле zip-архив XML-файлов с именами типа content.xml и style.xml. (Просто разархивируйте любой документ .odt, и сами убедитесь.)&lt;br /&gt;
&lt;br /&gt;
Все файлы из каталога ~/.gconf, где хранятся настройки рабочего стола Gnome, имеют формат XML. На моей стандартной установке Fedora 14 в /etc их 212, что дает 191,000 строк XML – в основном в /etc/gconf. Библиотека виртуализации libvirt использует XML для определения характеристик виртуальной машины и виртуальной сети.&lt;br /&gt;
&lt;br /&gt;
Поэтому в данном номере мы бегло рассмотрим формальный мир XML.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|Заголовок=Редакторы XML|Содержание=Хороший редактор XML облегчает жизнь. Он автоматически сверяет документ на действительность для схемы, выдает подсказки действительных элементов и атрибутов и позволяет взаимодействовать с документом через вид, преобразованный к XSLT. Роллс-ройс среди XML-редакторов, вероятно, XMLSpy (www.altova.com), но он недешев и доступен только для Windows. К свободным XML-редакторам для Linux относятся Serna Free XML Editor (www.syntext.com) и XML Copy Editor (xml-copy-editor.sourceforge.net). Первый из этих двух продуктов более отполирован; и есть еще масса других.|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
====Рабочий пример====&lt;br /&gt;
&lt;br /&gt;
Текст для сегодняшнего урока взят из примера определения машины в libvirt. Этот XML-файл описывает аппаратную конфигурацию виртуальной машины:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=”1.0” encoding=”utf-8” ?&amp;gt;&lt;br /&gt;
 &amp;lt;!-- The line above was not in the original file --&amp;gt;&lt;br /&gt;
 &amp;lt;domain type='kvm'&amp;gt;&lt;br /&gt;
 &amp;lt;name&amp;gt;serverq&amp;lt;/name&amp;gt;&lt;br /&gt;
 &amp;lt;uuid&amp;gt;3cce3bbc-5d3c-ee98-e4d5-4cefb0f9bdf5&amp;lt;/uuid&amp;gt;&lt;br /&gt;
 &amp;lt;memory&amp;gt;262144&amp;lt;/memory&amp;gt;&lt;br /&gt;
 &amp;lt;currentMemory&amp;gt;262144&amp;lt;/currentMemory&amp;gt;&lt;br /&gt;
 &amp;lt;vcpu&amp;gt;1&amp;lt;/vcpu&amp;gt;&lt;br /&gt;
 &amp;lt;os&amp;gt;&lt;br /&gt;
 &amp;lt;type arch='x86_64' machine='pc-0.12'&amp;gt;hvm&amp;lt;/type&amp;gt;&lt;br /&gt;
 &amp;lt;boot dev='hd'/&amp;gt;&lt;br /&gt;
 &amp;lt;/os&amp;gt;&lt;br /&gt;
 &amp;lt;features&amp;gt;&lt;br /&gt;
 &amp;lt;acpi/&amp;gt;&lt;br /&gt;
 &amp;lt;/features&amp;gt;&lt;br /&gt;
 &amp;lt;clock offset='utc'/&amp;gt;&lt;br /&gt;
 &amp;lt;on_poweroff&amp;gt;destroy&amp;lt;/on_poweroff&amp;gt;&lt;br /&gt;
 &amp;lt;on_reboot&amp;gt;restart&amp;lt;/on_reboot&amp;gt;&lt;br /&gt;
 &amp;lt;on_crash&amp;gt;destroy&amp;lt;/on_crash&amp;gt;&lt;br /&gt;
 &amp;lt;devices&amp;gt;&lt;br /&gt;
 &amp;lt;emulator&amp;gt;/usr/bin/kvm&amp;lt;/emulator&amp;gt;&lt;br /&gt;
 &amp;lt;disk type='file' device='disk'&amp;gt;&lt;br /&gt;
 &amp;lt;&amp;lt;nowiki /&amp;gt;source file='/home/chris/q-vm/tmp_Hy.qcow2'/&amp;gt;&lt;br /&gt;
 &amp;lt;target dev='hda' bus='ide'/&amp;gt;&lt;br /&gt;
 &amp;lt;/disk&amp;gt;&lt;br /&gt;
 &amp;lt;interface type='network'&amp;gt;&lt;br /&gt;
 &amp;lt;mac address='52:54:00:2d:5d:4d'/&amp;gt;&lt;br /&gt;
 &amp;lt;&amp;lt;nowiki /&amp;gt;source network='default'/&amp;gt;&lt;br /&gt;
 &amp;lt;model type='virtio'/&amp;gt;&lt;br /&gt;
 &amp;lt;/interface&amp;gt;&lt;br /&gt;
 &amp;lt;input type='mouse' bus='ps2'/&amp;gt;&lt;br /&gt;
 &amp;lt;graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'/&amp;gt;&lt;br /&gt;
 &amp;lt;video&amp;gt;&lt;br /&gt;
 &amp;lt;model type='cirrus' vram='9216' heads='1'/&amp;gt;&lt;br /&gt;
 &amp;lt;/video&amp;gt;&lt;br /&gt;
 &amp;lt;/devices&amp;gt;&lt;br /&gt;
 &amp;lt;/domain&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На рисунке вверху я детально разобрал фрагмент этого файла. Вкратце, документ XML состоит из элементов с начальным тэгом и конечным тэгом. Начальный тэг может содержать атрибуты (простые пары имя/значение). Между начальным тэгом и конечным тэгом находится содержимое элемента. Это может быть простой текст или (что более важно) другой элемент XML, что придает XML иерархическую структуру.&lt;br /&gt;
&lt;br /&gt;
Давайте добавим терминологии. В моем файле примера первая строка технически называется прологом. В ней указывается используемая версия XML и кодировка символов. Пролог в файле XML не обязателен, но у большинства он есть. Вторая строка – просто комментарий. После нее первый тэг (в нашем примере это &amp;lt;domain&amp;gt;) называется корневым элементом документа. Он должен быть единственным. У любого элемента элементы уровня ниже называются дочерними, более высокого уровня – родительскими, а элементы одного уровня (с общим родителем) являются родственными. Эти отношения показаны на следующей странице. Например, в нашем файле libvirt узлы &amp;lt;type&amp;gt; и &amp;lt;boot&amp;gt; являются родственными, а &amp;lt;os&amp;gt; – родительский для них.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что пробелы в файле (отступы и новые строки) облегчают человеку просмотр иерархической структуры, но не дают вклада в значения. Например, разархивировав документ OpenOffice.org и взглянув на содержимое XML-файлов, вы не увидите там ни одного пробела или перевода строки!&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Языки XML|Содержание=Существует огромное количество языков, основанных на XML. Вот некоторые из них, о которых вы, возможно, уже слышали, а также разъяснение, для чего они нужны.&lt;br /&gt;
; SOAP&lt;br /&gt;
: Simple Object Access Protocol [простой протокол доступа к объектам].  Формат упорядочивания XML, применяемый для составления запросов и получения результатов web-сервисов.&lt;br /&gt;
; WSDL&lt;br /&gt;
: Web Service Description Language [язык описания web-сервисов].  Используется для описания методов, применяемых web-сервисами.&lt;br /&gt;
; SVG&lt;br /&gt;
: Scalable Vector Graphics [масштабируемая векторная графика].  Язык описания двумерных графических объектов на базе XML.&lt;br /&gt;
; Docbook&lt;br /&gt;
: Формат для создания содержимого технической документации в нейтральном виде – определяет около 400 элементов!&lt;br /&gt;
; MathML&lt;br /&gt;
: XML-разметка для описания математических формул.|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
====Поиск в документах XML====&lt;br /&gt;
&lt;br /&gt;
Большинство языков программирования предоставляют расширения для перемещения по документу XML или для поиска узлов, отвечающих указанному критерию. В командной строке утилита Linux xpath отыщет узлы в XML-файле, отвечающие данному выражению. Выражения немного напоминают шаблоны для имен файлов, и немного – регулярные выражения. Ниже дана таблица с кратким введением в выражения Xpath.&lt;br /&gt;
&lt;br /&gt;
Вот несколько примеров поиска Xpath, который можно провести в нашем файле-примере из libvirt:&lt;br /&gt;
&lt;br /&gt;
 $ xpath -e //memory example.xml&lt;br /&gt;
 Found 1 nodes in example.xml:&lt;br /&gt;
 -- NODE --&lt;br /&gt;
 &amp;lt;memory&amp;gt;262144&amp;lt;/memory&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
 $ xpath -e “//disk/target[@dev='hda']” example.xml&lt;br /&gt;
 Found 1 nodes in example.xml:&lt;br /&gt;
 -- NODE --&lt;br /&gt;
 &amp;lt;target dev=”hda” bus=”ide” /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На ранних стадиях развития HTML web-разработчики не особо заботились о синтаксисе. Они забывали про закрывающие тэги и сравнительно вольно обращались со вложением элементов. Web-браузерам приходилось учиться быть толерантными и извлекать из кода наибольший смысл, по возможности. Требования XML к синтаксису гораздо строже.&lt;br /&gt;
&lt;br /&gt;
Про документ, который следует основным правилам синтаксиса, говорят, что он «правильно построен» [well-formed]. Это значит, что всем начальным тэгам соответствуют конечные тэги, тэги вложены правильно, значения атрибутов взяты в кавычки, специальные символы, типа &amp;lt; и &amp;gt;, не встречаются в других частях документа, и так далее. Вам, наверно, уже попадались и XHTML – это, в сущности, переформулировка HTML в более строгих синтаксических правилах XML.&lt;br /&gt;
&lt;br /&gt;
Документы также бывают «действительными» [valid]. Это звание посерьезнее. Действительный документ – тот, что следует четкой спецификации. Спецификация может, например, установить, что элементы с именами &amp;lt;disk&amp;gt;, &amp;lt;interface&amp;gt; и &amp;lt;video&amp;gt; должны входить (именно в таком порядке) в элемент под названием &amp;lt;devices&amp;gt; и что элемент &amp;lt;video&amp;gt; должен задавать атрибуты type и vram.&lt;br /&gt;
&lt;br /&gt;
Если расположить эти элементы в неправильном порядке или опустить атрибуты, то валидации документа не произойдет. Здесь-то XML и обходит традиционные текстовые файлы настройки, обычно используемые в Linux, поскольку любой более-менее приличный XML-редактор позволяет на лету привести ваш документ в соответствие со схемой.&lt;br /&gt;
&lt;br /&gt;
Самым первым способом, применявшимся для спецификации структуры действительного XML-документа, включая список всех разрешенных элементов и их атрибутов, были определения типа документа [Document Type Definition, DTD]. Файлы DTD были, однако, тоже XML-документами. Они все еще используются, но почти везде заменяются на XML-схемы, которые обычно расположены в файлах XSD и являются документами XML.&lt;br /&gt;
&lt;br /&gt;
В используемом нами примере из libvirt схемы пока нет (становится интересно, так ли сильна приверженность XML к libvirt; но я отвлекся). Чтобы обойти это, перейдем к новому, очень простому примеру. Во-первых, вот «целевой» файл (тот, который мы будем делать действительным):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=”1.0”?&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;message xmlns=”mynamespace”&lt;br /&gt;
 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”&lt;br /&gt;
 xsi:schemaLocation=”mynamespace message.xsd”&amp;gt;&lt;br /&gt;
 &amp;lt;to&amp;gt; Graham &amp;lt;/to&amp;gt;&lt;br /&gt;
 &amp;lt;from&amp;gt; Chris &amp;lt;/from&amp;gt;&lt;br /&gt;
 &amp;lt;heading&amp;gt; Deadline &amp;lt;/heading&amp;gt;&lt;br /&gt;
 &amp;lt;body&amp;gt; I am running late this month! &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/message&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно заметить, что корневой элемент называется &amp;lt;message&amp;gt;, а элементы внутри него носят имена &amp;lt;to&amp;gt;, &amp;lt;from&amp;gt;, &amp;lt;heading&amp;gt; и &amp;lt;body&amp;gt;. Элемент &amp;lt;message&amp;gt; содержит некие атрибуты, определяющие пространство имен, которому должны принадлежать названия элементов. Пространство имен предотвращает (например) перепутывание моего элемента &amp;lt;heading&amp;gt; с любым из элементов &amp;lt;heading&amp;gt; других. Для простоты я назвал это пространство имен mynamespace, но на практике здесь обычно используют URL организации, для гарантии его уникальности. Элемент &amp;lt;message&amp;gt; также содержит атрибут, говорящий, где располагается схема (файл XSD). В нашем примере целевой файл и файл XSD расположены в одном каталоге.&lt;br /&gt;
&lt;br /&gt;
Вот как выглядит схема:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=”1.0”?&amp;gt;&lt;br /&gt;
 &amp;lt;xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”&lt;br /&gt;
 targetNamespace=”mynamespace”&lt;br /&gt;
 xmlns=”mynamespace”&lt;br /&gt;
 elementFormDefault=”qualified”&amp;gt;&lt;br /&gt;
 &amp;lt;xs:element name=”message”&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
 &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
 &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
 &amp;lt;xs:element name=”to” type=”xs:string”/&amp;gt;&lt;br /&gt;
 &amp;lt;xs:element name=”from” type=”xs:string”/&amp;gt;&lt;br /&gt;
 &amp;lt;xs:element name=”heading” type=”xs:string”/&amp;gt;&lt;br /&gt;
 &amp;lt;xs:element name=”body” type=”xs:string”/&amp;gt;&lt;br /&gt;
 &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
 &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
 &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
 &amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Главная часть расположена внутри тэга &amp;lt;xs:element&amp;gt;. Можно видеть, что в тэге &amp;lt;message&amp;gt; ожидаются элементы под названиями &amp;lt;to&amp;gt;, &amp;lt;from&amp;gt;, &amp;lt;heading&amp;gt;, &amp;lt;body&amp;gt;, в приведенном порядке. XML-редакторы автоматически определяют схему и делают файл действительным для нее. На снимке экрана с XML Copy Editor видно, что файл не прошел валидацию из-за использования элемента &amp;lt;recipient&amp;gt; вместо элемента &amp;lt;to&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
С файлом XSD можно проделать много больше, чем показано здесь: например, прописать тип данных внутри элемента (строка, целое, дата и так далее), а также определить обязательные и опционные атрибуты для каждого элемента, задать имена атрибутам по умолчанию... Надеюсь, общую идею вы уловили.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|right|Заголовок=Где узнать больше|Содержание=Чтобы достать формальное определение XML, зайдите на www.w3c.org, но предупреждаю, что разбираться в стандартных документах очень тяжело. На www.w3schools.com есть несколько прекрасных учебников XML, включая DTD, XPath и схемы XML. Также там есть хорошие учебники по HTML, PHP, MySQL, SOAP, WSDL и многому другому, включая демонстрации для самостоятельных упражнений. Очень рекомендую.&lt;br /&gt;
&lt;br /&gt;
Из множества книг по XML на рынке, я бы рекомендовал почитать Professional XML от Wrox Press.|Ширина=20%}}&lt;br /&gt;
&lt;br /&gt;
====Преобразование====&lt;br /&gt;
&lt;br /&gt;
Использованный мною пример был файлом libvirt config. Однако XML применяется в основном для определения содержимого документа (отчета, электронной таблицы или любого фрагмента документации) в виде, преобразуемом в другие форматы, такие как HTML для просмотра в браузере или PDF для распечатки. Для определения преобразования используются файлы XSLT.&lt;br /&gt;
&lt;br /&gt;
XSLT означает «Extensible Stylesheet Language Transformations» [язык преобразования XML-документов], и они немного похожи на файлы CSS – тем, что в них указываются стили, применяемые для определенных элементов документа. Если вы хотите, улучив 10 минут, разобраться с XSLT, зайдите на www.w3schools.com, а затем по ссылке «Learn XSLT», и нажмите на кнопку «Try it yourself». Здесь можно поиграть с содержимым документа XML и связанным с ним XSLT и посмотреть на результат.&lt;br /&gt;
&lt;br /&gt;
Снимок экрана на рисунке вверху дает хороший пример работы XSLT. Здесь Serna Free XML Editor от Syntext предоставляет WYSIWYG-редактирование документа XML. В правой панели показано содержимое текущего документа (после преобразования в HTML с помощью стилевой таблицы), а в панели слева – древовидная структура самого XML. Лично мне особенно нравится здесь то, что «сырое» содержимого XML не показывается!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Запросы Xpath без мистики&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ЗАПРОС XPATH&lt;br /&gt;
! ЧЕМУ ОН СООТВЕТСТВУЕТ&lt;br /&gt;
|-&lt;br /&gt;
|/A&lt;br /&gt;
|Все элементы A в корне документа&lt;br /&gt;
|-&lt;br /&gt;
|//A&lt;br /&gt;
|Все элементы A по всему документу&lt;br /&gt;
|-&lt;br /&gt;
|//A/B&lt;br /&gt;
|Все элементы B, дочерние по отношению к элементам A, по всему документу&lt;br /&gt;
|-&lt;br /&gt;
|//A[B/FOO='BAR']&lt;br /&gt;
|Все элементы A по всему документу, имеющие дочерний элемент B, у которого есть дочерний элемент FOO со значением BAR&lt;br /&gt;
|-&lt;br /&gt;
|//A/B[../FOO='BAR']&lt;br /&gt;
|Все элементы B, дочерние к узлам A и у которых есть родственный элемент FOO со значением BAR&lt;br /&gt;
|-&lt;br /&gt;
|//A[@FOO='BAR']&lt;br /&gt;
|Все элементы A, у которых есть атрибут FOO со значением BAR&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>2sash-kan</name></author>	</entry>

	</feed>