В XSLT 2.0 я создаю последовательность элементов html <a>
, используя цикл xsl:for-each
на основе последовательности строк, полученных из tokenize()
, и эта последовательность элементов <a>
сохраняется в переменной corresp
:
<xsl:variable name="tokenparam" select="tokenize($paramCorrespdocs,'~')"/>
<xsl:variable name="corresp">
<xsl:for-each select="$tokenparam">
<xsl:if test="string(.) != $currdoc">
<xsl:if test="someXPATH">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="someXPATH"/>
</xsl:attribute>
<xsl:value-of select="someXPATH"/>
</xsl:element>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:variable>
Это может быть неправильный подход к построению серии элементов HTML с разделителями, но моя цель - вывести последовательность элементов <a>
, ограниченных ,
, например:
<a href="somelink">content</a>, <a href="somelink">content</a>, <a href="somelink">content</a>, <a href="somelink">content</a>
Но я не могу найти XSLT, эквивалентный Xquery map !
.Обычный <xsl:if test="position() > 1">
, похоже, не будет работать, потому что позиция не гарантируется из-за теста: <xsl:if test="string(.) != $currdoc">
.
Я должен, поскольку я не обязан помещать это в переменную corresp
.Я просто подумал, что это будет способ вывести окончательный результат в форме с разделителями.
Заранее большое спасибо.
Редактировать: Я пытался это
<xsl:variable name="tokenparam" select="tokenize($paramCorrespdocs,'~')"/>
<xsl:for-each select="$tokenparam[not(. = $currdoc)]">
<xsl:if test="someXPATH">
<xsl:if test="position()>1">, </xsl:if>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="someXPATH"/>
</xsl:attribute>
<xsl:value-of select="someXPATH"/>
</xsl:element>
</xsl:if>
</xsl:for-each>
Хотяон работает при условии идеального мира, отрицательный результат теста <xsl:if test="someXPATH">
может создать пробел между двумя запятыми ...