我很难从这个xml中获取数据:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<AAA>Header</AAA>
<BBB>
<CCC>
<DDD>
<EEE>123123</EEE>
<FFF>
<GGG>
<HHH>Body</HHH>
<III>1</III>
</GGG>
<GGG>
<HHH>Body</HHH>
<III>3</III>
</GGG>
</FFF>
</DDD>
</CCC>
<CCC>
<DDD>
<EEE>234234</EEE>
<FFF>
<GGG>
<HHH>Body</HHH>
<III>2</III>
</GGG>
<GGG>
<HHH>Body</HHH>
<III>4</III>
</GGG>
<GGG>
<HHH>Body</HHH>
<III>6</III>
</GGG>
</FFF>
</DDD>
</CCC>
<CCC>
<DDD>
<EEE>345345</EEE>
<FFF>
<GGG>
<HHH>Body</HHH>
<III>7</III>
</GGG>
</FFF>
</DDD>
</CCC>
</BBB>
</document>
需要的结果应该是:
Header;
Body;1;123123
Body;3;123123
Body;2;234234
Body;4;234234
Body;6;234234
Body;7;345345
我的xslt看起来:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="text" encoding="Windows-1257" indent="yes"/>
<xsl:template match="/">
<!--Start Header--><xsl:value-of select="document/AAA"/><xsl:text>;</xsl:text>
<!--End Header--><xsl:text>
</xsl:text>
<xsl:for-each select="document/BBB/CCC/DDD/FFF/GGG">
<!--Start Body--><xsl:value-of select="HHH"/><xsl:text>;</xsl:text>
<xsl:value-of select="III"/><xsl:text>;</xsl:text>
<xsl:value-of select="../EEE"/><--This doesn't work-->
<!--End Body--><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
现在我有从EEE标签获取价值的问题。请帮助解决它,因为我不知道该怎么做。
答案 0 :(得分:1)
从您的for-each
语句中,您当前处理的上下文为document/BBB/CCC/DDD/FFF/GGG
。
EEE
语句的完整路径为document/BBB/CCC/DDD/EEE
。
因此,您需要返回两个级别才能从EEE
节点到达GGG
节点:
<xsl:value-of select="../../EEE"/>