mysql
コマンドは、-を使用して、XMLを直接出力できます。 -xml
オプション。少なくともMySql4.1までさかのぼって利用できます。
ただし、これではXML出力の構造をカスタマイズすることはできません。次のように出力されます:
<?xml version="1.0"?>
<resultset statement="SELECT * FROM orders" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="emp_id">129</field>
<field name="cust_id">107</field>
<field name="region">Eastern</field>
</row>
</resultset>
そしてあなたが望む:
<?xml version="1.0"?>
<orders>
<employee emp_id="129">
<customer cust_id="107" region="Eastern"/>
</employee>
</orders>
変換は、XSLT を使用して実行できます。 次のようなスクリプトを使用します:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="resultset">
<orders>
<xsl:apply-templates/>
</orders>
</xsl:template>
<xsl:template match="row">
<employee emp_id="{field[@name='emp_id']}">
<customer
cust_id="{field[@name='cust_id']}"
region="{field[@name='region']}"/>
</employee>
</xsl:template>
</xsl:stylesheet>
これは、簡潔なMSSQL構文よりも明らかに冗長ですが、一方で、はるかに強力であり、MSSQLでは不可能なあらゆる種類のことを実行できます。
xsltproc
などのコマンドラインXSLTプロセッサを使用する場合 またはsaxon
、mysql
の出力をパイプできます XSLTプログラムに直接。例:
mysql -e 'select * from table' -X database | xsltproc script.xsl -