在XSLT中显示重复的标签?

时间:2011-10-10 16:53:39

标签: java xml xslt

我正在使用一个使用XML存储CV的CV项目,使用XSLT和Java将其转换为HTML。

以下是XML文件的格式

<CVs>
<cv>
<name>...</name>
<dob>...</dob>
<experience>
<job>.....</job>
<job>.....</job>
</experience>
</cv>
<cv>
<name>...</name>
<dob>...</dob>
<experience>
<job>.....</job>
<job>.....</job>
<job>.....</job>
<job>.....</job>
<job>.....</job>
</experience>
</cv>
</CVs>

重复显示<job>的正确方法是什么?我只得到一个<job>而第一个......

祝你有个愉快的一天 约翰


非常感谢您的回复。 :)

我尝试了第一个解决方案。有用。但我想要的是用HTML段落格式显示所有内容。

首先显示No.1,然后应该有一个段落,然后是No.2,依此类推。 像 -

<p>Job No1</p>
<p>Job No2</p>

我使用了以下内容 - 未能获得所需的结果..

<xsl:for-each select="Job">
<p style="color:red">
<xsl:if test="position() &gt; 1">,</xsl:if>
<xsl:value-of select="."/>
</p>
</xsl:for-each> 

使用上面的代码我得到的输出就像 -

<p>Job No1 job No2..</p>

我正在使用XSLT 1.0,我在第一篇文章中提到了它。对不起,但是你判断它..对XSLT很有经验..很棒......

你能再帮我一次吗??

祝你有个愉快的一天 约翰


LarsH - 右说,我应该在第一篇文章中做到这一切,但不知何故无法管理它。现在我已经练习了发布技术,以后会正确地进行。 :)

另外,我接受了马丁的回答。它完成了这项工作,经过一点修改我得到了我的第二篇文章的答案。

非常感谢你们所有人......

祝你有个愉快的一天 约翰

1 个答案:

答案 0 :(得分:1)

我想问题是使用XSLT 1.0(或者在向后兼容模式下运行XSLT 1.0样式表的XSLT 2.0处理器)代码

<xsl:value-of select="job"/>

输出第一个job元素的字符串值。如果要输出所有作业元素的值,那么使用XSLT 1.0,您需要使用

<xsl:for-each select="job">
  <xsl:if test="position() &gt; 1">, </xsl:if>
  <xsl:value-of select="."/>
</xsl:for-each>
带有作业元素模板的

<xsl:apply-templates select="job"/>,例如

<xsl:template match="job">
  <xsl:if test="position() &gt; 1">, </xsl:if>
  <xsl:value-of select="."/>
<xsl:template>

使用XSLT 2.0时,您只需要<xsl:value-of select="job" separator=", "/>