我管理的网站由一个组织(即www.old.com)拥有,现在已被新组织(即www.new.com)取代。我的问题是,某些链接仍指向我们在网站上使用的某些图像上的旧组织。我想知道是否有办法使用xsl将http://www.old.com替换为http://www.new.com。
我的想法是这样做但不确定它是否会起作用..
<xsl:template match="image">
<xsl:param name ="old" value='http://www.old.com'/>
<xsl:param name ="new" value='http://www.new.com'/>
<xsl:choose>
<xsl:when test="contains(@xlink:href,$old)">
<xsl:attribute name="xlink:href">
<xsl:value-of select="replace(@xlink:href, $old, $new)">
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="xlink:href">
<xsl:value-of select="@xlink:href"/>
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
xml看起来像这样..
<book title="Harry Potter">
<description
xlink:type="simple"
xlink:href="http://www.old.com/images/HPotter.gif"
xlink:show="new">
As his fifth year at Hogwarts School of Witchcraft and
Wizardry approaches, 15-year-old Harry Potter is.......
</description>
</book>
感谢您的帮助
答案 0 :(得分:1)
假设apply-templates
遍历所有节点(请参阅下面的第一个模板),以下内容应该有效:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@xlink:href">
<xsl:param name ="old">http://www.old.com</xsl:param>
<xsl:param name ="new">http://www.new.com</xsl:param>
<xsl:attribute name="xlink:href">
<xsl:value-of select="replace(., $old, $new)"/>
</xsl:attribute>
</xsl:template>