После некоторого поиска в Интернете я не могу найти ответ на этот вопрос. Мои знания и опыт новичка ..Замена некоторого значения атрибута на XSLT
Мой XML-файл:
<figuregroup id="1408-46-00-4506">
<figure id="1408-46-00-4507"
href="http://A_Internet_Location/Images/img3.tif"
height="5.098in"
width="2.798in"
align="acenter"
placement="break"
orient="port"/>
<title id="Pt2Ch3-1408-46-00-4508">fig title</title>
</figuregroup>
Я хочу XML-файл после обработки в XSLT, чтобы выглядеть примерно так:
<figuregroup id="1408-46-00-4506">
<figure id="1408-46-00-4507"
href="img3.tif"
height="5.098in"
width="2.798in"
align="acenter"
placement="break"
orient="port"/>
<title id="Pt2Ch3-1408-46-00-4508">fig title</title>
</figuregroup>
только изменение что HREF атрибута сводится к img3.tif
То, что я попытался так тариф:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="figure[contains(@href, 'http://A_Internet_Location/Images/')]">
<xsl:copy>
<xsl:choose>
<xsl:when test="contains(@href, 'http://A_Internet_Location/Images/')">
<xsl:call-template name="remove">
<xsl:with-param name="value" select="@href"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template name="remove">
<xsl:param name="value"/>
<xsl:value-of select="concat(substring-before($value, 'http://A_Internet_Location/Images/'), substring-after($value, 'http://A_Internet_Location/Images/'))"/>
</xsl:template>
Это делает все правильно, но не уменьшает атрибут href. . Все посты в справке
Есть ли какой-либо причине вы написали 'версия =«2.0»' таблицы стилей, а затем используется ' ' как функция только XSLT 2.0? Ваше введение гласит: «Определение именованного шаблона - хорошая идея, если ваша таблица стилей должна работать как с XSLT 1.0, так и с XSLT 2.0», но в этом случае я ожидаю, что опубликованный код покажет решение, которое работает в XSLT 1.0. Или, если вы действительно хотели использовать XSLT 2.0, вы могли бы просто использовать ' '. –
@MartinHonnen Это действительно ошибка, спасибо - я исправлю это, как только у меня будет время. –
@MartinHonnen Спасибо за ваш комментарий, теперь нужно исправлять. –