我需要在rowdata标签中显示rowdata的内容时使用formats标签。
xml如下:“temp.xml”
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="Temp.xsl"?>
<ALL_DATA>
<TITLES>
<VALUE1>Title1</VALUE1>
<VALUE2>Title2</VALUE2>
<FVALUE1>Title3</FVALUE1>
</TITLES>
<FORMATS>
<VALUE1>I5</VALUE1>
<VALUE2>I3</VALUE2>
<FVALUE1>F1.1</FVALUE1>
</FORMATS>
<MY_DATA>
<ROWDATA>
<VALUE1>5</VALUE1>
<VALUE2>33</VALUE2>
<FVALUE1>2.11</FVALUE1>
</ROWDATA>
<ROWDATA>
<VALUE1>34</VALUE1>
<VALUE2>12</VALUE2>
<FVALUE1>239.81</FVALUE1>
</ROWDATA>
</MY_DATA>
</ALL_DATA>
我试过xsl是:“temp.xsl”
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:template name="MY_TEMPLATE" match="/">
<html>
<body>
<table border="1">
<TR border="1">
<xsl:for-each select="/ALL_DATA/TITLES/*">
<th border="1">
<xsl:value-of select="."/>
</th>
</xsl:for-each>
</TR>
<xsl:for-each select="/ALL_DATA/MY_DATA/ROWDATA">
<TR>
<xsl:for-each select="*">
<TD width ="130">
<xsl:value-of select="."/>:-:
<xsl:variable name="cur_node_name" select="name(.)"/>
<xsl:for-each select="/ALL_DATA/FORMATS[name(.)]">
<!--<xsl:template match="$cur_node_name"> -->
<xsl:value-of select="."/>
<!--</xsl:template>-->
</xsl:for-each>
</TD>
</xsl:for-each>
</TR>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
很抱歉发布整个内容。
我觉得我可以得到一些帮助。在上面的xml中,我想在显示Mydata / rowdata / value1时使用formats / value1。
上面的Xsl迭代标题块并在<th>
中显示标题。然后第二个for-each块将遍历rowdata及其子项。
在显示子项时,我需要使用格式标签来显示rowdata的子项。
以上xsl为第3个标签FValue1提供输出:"2.11:-: I5 I3 F1.1"
;但我的期望是:"2.11:-: F1.1"
。如果我得到这个解决方案,我可以做其余的事情。我只知道通过修改内部for循环,这是可能的。但无法得到那个
如果有人建议如何,请帮忙。 谢谢。
答案 0 :(得分:0)
如果你的数据样本没有过分简化,你的xslt可能会完全放弃for-each
,看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<table border="1">
<xsl:apply-templates select="TITLES" />
<xsl:apply-templates />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="TITLES">
<tr>
<th><xsl:value-of select="./VALUE1" /></th>
<th><xsl:value-of select="./VALUE2" /></th>
<th><xsl:value-of select="./FVALUE1" /></th>
</tr>
</xsl:template>
<xsl:template match="ROWDATA">
<tr>
<td>
<xsl:value-of select="./VALUE1" />:-:<xsl:value-of select="//FORMATS/VALUE1" />
</td>
<td>
<xsl:value-of select="./VALUE2" />:-:<xsl:value-of select="//FORMATS/VALUE2" />
</td>
<td>
<xsl:value-of select="./FVALUE1" />:-:<xsl:value-of select="//FORMATS/FVALUE1" />
</td>
</tr>
</xsl:template>
<xsl:template match="MY_DATA">
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>