Старая версия xmlhack.ru


[XML-инструментарий][Русские ресурсы]  Вышел Parser.ru 3.0 с поддержкой XML
  02.05.02 Паращенко Олег

Студия Артемия Лебедева выпустила новую версии языка программирования Parser 3.0. Среди изменений -- поддержка UTF8, XML DOM, XSLT, XPath.

Поддержка XML реализована на базе libxml и libxslt от GNOME XML с дополнительными патчами (например, отсутствие "meta" на xhtml-выходе xslt-преобразования). Судя по реликтам типа "xalan-patched", рассматривались и альтернативные варианты для базовой библиотеки.

Документация на Парсер пока не содержит описание XML-возможностей, но из приведённых в документации примеров можно получить общее представление.

Пример кода (Урок 6):

# входной XML код
$xmlCode[<?xml version="1.0" encoding="$request:charset" ?>
# "http://localhost" в CGI версии Parser заменяется на $env:DOCUMENT_ROOT
#   <!DOCTYPE document SYSTEM "http://localhost/entities.dtd">
   <document>
      Привет, мир!
   </document>
]

# входной xdoc документ
$srcDoc[^xdoc::create{$xmlCode}]

# преобразование xdoc документа шаблоном global.xsl
$transformedDoc[^srcDoc.transform[/xsl/global.xsl]]

# выдача результата в HTML виде без отступов (с отступами есть
# проблемы перед </td>)
$response:body[^transformedDoc.string[
   $.method[html]
   $.indent[no]
]]

Класс xdoc предназначен для работы с древовидными структурами данных в паре с xnode, и поддерживает считывание файлов в XML формате и запись в XML и HTML, а также XSLT трансформацию. Работа с деревом производится в DOM модели, поддерживается DOM1 и, частично, DOM2. Объект xnode поддерживает XPath запросы.

Пример кода из черновика описания методов xnode:

$d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d
  attr="привет" n="123"/>}]
^d.selectString[string(d/@attr)]<br>
^d.selectNumber[2*2]<br>
^d.selectNumber[number(/d/@n)+1]<br>