Мне нужно на лету изменить «содержимое» всех тегов «a», присутствующих в определенном div (#navigation).
Существует ли правило диазо или шаблон xslt?
спасибо Вито
Мне нужно на лету изменить «содержимое» всех тегов «a», присутствующих в определенном div (#navigation).
Существует ли правило диазо или шаблон xslt?
спасибо Вито
Ниже показано добавление атрибута (в данном случае target
) к каждому из тегов a
, которые являются дочерними элементами элемента с идентификатором navigation
(что соответствует #navigation
в CSS). Весь контент и другие атрибуты из исходных тегов сохраняются (хотя порядок может быть и другим — хотя это не должно быть проблемой).
<?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">
<after css:theme="#target" css:content="#navigation" />
<xsl:template match="*[@id='navigation']//a">
<xsl:copy>
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:copy-of select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
</rules>
Измените условие match
соответствующим образом с дополнительными условиями, если вы хотите сопоставить определенные теги a
. xsl:template
будет выполняться после всех стандартных правил Diazo, поэтому убедитесь, что вы соответствующим образом настроили условие match
, если вам случится изменить структуру расположения тегов a
в результирующем документе.
Это расширенный пример в официальной документации Diazo по адресу http://docs.diazo.org/en/latest/recipes/adding-an-attribute/index.html
Не уверен, что вы имеете в виду. Если вы хотите создать XSLT, который копирует все, но настраивает только элементы «a» внутри div id='navigation', вы должны сделать что-то вроде этого:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="@*|node()" priority="-1">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//div[@id='navigation']//a">
<a>
<xsl:attribute name='href'>
<xsl:value-of select='@href' />
</xsl:attribute>
<!-- Change your content here -->
</a>
</xsl:template>
</xsl:stylesheet>