我有一个关于XSL的问题。 在CMS系统中,我得到以下输出:
<custom name="email"><link title="Send email" href="mailto:some@exmple.com">some@example.com</link></custom>
我想基于此输出“a”属性。我正在使用以下XSL模板:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
<!-- <custom name="email" pretext="Some custom text"><link title="Send email" href="mailto:some@exmple.com">some@example.com</link></custom> -->
<xsl:template match="custom[@name='email']">
<div class="custom email">
<span class="icon custom email"></span>
<p>
<span class="pretext"><xsl:value-of select="@custom:pretext"/></span>
<a href="{link/@href}"><xsl:value-of select="link"/></a>
</p>
</div>
</xsl:template>
我想输出:
<div class="custom email">
<span class="icon custom email"></span>
<p>
<span class="pretext">Some custom text</span>
<a href="mailto:some@example.com" title="Send email">some@example.com</a>
</p>
</div>
但是我没有让它工作......我的问题是我无法从“链接”获得“href”属性。有人能帮助我吗?
非常感谢。
菲利普
答案 0 :(得分:1)
您可以使用花括号将xpath计算为属性值。例如:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent='yes'/>
<xsl:strip-space elements="*"/>
<xsl:template match="custom">
<a href="{link/@href}"><xsl:value-of select="link"/></a>
</xsl:template>
</xsl:stylesheet>
下面的XML在针对上述XSLT运行时:
<custom name="email"><link title="Send email" href="mailto:some@exmple.com">some@example.com</link></custom>
给出了以下结果:
<?xml version="1.0" encoding="utf-8"?>
<a href="mailto:some@exmple.com">some@example.com</a>
它是否解决了使用@href获取<a>
的问题?