我很难让前面的属性在我的测试用例中使用。
这就是最终的结果。
<rows>
<row id="1">
<cell>Advances RTF - Regul ILIAS</cell>
</row>
<row id="2">
<cell style="color: RED">Advances RTF - Regul ILIAS</cell>
</row>
<row id="3">
<cell style="color: GREEN">Advances RTF - Regul ILIAS</cell>
</row>
</row>
<row id="4">
<cell>Analysis of the consumption of paymaster's advances</cell>
</row>
<row id="5">
<cell style="color: GREEN">Analysis of the consumption of paymaster's advances</cell>
</row>
<row id="6">
<cell>Analytic Image</cell>
</row>
<row id="7">
<cell style="color: GREEN">Analytic Image</cell>
</row>
<row id="8">
<cell>Analytic Image - System</cell>
</row>
<row id="9">
<cell style="color: GREEN">Analytic Image - System</cell>
</row>
</rows>我从如下所示的XML文件开始。我删除了许多额外的属性,因为它与这里的显示无关。
-<dbqueries>
-<dbquery id="algemeen_overview_1_lijn">
-<rows>
<row LRF_DESCRIPTION="Advances RTF - Regul ILIAS" />
<row LRF_DESCRIPTION="Advances RTF - Regul ILIAS" />
<row LRF_DESCRIPTION="Advances RTF - Regul ILIAS" />
<row LRF_DESCRIPTION="Analysis of the consumption of paymaster's advances" />
<row LRF_DESCRIPTION="Analysis of the consumption of paymaster's advances" />
<row LRF_DESCRIPTION="Analytic Image" />
<row LRF_DESCRIPTION="Analytic Image" />
<row LRF_DESCRIPTION="Analytic Image - System" />
<row LRF_DESCRIPTION="Analytic Image - System" />
</rows>
</dbquery>
为了得到我想要的结果,我使用一个xls文件。
<xsl:template match="/">
<rows>
<xsl:apply-templates select="//dbquery[@id='algemeen_overview_1_lijn']/rows/row"/>
</rows>
</xsl:template>
<xsl:template match="//dbquery[@id='algemeen_overview_1_lijn']/rows/row">
<xsl:element name="row">
<xsl:attribute name="id">
<xsl:value-of select="position()"/>
</xsl:attribute>
<xsl:choose>
<xsl:when test="current()/@LRF_DESCRIPTION != preceding-sibling::row[@LRF_DESCRIPTION]">
<cell>
<xsl:value-of select="@LRF_DESCRIPTION"/>
</cell>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="position() mod 2 = 0">
<cell style="color: #EBF3FF;">
<xsl:value-of select="@LRF_DESCRIPTION"/>
</cell>
</xsl:when>
<xsl:otherwise>
<cell style="color: #FFFFFF;">
<xsl:value-of select="@LRF_DESCRIPTION"/>
</cell>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>因此,这个选择部分应该做的是下面。如果LRF_DESCRIPTION !=以前的lrf_description,则显示没有样式颜色的LRF_description。
如果LRF_DESCRIPTION =先前的lrf_description,然后检查这是否是偶数或奇数位置(行号),如果是偶数,则以红色显示LRF_description,如果不均匀,则以绿色显示LRF_description。
检查偶数或奇数工作的部分。问题是我不能让第一部分发挥作用。
不管怎么说,这是你阅读这篇文章的时间。
发布于 2017-09-13 12:35:29
你已经接近解决方案了。下面一行修复了LRF_DESCRIPTION的属性处理,并为第一个项添加了一个异常。
将第一个<xsl:when test="..."条件更改为
current()/@LRF_DESCRIPTION != preceding-sibling::row[1]/@LRF_DESCRIPTION or count(preceding-sibling::row) = 0发布于 2017-09-13 12:34:48
尝试将<xsl:when test="current()/@LRF_DESCRIPTION != preceding-sibling::row[@LRF_DESCRIPTION]">更改为<xsl:when test="@LRF_DESCRIPTION != preceding-sibling::row[1]/@LRF_DESCRIPTION">,以便在XML结构和属性比较方面具有意义。
https://stackoverflow.com/questions/46197576
复制相似问题