我正在转换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"/>&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"/>&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,', ')" />