Невозможно использовать xsl: переменную внутри выходного текста

#xml #xslt

#xml #xslt

Вопрос:

Мой входной XML:

       <widget class="QPushButton" name="pushButton_4">
       <property name="whatsThis">
        <string extracomment="save()"/>
       </property>
       <property name="text">
        <string>保存</string>
       </property>
      </widget>
  

Мой xslt:

   <xsl:variable name="ButtonAction"
                select="property[@name='whatsThis']/string/@extracomment"/>

  <xsl:template name="Button" match="widget[@class='QPushButton']">
    <button ng-click="$ButtonAction" class="btn btn-default">
      <xsl:value-of select="property[@name='text']/string" />
    </button>
  </xsl:template>

  

Я хочу, чтобы результат был:

 <button ng-click="save()" class="btn btn-default">保存</button>
  

Однако то, что я на самом деле получаю, это:

 <button ng-click="$ButtonAction" class="btn btn-default">保存</button>
  

Как я могу поместить текст свойства из входного xml в «» внутри вывода? Я быстро попробовал xsl:text, но, похоже, это не работает. Я использую saxon-HE10. Кажется, что процессор не обрабатывает » » как обычный текст для вывода?

Ответ №1:

В терминах XSLT вам нужен шаблон значения атрибута, то есть фигурные скобки <button ng-click="{$ButtonAction}" class="btn btn-default"> , чтобы заполнить значение атрибута результатом вычисления выражения в фигурных скобках.