- - PR -
XML の XSLT での変換について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-01 18:36
初めて投稿させて頂きます。
XML の変換についてお聞きしたいのですが、 任意の場所に要素タグを挿入することは可能でしょうか? ----------------------------------------------------- 現在の XML ファイル <?xml version = '1.0' encoding = 'UTF-8'?> <ALL> <GROUPS> <COMPANY>AAA</COMPANY> <DETAIL> <ORDER> <ITEM>DELL</ITEM> <ORDER_NUM>20</ORDER_NUM> <PRICE>100000</PRICE> <SUB_TOTAL>2000000</SUB_TOTAL> </ORDER> </DETAIL> <DETAIL> <ORDER> <ITEM>FM-V</ITEM> <ORDER_NUM>5</ORDER_NUM> <PRICE>200000</PRICE> <SUB_TOTAL>1000000</SUB_TOTAL> </ORDER> </DETAIL> <COMPANY>BBB</COMPANY> <DETAIL> <ORDER> <ITEM>Let's note</ITEM> <ORDER_NUM>5</ORDER_NUM> <PRICE>200000</PRICE> <SUB_TOTAL>1000000</SUB_TOTAL> </ORDER> </DETAIL> <DETAIL> <ORDER> <ITEM>Dyna Book</ITEM> <ORDER_NUM>3</ORDER_NUM> <PRICE>150000</PRICE> <SUB_TOTAL>450000</SUB_TOTAL> </ORDER> </DETAIL> </GROUPS> </ALL> --------------------------------------------------- この XML の <GROUPS> の下にもう一階層作る感じで <GROUP> タグで <COMPANY> から次の <COMPANY> までを囲むように追加したいと思っております。 簡単に書くとこのような感じです。 <GROUPS> <GROUP> <COMPANY>AAA</COMPANY> <DETAIL> <ORDER> <ITEM>DELL</ITEM> </ORDER> </DETAIL> </GROUP> <GROUP> <COMPANY>BBB</COMPANY> </GROUP> </GROUPS> また、元となる XML、XSL は下記の通りです。 ----------------------------------------------------------------- base.xml <?xml version = '1.0' encoding = 'UTF-8'?> <ROWSET> <ROW num="1"> <COMPANY>AAA</COMPANY> <ITEM>DELL</ITEM> <ORDER_NUM>20</ORDER_NUM> <PRICE>100000</PRICE> <SUB_TOTAL>2000000</SUB_TOTAL> </ROW> <ROW num="2"> <COMPANY>AAA</COMPANY> <ITEM>FM-V</ITEM> <ORDER_NUM>5</ORDER_NUM> <PRICE>200000</PRICE> <SUB_TOTAL>1000000</SUB_TOTAL> </ROW> <ROW num="3"> <COMPANY>BBB</COMPANY> <ITEM>Let's note</ITEM> <ORDER_NUM>5</ORDER_NUM> <PRICE>200000</PRICE> <SUB_TOTAL>1000000</SUB_TOTAL> </ROW> <ROW num="4"> <COMPANY>BBB</COMPANY> <ITEM>Dyna Book</ITEM> <ORDER_NUM>3</ORDER_NUM> <PRICE>150000</PRICE> <SUB_TOTAL>450000</SUB_TOTAL> </ROW> </ROWSET> ------------------------------------------------------- trans.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> <xsl:template match="/"> <xsl:apply-templates select="ROWSET"/> </xsl:template> <xsl:template match="ROWSET"> <ALL> <GROUPS> <xsl:for-each select="ROW"> <xsl:if test="not(COMPANY=preceding::ROW/COMPANY)"> <COMPANY> <xsl:value-of select="COMPANY"/> </COMPANY> </xsl:if> <DETAIL> <ORDER> <ITEM> <xsl:value-of select="ITEM"/> </ITEM> <ORDER_NUM> <xsl:value-of select="ORDER_NUM"/> </ORDER_NUM> <PRICE> <xsl:value-of select="PRICE"/> </PRICE> <SUB_TOTAL> <xsl:value-of select="SUB_TOTAL"/> </SUB_TOTAL> </ORDER> </DETAIL> </xsl:for-each> </GROUPS> </ALL> </xsl:template> </xsl:stylesheet> ----------------------------------------------------------- 以上、長くなってしまいましたがどなたかご教授頂ければ幸いです。 よろしくお願い致します。 |
1