Привет, я хочу включить элемент в шаблон на основе атрибутов, я использую XSL, который используется для изменения старого значения атрибута на новое значение.
Input HTML:
<section>
<p class="p heading">Heading</p>
<p class="normal">Text</p>
</section>
XSL У меня есть:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
xmlns:map="http://www.w3.org/2005/xpath-functions/map"
xmlns:array="http://www.w3.org/2005/xpath-functions/array"
exclude-result-prefixes="#all"
version="3.0">
<xsl:param name="class-map">
<name>
<old>heading</old>
<new>Headings</new>
</name>
<name>
<old>normal</old>
<new>Actual</new>
</name>
</xsl:param>
<xsl:key name="class-map" match="name/new" use="../old"/>
<xsl:template match="p/@class[key('class-map', tokenize(.), $class-map)]">
<xsl:attribute name="style">
<xsl:attribute name="{name()}" select="key('class-map', tokenize(.) , $class-map)"/>
</xsl:attribute>
<normal>
<xsl:value-of select="p"/>
</normal>
</xsl:template>
<xsl:mode on-no-match="shallow-copy"/>
</xsl:stylesheet>
Ожидаемый результат:
<section>
<p style="Headings"><normal>Heading</normal></p>
<p style="Actual"><normal>Text</normal></p>
</section>
Необходимо включить элемент normal
внутри параграфа.