2017-04-03 22 views
0

要素が作成されたら、追加値をdata-id属性に変更する必要がありますが、この値が設定されるとそれを維持する。問題は、フォームの作成中に注文が変更された場合、IDが変更され、データIDの場合は固定値が必要です。何か案は。XSL - 値が存在しない場合、属性に値を追加する

Iは、入力要素を作成するためのコードを有する:HTMLで

<div class="field" align="left"> 
    <xsl:element name="input"> 
    <xsl:attribute name="id"><xsl:value-of select="$field_id" /></xsl:attribute> 
    <xsl:attribute name="name"><xsl:value-of select="$field_id" /></xsl:attribute> 
    <xsl:attribute name="type">text</xsl:attribute> 
    <xsl:attribute name="value"><xsl:value-of select="." /></xsl:attribute> 
    <xsl:attribute name="maxlength"><xsl:value-of select="@maxlength" /></xsl:attribute> 
    <xsl:attribute name="minlength"><xsl:value-of select="@minlength" /></xsl:attribute> 
    <xsl:attribute name="class">text</xsl:attribute> 
    <xsl:attribute name="data-id"> 
     <xsl:value-of select="$field_id" /> 
    </xsl:attribute> 

    <xsl:attribute name="required"> 
    <xsl:choose> 
     <xsl:when test="@required='required'">required</xsl:when> 
               <xsl:otherwise>false</xsl:otherwise> 
    </xsl:choose> 
    </xsl:attribute> 

    <xsl:attribute name="onchange"> 
              fieldPropertyChange('smalltext', '<xsl:value-of select="$field_id" />'); 
    </xsl:attribute> 
</xsl:element> 

答えて

1

reqired="required"の反対側は、required="false"ありません。 spec on boolean attributesを読んでください。

値 "真"と "偽"はブール値属性では使用できません。偽の値を表現するには、属性を省略する必要があります。

フィールドがオプションの場合は、「必須」属性を省略してください。

さらに、attribute value templatesがありません。 <xsl:attribute>は一般的に必要ではなく、サンプルではまったく必要ではありません。 <xsl:element>についても同様です。

コードは次のようになります。

<div class="field" align="left"> 
    <input 
     id="{$field_id}" name="{$field_id}" type="text" class="text" 
     value="{.}" data-id="{$field_id}" 
     onchange="fieldPropertyChange('smalltext', '{$field_id}')" 
    > 
     <xsl:copy-of select="@maxlength|@minlength|@required[. = 'required']" /> 
    </input> 
</div> 

複数の属性を持つ<input>が必要です。 @maxlength,@minlength(ソースに存在する場合)と@required(ただし、ソースに実際に値が'required'の場合のみ)をコピーしたいとします。

<xsl:copy-of>は、このような状況に適しています。

なお、onchangeを取り除きたい場合があります。イベント処理のためにjQueryと別のスクリプトファイルを使用し、すべてのJavascriptをHTMLコードから削除することをお勧めします。

+0

ありがとうございました。私はxlsコードを作成せず、ちょっと継承しましたが、現時点では変更できませんので、純粋な混乱のほぼ4k行があります。 – Sasha

+0

混乱を楽しんでください。 :)あなたは、あなたのXSLテンプレートを書き換えるために、XSLテンプレートを書くことができます。ちょうどアイディアとして。あなたの入力XSLが一種の反復的なものであれば、それはそれを掃除する一つの方法です。 – Tomalak

関連する問題