/ / Skontrolujte, či má XML viac než jeden IDREF, pridajte čiarku v XSLT, ak to robí - xml, xslt

Skontrolujte, či XML obsahuje viac ako jeden IDREF, pridajte čiarku v XSLT, ak to robí - xml, xslt

Chcel by som sa opýtať, ako vytvoriť šablónu štýlov XSLT, pridať čiarku na výstup, ak môj vstup XML obsahuje dva alebo viac IDREF na danom mieste. Napríklad ak má 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>

Ako vidíte, vo vyššie uvedenom dokumente XML, mám na IDREF dva IDREF chef-ref deti z person element.

Ako môžem vytvoriť šablónu štýlov XSLT obsahovať v tomto prípade čiarku?

Má to byť XSLT niečo také?

<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>

odpovede:

0 pre odpoveď č. 1

Uveďte, prosím, ktorú XSLT verziu používate. XSLT 1.0 je už dávnou históriou, ale prekvapujúci počet ľudí ho stále používa.

V XSLT 2.0 je to veľmi jednoduché, stačí

<xsl:value-of select="person/@doctor" separator=", "/>

V XSLT 1.0 musíte robiť zhruba to, čo robíte vo svojom príklade. Je však lepšie vložiť oddeľovač pred každou položkou okrem prvej (test="position()!=1"), skôr než po každej položke okrem poslednej. To je preto, že vedieť, či ste na konci zoznamu, sa pozeráte, čo môže byť drahé.