2017-08-28 3 views
1

に角括弧で属性を作成することが可能ですAMPページのコードスニペットがあり、いくつかの対話 https://ampbyexample.com/advanced/image_galleries_with_amp-carousel/は、XSLT 1.0

<amp-carousel controls 
 
    width="400" 
 
    height="100"> 
 
    <amp-img src="/img/image1.jpg" 
 
    width="100" 
 
    height="75" 
 
    role="button" 
 
    tabindex="0" 
 
    [class]="selectedSlide == 0 ? 'selected' : ''" 
 
    on="tap:AMP.setState({selectedSlide: 0})"></amp-img> 
 
    <amp-img src="/img/image2.jpg" 
 
    width="100" 
 
    height="75" 
 
    role="button" 
 
    tabindex="1" 
 
    [class]="selectedSlide == 1 ? 'selected' : ''" 
 
    on="tap:AMP.setState({selectedSlide: 1})"></amp-img> 
 
    <amp-img src="/img/image3.jpg" 
 
    width="100" 
 
    height="75" 
 
    role="button" 
 
    tabindex="2" 
 
    [class]="selectedSlide == 2 ? 'selected' : ''" 
 
    on="tap:AMP.setState({selectedSlide: 2})"></amp-img> 
 
</amp-carousel>

カルーセル私はそれを統合したいと思います私のページのXSLTを使用します。問題は、要素の属性が大括弧で囲まれた属性を使用することです。 XSLTでそのような特定の属性([class] = "selectedSlide == 1? 'selected': ''")を使用してそのような要素を作成することはできますか?

+1

関連[amphtml Github issue](https://github.com/ampproject/amphtml/issues/11115)。 – nwellnhof

答えて

1

私はこれまであまりXMLの方言に遭遇していませんでしたが、XSLTはこの形式のシリアル化をサポートしていません。たとえば、属性名を_class_="value"として出力し、ある種の正規表現処理を使用して_class_[class]に変更するなど、何らかの後処理によって実現できます。

Saxonでは独自のシリアライゼーション方法を実装することができますので、_class_からに同様の置換を行うようにXMLシリアル化メソッドをサブクラス化するか、特殊属性をシリアライザは認識します。

+0

マイケルに役立つアドバイスありがとうございます。これを考慮に入れます。 –

1

XML自体では、角括弧は属性名に含まれません。

あなたが記述したフォームのテキストを出力することができますが、それはお勧めできません。確かにXMLではありません。

+0

回答ありがとう –

関連する問題