我想问一下如果我的XML输入在给定点包含两个或更多IDREF,如何使XSLT样式表为输出添加逗号。例如,如果XML具有:
<person unique_no="p2" gender = "M">
<chef-ref IDREF="c2"/>
<chef-ref IDREF="c1"/>
</person>
<doctor id="c1">
<d_f_name>Chef Linguini</d_f_name>
<d_l_name>Gusteau</d_l_name>
<specification>&on;</specification>
</doctor>
<doctor id="c2">
<d_f_name>Gordon</d_f_name>
<d_l_name>Ramsay</d_l_name>
<specification>&ENT;</specification>
</doctor>
如您所见,在上面的XML文档中,我在chef-ref
元素的person
个子元素上有两个IDREF。
在这种情况下,如何让XSLT样式表在输出中包含逗号?
XSLT需要是这样的吗?
<xsl:for-each select="person">
<td>
<!-- <xsl:value-of select="key('Medications', @Medications/@IDREF)"/>
-->
<xsl:value-of select="@doctor"/>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</td>
</xsl:for-each>
答案 0 :(得分:0)
请始终说出您使用的是哪个XSLT版本。 XSLT 1.0现在已成为古代历史,但仍然有相当多的人使用它。
在XSLT 2.0中,这很简单,你只需要
test="position()!=1"
在XSLT 1.0中,您必须大致完成您在示例中所做的操作。但是,最好在除第一个({{1}})之外的每个项目之前插入分隔符,而不是在除最后一个项目之外的每个项目之后插入分隔符。这是因为知道你是否在列表末尾涉及预见,这可能很昂贵。