XSLT 2.0定义了存储在变量中的元素序列

时间:2018-12-09 23:05:15

标签: xslt-2.0

在XSLT 2.0中,我基于从<a>派生的字符串序列和xsl:for-each元素序列,使用tokenize()循环使用html <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>

但是我找不到与Xquery map !等效的XSLT。常见的<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">的否定结果可能会在两个逗号之间造成空白...

0 个答案:

没有答案