要素の属性内に HTML を含めたい (ここで使用される data-clearing 属性: http://foundation.zurb.com/docs/components/clearing.html )。私の<caption>
データは、次の 2 つの方法で利用できます。
<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.]]>;" />
読んでくれてありがとう。