xsl: мне нужно разделить и получить параметр позиции X, атрибут @class, 2-й параметр:
Входной XML:
<root>
<div class="zone zona_central ui-sortable">
<div class="region contenedor_3col ui-sortable">
<div style="position: relative; left: 0px; top: 0px;" class="destacado">
<p class="id_contenido">567662</p>
<p class="tipo_contenido">destacado</p>
<p class="titulo">destacado: Home Actualidad ES</p>
</div>
</div>
</div>
</root>
выходной XML, который мне НУЖЕН:
<zone type="zona_central">
<region type="contenedor_3col">
<destacado>
<id_contenido>567662</id_contenido>
<tipo_contenido>destacado</tipo_contenido>
<titulo>destacado: Home Actualidad ES</titulo>
</destacado>
</region>
</zone>
у меня есть этот xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/root">
<xsl:for-each select="div[contains(@class, 'zone')]">
<zone style="">
<xsl:for-each select="div[contains(@class, 'region')]">
<region style="">
<xsl:for-each select="div[contains(@class, 'destacado')]">
<destacado>
<id_contenido><xsl:value-of select="p[@class='id_contenido']"/></id_contenido>
<tipo_contenido><xsl:value-of select="p[@class='tipo_contenido']"/></tipo_contenido>
<titulo><xsl:value-of select="p[@class='titulo']"/></titulo>
</destacado>
</xsl:for-each>
</region>
</xsl:for-each>
</zone>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
выходной XML, который у меня есть с предыдущим XSL, я не знаю, как я могу получить второй параметр атрибута CLASS: (*
<zone type="">
<region type="">
<destacado>
<id_contenido>567662</id_contenido>
<tipo_contenido>destacado</tipo_contenido>
<titulo>destacado: Home Actualidad ES</titulo>
</destacado>
</region>
</zone>
Решение:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/root">
<xsl:for-each select="div[contains(@class, 'zone')]">
<xsl:element name="zone">
<xsl:attribute name="type">
<xsl:value-of select="substring-before(substring-after(@class, ' '), ' ')"/>
</xsl:attribute>
<xsl:for-each select="div[contains(@class, 'region')]">
<xsl:element name="region">
<xsl:attribute name="type">
<xsl:value-of select="substring-before(substring-after(@class, ' '), ' ')"/>
</xsl:attribute>
<xsl:for-each select="div[contains(@class, 'destacado')]">
<destacado>
<id_contenido><xsl:value-of select="p[@class='id_contenido']"/></id_contenido>
<tipo_contenido><xsl:value-of select="p[@class='tipo_contenido']"/></tipo_contenido>
<titulo><xsl:value-of select="p[@class='titulo']"/></titulo>
</destacado>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>