这是我的XMl: 我想像这样打印,编号如图1所示.2。只有“名称”是ABC。我在分配计数器变量并递增它然后在XSLT中检查某个值时遇到了一些困难。 这是我的代码:
{
"class": "quick_panel_label",
"fg": [210, 210, 210, 255],
"match_fg": [126, 199, 239, 255],
"selected_fg": [255, 255, 255, 255],
"selected_match_fg": [166, 229, 255, 255]
},
这是XSL样式表:
<Details>
<name>ABC</name>
<EFFECTIVEDATE>2010-04-30</EFFECTIVEDATE>
</Details>
<Details>
<name>EFG</name>
<EFFECTIVEDATE>2010-04-30</EFFECTIVEDATE>
</Details>
<Details>
<name>XYZ</name>
<EFFECTIVEDATE>2022-04-01</EFFECTIVEDATE>
</Details>
<Details>
<name>ABC</name>
<EFFECTIVEDATE>2022-04-01</EFFECTIVEDATE>
</Details>
<Details>
<name>ABC</name>
<EFFECTIVEDATE>2022-04-01</EFFECTIVEDATE>
</Details>
预期结果
<xsl:for-each select="Details">
</xsl:call-template name="DetaimTemplate">
</xsl:for-each>
<xsl:template name="DetaimTemplate">
</xsl:template>
如何打印 1.ABC
2.ABC
3.ABC
1.
等
答案 0 :(得分:0)
您还没有提到输出是文本还是xml。 假设您期望xml输出,我提供了解决方案。 我从xslt解析器遍历每个Details节点
开始 <xsl:template match="Details">
<xsl:if test="name='ABC'">
<t>
<xsl:value-of select="count(preceding-sibling::*[name='ABC']) + 1"/>
<xsl:text>.ABC</xsl:text>
</t>
</xsl:if>
</xsl:template>
答案 1 :(得分:0)
嗯,你可以做到:
<xsl:for-each select="Details[name='ABC']">
<xsl:value-of select="position()" />
<xsl:text>. ABC </xsl:text>
</xsl:for-each>
当然,在它可以工作之前,您还需要一个结构良好的输入,其中包含一个根元素和一个匹配该元素的模板,以便它可以工作。