如何在XSL中选择单个属性值?

时间:2015-12-06 21:01:45

标签: xml xslt

我有一些看起来像这样的XML:

<interp type="flowers color">Here is something concerning flowers and color.</interp>

我试图将其变成这样的东西:

<td class="interp">
    <span class="tag">flowers</span>
    <span class="tab">color</span>
    Here is something concerning flowers and color. 
</td>

所以这就是我一直在尝试的XSL:

<xsl:template match="interp">
    <td class="interp">
        <xsl:apply-templates select="@type | node()"/>
    </td>
</xsl:template>

<xsl:template match="@type">
    <xsl:for-each select=".">
    <span class="tag">
        <xsl:value-of select="."/>
    </span>
    </xsl:for-each>
</xsl:template> 

但我得到的更像是这样:

<span class="tag">flowers color</span>
Here is something concerning flowers and color. 

我做错了什么,如何将这些属性值分开?

1 个答案:

答案 0 :(得分:0)

使用像Saxon 9这样的XSLT 2.0处理器,您可以使用<xsl:for-each select="tokenize(., '\s+')">。使用XSLT 1.0检查您的处理器是否支持扩展功能或使用模板拆分或标记属性值,请参阅http://exslt.org/str/functions/tokenize/index.html