代码之家  ›  专栏  ›  技术社区  ›  dnagirl

variable包含nodeset。如何输出变量的第n个节点?

  •  4
  • dnagirl  · 技术社区  · 15 年前

    我正在转换XML文档。有一个属性 @prettydate 这是一个类似于“2010年5月7日星期五”的字符串。我想分割这个字符串并添加到月份和年份的链接。我正在使用 exslt:strings 模块和我可以添加任何其他必要的EXSLT模块。

    到目前为止这是我的代码:

    <xsl:template match="//calendar">
        <xsl:variable name="prettyparts">
            <xsl:value-of select="str:split(@prettydate,', ')"/>
        </xsl:variable>
    
        <table class='day'>
            <thead>
                <caption><xsl:value-of select="$prettyparts[1]"/>, 
                        <a>
                            <xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&amp;per=m</xsl:attribute>
                            <xsl:value-of select='$prettyparts[2]'/>
                        </a> 
                        <xsl:value-of select='$prettyparts[3]'/>,  
                        <a>
                            <xsl:attribute name='href'><xsl:value-of select="$baseref"/>?date=<xsl:value-of select="@highlight"/>&amp;per=y</xsl:attribute>
                            <xsl:value-of select='$prettyparts[4]'/>
                        </a> 
                </caption>
    <!--etcetera-->
    

    我已经证实了,通过 <xml:for-each/> 我得到了预期的点头:

    <token>Friday</token>
    <token>May</token>
    <token>7</token>
    <token>2010</token>
    

    但不管我用哪种方式来指 <token> 直接地(不是在foreach中)我不会得到任何与无效类型相关的错误。以下是我尝试过的一些语法:

    <xsl:value-of select="$prettyparts[2]"/>
    <xsl:value-of select="$prettyparts/token[2]"/>
    <xsl:value-of select="exsl:node-set($prettyparts/token[2])"/>
    <xsl:value-of select="exsl:node-set($prettyparts/token)[2]"/>
    

    你知道这个表达应该是什么吗?

    埃塔:感谢@devnull的建议,正确的表达是:

    <xsl:value-of select="exsl:node-set($prettyparts)[position()=2]"/>
    

    而且,我必须这样设置变量:

    <xsl:variable name="prettyparts" select="str:split(@prettydate,', ')" />
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Daniel Haley    15 年前

    尝试使用 [position()=2] 而不是 [2] 在你的断言中。

    例子:

    <xsl:value-of select="$prettyparts[position()=2]"/>
    
    推荐文章