#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">
, чтобы заполнить значение атрибута результатом вычисления выражения в фигурных скобках.