问题描述
这是我的简单 XML 文件:-
This is my simple XML file:-
<products> <value> <value> <region_timezone> <value>1</value> </region_timezone> <registrationstatus> <value>2</value> </registrationstatus> <eventstatus> <value>2</value> </eventstatus> <dist_activity> <value>5</value> <value>10068</value> <value>10070</value> </dist_activity> <reg_str_dt> <value>2013-01-14 20:35:00</value> </reg_str_dt> <reg_end_dt> <value>2013-01-14 20:35:00</value> </reg_end_dt> <product_id>1</product_id> <tab_id>351</tab_id> <tab_name>test1</tab_name> </value> </value> <value> <value> <region_timezone> <value>1</value> </region_timezone> <registrationstatus> <value>2</value> </registrationstatus> <eventstatus> <value>2</value> </eventstatus> <dist_activity> <value>5</value> <value>10069</value> <value>10070</value> </dist_activity> <reg_str_dt> <value>2013-02-14 20:39:00</value> </reg_str_dt> <reg_end_dt> <value>2013-02-14 20:39:00</value> </reg_end_dt> <product_id>2</product_id> <tab_id>352</tab_id> <tab_name>test2</tab_name> </value> </value> </products>
我想将它们转换成这样:-
I want to convert them to this:-
<products> <value> <value> <product_id value="1"> <tab_id value="351"> <tab_name value="test1"></tab_name> <region_timezone value="1"> </region_timezone> <registrationstatus value="2"> </registrationstatus> <eventstatus value="2"> </eventstatus> <dist_activity value="5,10068,10070"> </dist_activity> <reg_str_dt value="2013-01-14 20:35:00"> </reg_str_dt> <reg_end_dt value="2013-01-14 20:35:00"> </reg_end_dt> </tab_id> </product_id> </value> </value> <value> <value> <product_id value="2"> <tab_id value="352"> <tab_name value="test2"></tab_name> <region_timezone value="1"> </region_timezone> <registrationstatus value="2"> </registrationstatus> <eventstatus value="2"> </eventstatus> <dist_activity value="5,10069,10070"> </dist_activity> <reg_str_dt value="2013-02-14 20:39:00"> </reg_str_dt> <reg_end_dt value="2013-02-14 20:39:00"> </reg_end_dt> </tab_id> </product_id> </value> </value> </products>
有没有可能给我最好的重播
使用 PHP 代码是可能的,那么对我来说是最好的......我有一个 PHP 文件可以在 Sql 数据库中生成我的简单 Xml 文件...谢谢
Is It Possible Then Give Me Best Replay
It's Possible With Php Code Then Best For Me...
I Have One Php File Thats Generate My Simple Xml File In The Sql Database...
Thanks
推荐答案
应该这样做:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.51sjk.com/Upload/Articles/1/0/335/335674_20221101163019142.jpg"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="value"> <xsl:apply-templates /> </xsl:template> <xsl:template match="products/value/value"> <product_id value="{product_id}"> <tab_id value="{tab_id}"> <tab_name value="{tab_name}" /> <xsl:apply-templates select="node()" /> </tab_id> </product_id> </xsl:template> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="self::*[value[not(*)]]" mode="values" /> <xsl:apply-templates select="@* | node()" /> </xsl:copy> </xsl:template> <xsl:template match="value[not(*)]" /> <xsl:template match="*" mode="values"> <xsl:attribute name="value"> <xsl:apply-templates select="value[not(*)]" mode="values"/> </xsl:attribute> </xsl:template> <xsl:template match="value" mode="values"> <xsl:value-of select="concat(., ',')"/> </xsl:template> <xsl:template match="value[last()]" mode="values"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="product_id | tab_id | tab_name" /> </xsl:stylesheet>
在您的示例输入上运行时,会产生:
When run on your sample input, this produces:
<products> <product_id value="1"> <tab_id value="351"> <tab_name value="test1" /> <region_timezone value="1" /> <registrationstatus value="2" /> <eventstatus value="2" /> <dist_activity value="5,10068,10070" /> <reg_str_dt value="2013-01-14 20:35:00" /> <reg_end_dt value="2013-01-14 20:35:00" /> </tab_id> </product_id> <product_id value="2"> <tab_id value="352"> <tab_name value="test2" /> <region_timezone value="1" /> <registrationstatus value="2" /> <eventstatus value="2" /> <dist_activity value="5,10069,10070" /> <reg_str_dt value="2013-02-14 20:39:00" /> <reg_end_dt value="2013-02-14 20:39:00" /> </tab_id> </product_id> </products>