XSLT 2.0, разграничивающий последовательность элементов, хранящихся в переменной - PullRequest
0 голосов
/ 10 декабря 2018

В 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"> может создать пробел между двумя запятыми ...

...