В XSLT, как вставить строку в тег HTML

Я хочу добавить «отключить» в тег HTML как:

<xsl:template match="item">
  <td>
  <input ng-model="{$ng-model}" class="form-control" disabled style="width: 10em"/>
  </td>
</xsl:tempalte>

Однако саксон-НЕ10 жалуется

  SXXP0003  Error reported by XML parser: Attribute name "disabled" associated with an
  element type "input" must be followed by the ' = ' character.

Итак, мне удалось сделать это как:

<xsl:template match="item">
  <td colspan="@colspan">
  <xsl:text disable-output-escaping="yes">&lt;input ng-model="{$ng-model}" class="form-control" disabled style="width: 10em" &gt;</xsl:text>
  </td>
</xsl:tempalte>

Который отлично работает, пока я не попытаюсь зафиксировать вывод правила шаблона в переменную как:

<xsl:variable name="output>
  <xsl:apply-templates select="item"/>
</xsl:variable>

<xsl:copy-of select="$output"/>
<xsl:if test="$output = ''">
<td></td>
</xsl:if>

Здесь xsl:copy-of копирует &it; как есть на выходе, что нежелательно. Мне нужно использовать переменную для захвата вывода правила шаблона, потому что правило может ничего не сопоставлять и давать пустую строку. В этом случае мне все равно нужно добавить <td></td> в выходной текст. Поэтому дилемма здесь заключается в том, что в выходных данных шаблонного правила есть как <, так и &it;. Если я играю с отключением выхода-экранирования, один из них не нужен. Любое решение моей проблемы?


person Max Li    schedule 03.11.2020    source источник
comment
это мой ожидаемый результат <input ng-model="{$ng-model}" class="form-control" disabled style="width: 10em"/>; Он отлично работает в выходном html.   -  person Max Li    schedule 03.11.2020
comment
disable style — это не имя атрибута, а style. disable представляют себя в выводе. Он помечает вход как отключенный.   -  person Max Li    schedule 03.11.2020


Ответы (1)


В синтаксисе HTML атрибуты не могут иметь значения, но в синтаксисе XML/XSLT они всегда имеют одно значение, поэтому используйте disabled="disabled", и пока эти атрибуты HTML, как известно, принадлежат элементам HTML, процессор при использовании метода xsl:output html должен сериализовать их соответствующим образом. .

person Martin Honnen    schedule 03.11.2020