[英]Check whether the XML has more than one IDREF, add a comma in the XSLT if it does
我想问一下,如果我的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文档中,我在person
元素的chef-ref
子代上有两个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>
请始终说出您使用的XSLT版本。 XSLT 1.0现在是古老的历史,但是仍有许多人使用它。
在XSLT 2.0中,这非常简单,您只需
<xsl:value-of select="person/@doctor" separator=", "/>
在XSLT 1.0中,您必须大致执行示例中的操作。 但是,最好在除第一个( test="position()!=1"
)之外的每个项目之前插入一个分隔符,而不是在除最后一个项目之外的每个项目之后插入一个分隔符。 这是因为知道您是否在列表的末尾会涉及到前瞻,这可能会很昂贵。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.