我正在使用一个使用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() > 1">,</xsl:if>
<xsl:value-of select="."/>
</p>
</xsl:for-each>
使用上面的代码我得到的输出就像 -
<p>Job No1 job No2..</p>
我正在使用XSLT 1.0,我在第一篇文章中提到了它。对不起,但是你判断它..对XSLT很有经验..很棒......
你能再帮我一次吗??
祝你有个愉快的一天 约翰
LarsH - 右说,我应该在第一篇文章中做到这一切,但不知何故无法管理它。现在我已经练习了发布技术,以后会正确地进行。 :)
另外,我接受了马丁的回答。它完成了这项工作,经过一点修改我得到了我的第二篇文章的答案。
非常感谢你们所有人......
祝你有个愉快的一天 约翰
答案 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() > 1">, </xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
带有作业元素模板的或<xsl:apply-templates select="job"/>
,例如
<xsl:template match="job">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="."/>
<xsl:template>
使用XSLT 2.0时,您只需要<xsl:value-of select="job" separator=", "/>
。