我想在链接之间插入下划线符号,并创建为不同的属性值:
我的输入xml是:
<img imageid="36" alt="water" height="250" width="400"
class="right" src="https://irctc.com/Services/Gets/Contents/imagesv1/Images/water" />
XSL我用作:
<xsl:template match="img">
<xsl:element name="image">
<xsl:attribute name="id">
<xsl:value-of select="@imageid"/>
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="@alt"/>
</xsl:attribute>
<xsl:attribute name="height">
<xsl:value-of select="@height"/>
</xsl:attribute>
<xsl:attribute name="width">
<xsl:value-of select="@width"/>
</xsl:attribute>
<xsl:attribute name="align">
<xsl:value-of select="@class"/>
</xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="@src"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
输出我得到了:
<image id="36"
alt="water"
height="250"
width="400"
align="right"
href="https://irctc.com/Services/Gets/Contents/imagesv1/Images/water"/>
但是我需要输出,因为images-v1需要带有文件名,我需要下划线符号
预期产出:
<image id="36"
alt="water"
height="250"
width="400"
align="right"
href="imagesv1_water"/>
请为此提供建议。提前致谢
答案 0 :(得分:0)
更改
<xsl:attribute name="href">
<xsl:value-of select="@src"/>
</xsl:attribute>
到
<xsl:attribute name="href">
<xsl:value-of select="tokenize(@src, '/')[position() = last()-2 or position() = last()]" separator="_"/>
</xsl:attribute>
答案 1 :(得分:0)
您可以使用以下XSLT2.0代码:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="img">
<xsl:variable name="src_tokens" select="tokenize(@src, '/')"/>
<image
id="{@imageid}"
alt="{@alt}"
height="{@height}"
width="{@width}"
align="{@class}"
href="{$src_tokens[7]}_{$src_tokens[9]}"
/>
</xsl:template>
</xsl:stylesheet>
当用于属性时,大括号中的值将被计算为xpath表达式。