-- 作者:haoadele
-- 发布时间:11/30/2007 9:46:00 AM
-- 新手求助:XML实现嵌套??
各位大侠, 小弟初学XML,想实现如下转换却总是出错,请帮忙看一下是哪里的问题,不胜感激! <?xml version="1.0"?> <DataSetCollection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DataSet Name="151540WFG0017B" Type="Metrology Lot Run" Version="5.2.0" CreateTime="20070207152322"> <Data> <Class ClassNumber="1" LocationX="0.3" LocationY="10.2"> </Class> <Class ClassNumber="2" LocationX="10.2" LocationY="10.2"> </Class> <A ANumber="50"> <Test X="0" Y="1" TestN="1"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="2" TestN="1"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="3" TestN="1"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="1" TestN="2"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="2" TestN="2"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="3" TestN="2"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> </A> <A ANumber="51"> <Test X="0" Y="1" TestN="1"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="2" TestN="1"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="3" TestN="1"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="1" TestN="2"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="2" TestN="2"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> <Test X="0" Y="3" TestN="2"> <C Value1="xx" Value2="xx" Value3="xx" Value4="xx" </Test> </A> </Data> </DataSet> </DataSetCollection> ==> 转化为: ANumber:50 TestN: 1 Location X: 0.3 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx 0 2 xx xx xx xx 0 3 xx xx xx xx TestN: 2 Location X: 10.2 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx 0 2 xx xx xx xx 0 3 xx xx xx xx ANumber:51 TestN: 1 Location X: 0.3 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx 0 2 xx xx xx xx 0 3 xx xx xx xx TestN: 2 Location X: 10.2 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx 0 2 xx xx xx xx 0 3 xx xx xx xx 我的程序如下: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="text"/> <xsl:template match="DataSet"> <xsl:for-each select="Data/A"> ANumber<xsl:value-of select="@ANumber"/> <xsl:for-each select="Test[TestN='1']"> TestN:<xsl:value-of select="Test/@TestN"/> Location X:<xsl:value-of select="//DataSetCollection/DataSet/Data/Class[1]/@LocationX"/> Location Y:<xsl:value-of select="//DataSetCollection/DataSet/Data/Class[1]/@LocationY"/> X Y Value1 Value2 Value3 Value4 <xsl:for-each select="Test"> <xsl:value-of select="@X"/> <xsl:text> </xsl:text> <xsl:value-of select="@Y"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value1"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value2"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value3"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value4"/> <xsl:text> </xsl:text> <xsl:text> </xsl:text> </xsl:for-each> </xsl:for-each> <xsl:for-each select="Test[TestN='2']"> TestN:<xsl:value-of select="Test/@TestN"/> Location X:<xsl:value-of select="//DataSetCollection/DataSet/Data/Class[2]/@LocationX"/> Location Y:<xsl:value-of select="//DataSetCollection/DataSet/Data/Class[2]/@LocationY"/> X Y Value1 Value2 Value3 Value4 <xsl:for-each select="Test"> <xsl:value-of select="@X"/> <xsl:text> </xsl:text> <xsl:value-of select="@Y"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value1"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value2"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value3"/> <xsl:text> </xsl:text> <xsl:value-of select="C/@Value4"/> <xsl:text> </xsl:text> <xsl:text> </xsl:text> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> 却总是得到这样的结果:( ANumber:50 TestN: 1 Location X: 0.3 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx --The Value of TestN:1 in ANumber50 0 2 xx xx xx xx 0 3 xx xx xx xx 0 1 xx xx xx xx --The Value of TestN:2 in ANumber50 0 2 xx xx xx xx 0 3 xx xx xx xx TestN: 2 Location X: 10.2 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx --The Value of TestN:1 in ANumber50 0 2 xx xx xx xx 0 3 xx xx xx xx 0 1 xx xx xx xx --The Value of TestN:2 in ANumber50 0 2 xx xx xx xx 0 3 xx xx xx xx ANumber:51 TestN: 1 Location X: 0.3 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx --The Value of TestN:1 in ANumber51 0 2 xx xx xx xx 0 3 xx xx xx xx 0 1 xx xx xx xx --The Value of TestN:2 in ANumber51 0 2 xx xx xx xx 0 3 xx xx xx xx TestN: 2 Location X: 10.2 Location Y: 10.2 X Y Value1 Value2 Value3 Value4 0 1 xx xx xx xx --The Value of TestN:1 in ANumber51 0 2 xx xx xx xx 0 3 xx xx xx xx 0 1 xx xx xx xx --The Value of TestN:2 in ANumber51 0 2 xx xx xx xx 0 3 xx xx xx xx
|