我需要即时修改特定div中存在的所有“a”标签的“内容”(#navigation)。
是否有重氮规则或xslt模式?
感谢的 维托
答案 0 :(得分:1)
不确定你的意思。 如果你想创建一个复制所有内容但只调整div id ='navigation'中的“a”元素的XSLT,你应该这样做:
<?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>
答案 1 :(得分:1)
以下演示了向属性为target
的元素下的每个a
标记添加属性(在本例中为navigation
)(因此对应于{ CSS中的{1}}。保留原始标签中的所有内容和其他属性(尽管顺序可能不是 - 尽管这不应该是一个问题)。
#navigation
如果要匹配特定的<?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
将在所有标准Diazo规则之后执行,因此如果您碰巧更改了xsl:template
标记在结果文档中的位置结构,请确保相应地调整match
条件。
这是在http://docs.diazo.org/en/latest/recipes/adding-an-attribute/index.html
的官方Diazo文档中扩展的一个例子