Для того, чтобы автоматом преобразовывать содержимое xml-файлов в удобочитаемый вид/формат (html, rtf, pdf, txt, vrml, svg, java и т.д.) - следует воспользоваться XSLT, вместо того, чтобы стараться применить CSS.
Недостатки CSS:
1. CSS не может изменить порядок следования элементов в xml-документе. Если вы захотите отсортировать некоторые элементы или отфильтровать их по некоторому свойству, то CSS вам в этом однозначно не помощник.
2. CSS не выполняет вычисления. Если вы захотите вычислить и вывести значение(например, просуммировать числовые значения всех элементов в xml-документе), CSS вам не подойдёт.
3. CSS не может объединять документы. Если вы захотите объединить пару десятков xml-документов с заказами на покупку и напечатать сводку всех заказанных товаров, то CSS вам опять же не поможет.
1. CSS не может изменить порядок следования элементов в xml-документе. Если вы захотите отсортировать некоторые элементы или отфильтровать их по некоторому свойству, то CSS вам в этом однозначно не помощник.
2. CSS не выполняет вычисления. Если вы захотите вычислить и вывести значение(например, просуммировать числовые значения всех элементов в xml-документе), CSS вам не подойдёт.
3. CSS не может объединять документы. Если вы захотите объединить пару десятков xml-документов с заказами на покупку и напечатать сводку всех заказанных товаров, то CSS вам опять же не поможет.
Маленький пример использования XSL
Имеется некоторый xml-файл настроек плагина:
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="styleSheet.xsl"?> <document> <!--Краткое описание плагина--> <commonText> Плагин контролирует настройки слоёв чертежей AutoCAD. Ниже представлена таблица, в которой перечислены проверяемые позиции. </commonText> <!--Настройки плагина--> <settings> <variable> <name>Проверка имени слоя</name> <value>true</value> <description>Проверка имени слоя на соответствие правилу построения имён</description> </variable> <variable> <name>Проверка цвета слоя</name> <value>true</value> <description>Проверка на то, чтобы слою назначались цвета из палитры 'Index Color'</description> </variable> <variable> <name>Проверка типа линии</name> <value>true</value> <description>Проверка на то, чтобы слоям назначались типы линий только из определённого набора</description> </variable> <variable> <name>Проверка толщин линий</name> <value>true</value> <description>Проверка на то, чтобы слоям назначались толщины линий только из определённого набора</description> </variable> <variable> <name>Проверка наличия примечания</name> <value>true</value> <description>Каждый слой должен иметь примечание, расшифровывающее его назначение</description> </variable> <variable> <name>Фиксированный набор слоёв</name> <value>false</value> <description>Следует ли запретить пользователям создавать дополнительные слои, по установленным в Стандарте правилам</description> </variable> </settings>
Плагин должен считывать с него настройки и работать в соответствии с ними. В то же время должна присутствовать некая документация, которую бы юзер мог прочитать и понять. Причём материал, изложенный в документации должен соответствовать тем настройками, которые установлены в текущий момент. Для того, чтобы не держать в голове, что после того, как подправишь настройки, нужно лезть и править документацию, можно всё это представить в виде одного xml-файла. Плагин будет читать из него настройки, а юзер - открывать его в браузере и... видеть его в "человеческом" виде... Для этого создаём файл styleSheet.xsl с таким содержимым:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <html> <body> <h2>Настройки плагина</h2> <p> <xsl:value-of select="document/commonText"/> </p> <table border="1"> <tr bgcolor="#9acd32"> <th>Параметр</th> <th>Значение</th> <th>Примечание</th> </tr> <xsl:for-each select="document/settings/variable"> <tr> <td> <xsl:value-of select="name"/> </td> <td> <xsl:value-of select="value"/> </td> <td> <xsl:value-of select="description"/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Теперь, если юзер в браузере откроет наш xml-файл, то он увидит не запутанный (с его точки зрения), неудобный xml-текст, а это (кликните мышью по изображению, чтобы увеличить его):
В данном примере я не показывал выборки, сортировки, фильтрации, различного рода операции и вычисления (они тут были не нужны), но при необходимости всё это можно делать средствами XSLT.
Комментариев нет:
Отправить комментарий