Атрибут XSLT не добавляется - PullRequest
1 голос
/ 29 марта 2010

Попытка пометить радиовходы как выбранные с помощью XSLT 1.0 с использованием приведенного ниже кода xslt, но это не дает желаемого результата

ожидаемый результат

<input type="radio" value="available" title="email" selected="selected" />

Фактическая выработка

  <input type="radio" value="available" title="email" selected />

Кто-нибудь есть идеи, почему бы не, пожалуйста?

XSLT

<xsl:variable name="selected">selected</xsl:variable>
  <xsl:for-each select="item">
   <tr>

     <td><xsl:value-of select="title" /></td>

     <td>
       <input type="radio" value="available" >
       <xsl:attribute name="name">
        <xsl:value-of select="title" />
       </xsl:attribute>
       <xsl:if test="category='available'">
         <xsl:attribute name="selected">
          <xsl:value-of select="$selected"/>
         </xsl:attribute>
       </xsl:if>
       </input>
     </td>

     <td>
       <input type="radio" value="unavailable" >
       <xsl:attribute name="name">
        <xsl:value-of select="title" />
       </xsl:attribute>
       <xsl:if test="category='unavailable'">
        <xsl:attribute name="selected">
         <xsl:value-of select="$selected"/>
        </xsl:attribute>
       </xsl:if>
       </input>
     </td>


     <td>
       <input type="radio" value="warning" >

       <xsl:if test="category='warning'">
        <xsl:attribute name="selected">
            <xsl:value-of select="$selected"/>
           </xsl:attribute>
           <xsl:attribute name="name">
        <xsl:value-of select="title" />
       </xsl:attribute>
       </xsl:if>
       </input>
     </td>

   </tr>

   </xsl:for-each>

Ответы [ 2 ]

2 голосов
/ 29 марта 2010

Это связано с вашим режимом вывода. Вы указали вашему процессору XSLT выводить HTML (а не XML)? Если это так, выходной сериализатор адаптирован для адаптации к особенностям HTML; так что, например, он генерирует <br> вместо <br/> и может пропустить содержимое атрибута, если оно идентично имени атрибута.

Это не должно быть проблемой; это законный HTML, кстати.

Для более подробной информации; В спецификации есть раздел , что именно должен делать режим вывода html . Среди всего прочего говорится ...

Метод вывода html должен выводить логические атрибуты (то есть атрибуты с единственным допустимым значением, равным имени атрибута) в минимизированной форме. Например, начальный тег, записанный в таблице стилей как

<OPTION selected="selected">

должно быть выведено как

<OPTION selected>
0 голосов
/ 29 марта 2010

Попробуйте это:

<xsl:variable name="selected" select="selected"/>

http://www.w3schools.com/xsl/el_variable.asp

...