繁体   English   中英

检查XML是否具有多个IDREF,如果有,请在XSLT中添加逗号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM