我遇到了问题,我有一个xml文件(page.xml),但需要HTML格式的表格
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="page.xsl"?>
<AAAAA>
<ITEM>
<MANYTIMES>3</MANYTIMES>
<ID>010101</ID>
<NAME>name of item 1</NAME>
</ITEM>
<ITEM>
<MANYTIMES>5</MANYTIMES>
<ID>020202</ID>
<NAME>nme of item 2</NAME>
</ITEM>
</AAAAA>
我有xsl文件(page.xsl):
<?xml version="1.0" encoding="Windows-1250"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="/AAAAA/ITEM">
<xsl:variable name="howmanytimes"><xsl:value-of select="MANYTIMES"/></xsl:variable>
<div style='color:red'>View this <xsl:value-of select="$howmanytimes"/> many times:</div>
<TABLE>
<TR>
<TD style="border:solid windowtext 0.5pt;color:green"> <xsl:value-of select="ID"/> </TD>
<TD style="border:solid windowtext 0.5pt;color:blue"> <xsl:value-of select="NAME"/> </TD>
</TR>
</TABLE>
</xsl:template>
</xsl:styleshee
没关系,但每个表都应该重复MANYTIMES
。
答案 0 :(得分:0)
在XSLT 2.0中,您可以
<xsl:variable name="here" select="."/>
<xsl:for-each select="1 to $howManyTimes">
...
</xsl:for-each>
你想在循环中使用$ here变量,因为循环中的上下文项是整数,而不是节点。
在XSLT 1.0中没有等效的东西,但如果源文档包含足够的节点,则有一个解决方法:
<xsl:variable name="here" select="."/>
<xsl:for-each select="//node()[position() <= $howManyTimes]">
...
</xsl:for-each>
答案 1 :(得分:0)
我更改的文件page.xsl:
<?xml version="1.0" encoding="Windows-1250"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="/AAAAA/ITEM">
<xsl:variable name="howManyTimes"><xsl:value-of select="MANYTIMES"/></xsl:variable>
<div style='color:red'>View this <xsl:value-of select="$howManyTimes"/> many times:</div>
<!--
<TABLE>
<TR>
<TD style="border:solid windowtext 0.5pt;color:green"> <xsl:value-of select="ID"/> </TD>
<TD style="border:solid windowtext 0.5pt;color:blue"> <xsl:value-of select="NAME"/> </TD>
</TR>
</TABLE>
-->
<xsl:for-each select="1 to $howManyTimes">
<div> my text </div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我将如何使用for-each循环?