У меня есть XML-файл, который имеет атрибут @url
для элемента <matimage>
. В настоящее время существует определенное имя изображения в атрибуте @url
, скажем triangle.png
. Я хочу применить XSLT и изменить этот URL так, чтобы это было что-то вроде assets/images/triangle.png
.Изменение атрибутов XML-документа с использованием XSLT
Я попробовал следующий XSLT:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" />
<!-- Copy everything -->
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="@type[parent::matimage]">
<xsl:attribute name="uri">
<xsl:value-of select="NEW_VALUE"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
В качестве первого шага я попытался заменить старое значение на новое значение, но это не похоже на работу. Скажите, как добавить или добавить новое значение к существующему значению атрибута @url
.
Вот пример XML:
<material>
<matimage url="triangle.png">
Some text
</matimage>
</material>
Желаемый результат:
<material>
<matimage url="assets/images/triangle.png">
Some text
</matimage>
</material>
Я хотел бы добавить предложение здесь. Использование '' в качестве родителя оператора 'concat' не работает. Я использовал этот элемент '', и он выглядел отлично. –
jaykumarark
Спасибо за исправление. просто копирует узел атрибута как есть (с включенным значением). Я тестировал таблицу стилей с неправильным XML-файлом, чтобы получить правильный результат. Маленький lapsus ... извините и спасибо –