特定の div (#navigation) に存在するすべての「a」タグの「コンテンツ」をオンザフライで変更する必要があります。
diazo ルールまたは xslt パターンはありますか?
ありがとうヴィート
以下は、id を持つ要素の下の子要素である各タグに属性 (この場合はtarget
) を追加する方法を示しています ( CSS に対応する)。元のタグのすべてのコンテンツとその他の属性が維持されます (ただし、順序は維持されない場合がありますが、これは問題ではありません)。a
navigation
#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
a
これは、 http: //docs.diazo.org/en/latest/recipes/adding-an-attribute/index.html にある公式の Diazo ドキュメントの例を拡張したものです。
よく分からない。すべてをコピーし、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>