/ / Добавяне на атрибут към всички дъщерни елементи с помощта на apply-templates - xml, xslt

Добавете атрибут към всички подчинени елементи, използващи приложни шаблони - xml, xslt

Опитвам се да добавя атрибут web към всички дъщерни елементи на елемента web с помощта на apply-template.

източник xml

<p></p>
<tabel>
<tr>
<td>
<web>
<p></p>
<p></p>
</web>
</td>
</tr>
<tr>
<td>
<web>
<p></p>
<ul>
<li></li>
<li></li>
</ul>
</web>
</td>
</tr>
</tabel>

целеви xml

<p></p>
<tabel>
<tr>
<td>
<p class="web"></p>
<p class="web"></p>
</td>
</tr>
<tr>
<td>
<p class="web"></p>
<ul class="web">
<li></li>
<li></li>
</ul>
</td>
</tr>
</tabel>

моя xsl

<xsl:template match="p">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="web">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ul">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>

Има ли възможност за прилагане на шаблони и добавяне на атрибут web към всички дъщерни елементи на мрежата? Някой има ли идея, как да стане това?

Отговори:

0 за отговор № 1

Като се има предвид a добре оформени вход като:

XML

<html>
<p></p>
<tabel>
<tr>
<td>
<web>
<p></p>
<p></p>
</web>
</td>
</tr>
<tr>
<td>
<web>
<p></p>
<ul>
<li></li>
<li></li>
</ul>
</web>
</td>
</tr>
</tabel>
</html>

следващата стилова таблица:

XSLT 1.0

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="web">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="web/*">
<xsl:copy>
<xsl:attribute name="class">web</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

Ще се върне:

<html>
<p></p>
<tabel>
<tr>
<td>
<p class="web"></p>
<p class="web"></p>
</td>
</tr>
<tr>
<td>
<p class="web"></p>
<ul class="web">
<li></li>
<li></li>
</ul>
</td>
</tr>
</tabel>
</html>

Забележи, че tabel не е валиден HTML елемент.