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ď č. 1Uveď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é.