我想在元素的属性中包含 HTML(对于此处使用的数据清除属性:http: //foundation.zurb.com/docs/components/clearing.html)。我的<caption>
数据有两种方式可用:
<caption mode="formatted">
<p>A fairly long looking <a href="http://www.stackoverflow.com">caption with a link</a> that goes to an external site.</p>
</caption>
<caption mode="unformatted">
<![CDATA[A fairly long looking <a href="http://www.stackoverflow.com">caption with a link</a> that goes to an external site.]]>
</caption>
这是我的模板:
<xsl:template match="images/entry">
<!-- process contents of caption node-->
<xsl:variable name="cap">
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:apply-templates select="caption/*" mode="html" />
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</xsl:variable>
<li>
<xsl:copy-of select="$cap"/> //outside of attribute it works
<img>
<xsl:attribute name="src">/image/2/150/112/5<xsl:value-of select="@path"/>/<xsl:value-of select="filename"/></xsl:attribute>
<xsl:attribute name="data-caption">
<xsl:copy-of select="$cap"/> //inside of attribute it removes the <a> tag
</xsl:attribute>
</img>
</li>
</xsl:template>
将节点中的标记与此模板mode=html
匹配:<a>
<caption>
<!-- mark external links -->
<xsl:template match="a" mode="html">
<a href="{@href}" title="{@title}">
<xsl:if test="number(substring(@href,1,4)='http')">
<xsl:attribute name="class">external</xsl:attribute>
<xsl:attribute name="target">_blank</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="* | @* | text()" mode="html"/>
</a>
</xsl:template>
如果我使用“未格式化”的标题,它会保留<a>
标签(期望的行为)。但是,当我使用该标题时,我无法使用“标记外部链接”模板来修复<a>
标签。使用“格式化”标题,我可以<a>
像我想要的那样处理标签,但是当我xsl:copy-of
在<img>
<xsl:attribute>
. 它将在属性之外正常显示,如下所示:
<![CDATA[<p>A fairly long looking <a href="http://www.stackoverflow.com" title="" class="external" target="_blank">caption with a link</a> that goes to an external site.</p>]]>
有没有办法让我的最终结果看起来像:
<img src="/image/2/150/112/5/images/my-image.jpg"
data-caption="<![CDATA[A fairly long looking <a class="external" target="_blank" href="http://www.stackoverflow.com">caption with a link</a> that goes to an external site.]]>;" />
谢谢阅读。