Adding an attribute to elements
This recipe demonstrates adding a
target
attribute to any
a
(link) tags on a page. This recipe will also ensure that any
children elements of the given
a
tag will be maintained (such as
img
tags, as shown) and that if said attribute is already set,
its value will be maintained. Note that due to processing,
the attribute's ordering on the tag may change.
Rules
<?xml version="1.0" encoding="UTF-8"?>
<rules xmlns="http://namespaces.plone.org/diazo"
xmlns:css="http://namespaces.plone.org/diazo/css"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<replace css:theme="#target" css:content="#content" />
<xsl:template match="a">
<xsl:copy>
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:copy-of select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
</rules>
Theme
<div id="target">
<div>Content</div>
</div>
Content
<div id="content">
<!-- This link gets target="_blank" -->
<a href="http://plone.org" class="my-link">Visit plone.org</a>
<!-- This link gets target="_blank"-->
<a href="http://diazo.org" id="diazo-link">Visit diazo.org today!
<img src="http://docs.diazo.org/en/latest/_images/diazo-concept.png" />
</a>
<!-- This link has its target attribute maintained -->
<a href="http://diazo.org" target="_top">Open in this window</a>
</div>
Output
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div id="content">
<!-- This link gets target="_blank" -->
<a target="_blank" href="http://plone.org" class="my-link">Visit plone.org</a>
<!-- This link gets target="_blank"-->
<a target="_blank" href="http://diazo.org" id="diazo-link">Visit diazo.org today!
<img src="http://docs.diazo.org/en/latest/_images/diazo-concept.png" /></a>
<!-- This link has its target attribute maintained -->
<a target="_top" href="http://diazo.org">Open in this window</a>
</div>
</body>
</html>