我是XSLT的新手。我有一个XML文档,我使用XSL将XML转换为HTML表格.XML是从服务器到Web客户端的响应。在这种情况下,它是IE9浏览器。 XSLT处理由浏览器完成。“ch3”节点的数量范围为1到100000。
以下是我正在做的示例代码。
在下面的xsl代码中,变量是在每个循环中创建的。我想知道这个创建对浏览器内存有什么影响。这会对性能产生什么影响吗?
============XMLDoc=======
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<ch1>
<ch2>
<ch3 a="bosy" b="" c="5" d="nobody"/>
......
</ch2>
</ch1>
</root>
============XMLDoc=======
============XSLSheet=======
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root/ch1">
......
<xsl:for-each select="ch1/ch">
<xsl:variable name="color">
<xsl:choose>
<xsl:when test="@c = '5'">orange</xsl:when>
<xsl:when test="@c = '4'">red</xsl:when>
<xsl:when test="@c = '3'">white</xsl:when>
<xsl:when test="@c = '2'">gree</xsl:when>
<xsl:when test="@c = '1'">yellow</xsl:when>
<xsl:when test="@c = '0'">blue</xsl:when>
</xsl:choose>
</xsl:variable>
.............
</xsl:for-each>
.............
<xsl-template>
</xsl:transform>
============XSL Sheet=======
答案 0 :(得分:0)
我认为XSLT变量非常便宜。一般来说,除非你真的遇到问题,否则我不会担心性能。您可能希望生成这些100000节点文档中的一个,以查看性能是否可接受。
答案 1 :(得分:0)
这绝对是特定于实现的,它可能会因浏览器而异。
但是,在for-each循环的每次迭代之后,不再需要此上下文中的变量,因此任何自我尊重的XSLT处理器都不需要在内存中具有100000个值,每次迭代后都可以释放内存。 / p>
答案 2 :(得分:0)
您需要自上而下而非自下而上的性能。你知道你的性能要求吗?你能衡量一下你目前的表现吗?是否存在差距,如果有,您能否量化它?在这个阶段,您可以开始向下钻取以分析原因,例如通过控制实验来测量以特定方式改变设计的效果。关于特定结构是否低效的推测是这个过程的一部分,但得到答案的唯一方法是进行测量。