XSLT шаблон преобразование выдачи mysql сервера

Как известно утилита mysql с опцией -X умеет выдавать результат запроса в виде XML который не является самым удобным и наглядным. Результат получается вот такой

< resultset statement="select FKOD,FNAME,C2 as old_name from FOND3 left join FOND on (FOND=KOD)" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
< row>
< field name="FKOD">...
< field name="FNAME">...
< field name="old_name">...
< /row>
< row>
...
< /row>
...
< /resultset>

А если необходимо такой результат преобразовать к виду

< rename>
< row>
< FKOD>...
< FNAME>...
< old_name>...
< /row>
< row>
...
< /row>
...
< /rename>

То можно использовать вот такой универсальный шаблон

< ?xml version="1.0" encoding="utf-8"?>
< xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
< xsl:template match="/resultset">
< rename>
< xsl:for-each select="row">
< row>
< xsl:for-each select="field">
< xsl:variable name="name" select="@name" />
< xsl:element name="{$name}">
< xsl:value-of select="." />
< /xsl:element>
< /xsl:for-each>
< /row>
< /xsl:for-each>
< /rename>
< /xsl:template>
< /xsl:stylesheet>

Здесь последовательно создаются узлы с названиями равными именам полей и значениями, следует обратить внимание на динамическую конструкцию создания нового узла -- имя тега получается путём вычисления name={$name}

Применять вот так:

echo 'sql запрос' | mmysql 'название базы' -X| xsltproc transformation.xsl -
Комментариев 0
Нужна авторизация с помощью
Об авторе
Илья Илья

меня можно найти тут