我在xsl中有一个循环,根据属性值,我想写一些文字。
XML如下:
<ROWS><ROW oid="28439"><EFL eid="8" fid="27672" count="2">
<MK id="3" val="0"/>
<MK id="11" val="0578678 "/> </ROW></ROWS>
XSL如下:
<xsl:for-each select="EFL/MK">
<xsl:value-of select="@id" />:
<xsl:value-of select="@val" />
</xsl:for-each>
我希望得到以下输出:
3:0 &amp; 11:057868
“&amp;”。 “MK”标签的计数在“行”标签的“计数”属性中可用。
请告诉我如何在XSL中添加以下条件:
如果行标记中的 Count Atrribute 的值大于1则 显示“&amp;” ENDIF
由于
答案 0 :(得分:1)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="ROWS/ROW">
<xsl:for-each select="EFL/MK">
<xsl:value-of select=
"concat(substring(' & ', 1 div (position() > 1)),
@id,
':',
@val,
substring('
', 1 div (position() = last()))
)
"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档(更正格式正确):
<ROWS>
<ROW oid="28439">
<EFL eid="8" fid="27672" count="2">
<MK id="3" val="0"/>
<MK id="11" val="0578678"/>
</EFL>
</ROW>
</ROWS>
生成想要的正确结果:
3:0 & 11:0578678
答案 1 :(得分:-1)
试试这段代码:
<xsl:for-each select="EFL/MK">
<xsl:value-of select="@id" />:
<xsl:value-of select="@val" />
<xsl:if test="../@count > 1">
<xsl:if test="not(position()=last())"><![CDATA[ & ]]></xsl:if>
</xsl:if>
</xsl:for-each>