1

特定の div (#navigation) に存在するすべての「a」タグの「コンテンツ」をオンザフライで変更する必要があります。

diazo ルールまたは xslt パターンはありますか?

ありがとうヴィート

4

2 に答える 2

1

以下は、id を持つ要素の下の子要素である各タグに属性 (この場合はtarget) を追加する方法を示しています ( CSS に対応する)。元のタグのすべてのコンテンツとその他の属性が維持されます (ただし、順序は維持されない場合がありますが、これは問題ではありません)。anavigation#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て条件を調整してください。matcha

これは、 http: //docs.diazo.org/en/latest/recipes/adding-an-attribute/index.html にある公式の Diazo ドキュメントの例を拡張したものです。

于 2013-02-04T04:27:26.117 に答える
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>
于 2012-08-28T15:38:36.183 に答える