У меня есть XML, и мне нужно применить 2 преобразования ко всем узлам.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a> V1 </a>
<b> noo </b>
<a> v2</a>
<a> v3</a>
<b>noo</b>
<a> v4</a>
<a> v5</a>
<a> v6</a>
</root>
Эти 2 преобразования должны быть выполнены последовательно: сначала все "first_transformation", затем все "second_transformaiton" .
Я использовал этот xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method='xml' version='1.0' encoding="UTF-8" indent="yes"/>
<xsl:template match="/*">
<xsl:apply-templates mode="t1"/>
<xsl:apply-templates mode="t2"/>
</xsl:template>
<xsl:template match="//a" mode="t1" >
<xsl:element name="first_transformation">
<xsl:value-of select="current()"/>
</xsl:element>
</xsl:template>
<xsl:template match="//a" mode="t2" >
<xsl:element name="second_transformation">
<xsl:value-of select="current()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Как видите, я использую два шаблона для каждого преобразования, и я называю их в "основном" шаблоне.
Мой результат:
<?xml version="1.0" encoding="UTF-8"?>
<first_transformation> V1 </first_transformation>
noo
<first_transformation> v2</first_transformation>
<first_transformation> v3</first_transformation>
noo
<first_transformation> v4</first_transformation>
<first_transformation> v5</first_transformation>
<first_transformation> v6</first_transformation>
<second_transformation> V1 </second_transformation>
noo
<second_transformation> v2</second_transformation>
<second_transformation> v3</second_transformation>
noo
<second_transformation> v4</second_transformation>
<second_transformation> v5</second_transformation>
<second_transformation> v6</second_transformation>
Как вы видите, у меня есть эти значения "noo" из узлов b, которые хранят копии.
Вы знаете, как я могу заставить их исчезнуть из моего выхода? Спасибо!