2

コンテンツから選択した値を使用して URL を計算することにより、テーマ内hrefの特定の要素の sを変更しようとしています。<a>ただし、 href 属性を変更する方法がまったくわかりません。ルールattributesで属性が理解されていないようです。<replace>

最終的には、次のようなことができるようになりたいです。

<replace css:theme="a.languageswitcher" attributes="href">
  <!-- use some XSL logic here to stitch together the new href -->
</replace>

したがって、次のルールは機能しますが、私には役に立ちません。

<copy attributes="href" css:theme="a.languageswitcher" css:content="#portal-logo" />

<merge attributes="href" css:theme="a.languageswitcher" css:content="#portal-logo" />

しかし、これはすでに機能していないattributes="href"ため、このルールは無視されます。

<replace attributes="href" css:theme="a.languageswitcher" css:content="#portal-logo" />

一方、<a>要素を最初から再構築しようとすると、@ross-patterson の質問で説明されているエラーに遭遇します: Diazo - Conditionally add a class to a theme element :

    <replace theme="//a[@class='languageswitcher']">
      <a class="languageswitcher">
        <xsl:attribute name='href'>
          foo
        </xsl:attribute>
      </a>
    </replace>

エラーが発生します:

XSLTApplyError: xsl:attribute: Cannot add attributes to an element if children have been already added to the element.

これはどのように行うことができますか?

4

3 に答える 3

3

このようなものはうまくいくはずです:

<replace css:theme="a.languageswitcher">
    <xsl:for-each css:select="a.languageswitcher">
        <xsl:variable name="link">
            http://example.com
        </xsl:variable>
        <a href="{$link}"><xsl:copy-of select="." /></a>
    </xsl:for-each>
</replace>
于 2013-05-29T15:01:14.203 に答える
2

このルールを使用したテーマで

<replace css:content-children="#hptoolbar-cerca"><xsl:attribute name="href">
<xsl:value-of select="//li[@id='portaltab-catalog']//a/@href" /></xsl:attribute><xsl:apply-templates select="node()"/></replace>

#hptoolbar-cerca の href をコンテンツ内の別の要素の href で変更します。

多分これはあなたにとって役に立つかもしれません。

ヴィート

于 2012-11-22T07:06:21.850 に答える