Вот пример: xml
<root>
<type1></type1>
<type2></type2>
<type3>
<child>3</child>
</type3>
<type4></type4>
<type5></type5>
<type6></type6>
<type7>
<child>7</child>
</type7>
</root>
Я хочу удалить все элементы, кроме type3 и type7, чтобы это выглядело так:
<root>
<type3>
<child>3</child>
</type3>
<type7>
<child>7</child>
</type7>
</root>
Я новичок в xsl, и это то, что я пытался
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/" >
<xsl:apply-templates/>
</xsl:template>
<xsl:template name="Type3">
<xsl:copy-of select="*"/>
</xsl:template>
<xsl:template name="Type7">
<xsl:copy-of select="*"/>
</xsl:template>
</xsl:stylesheet>
Это, однако, просто выводит внутренние 3 и 7 из дочерних узлов. Что не так с моим мышлением здесь?
Обновление:
Хотя приведенный ниже ответ сработал для этого случая, сейчас я застрял в этом вопросе. У меня есть xml
<root>
<type1></type1>
<type2>
<text>
This is a test
</text>
</type2>
<type3>
<child>3</child>
</type3>
<type4></type4>
<type5></type5>
<type6></type6>
<type7>
<child>7</child>
</type7>
</root>
XSl предоставил выходы:
<root>
This is a test
<type3>
<child>3></child>
</type3>
<type7>
<child>7</child>
</type7>
</root>
Как убрать текст "это тест" из отображения в окончательном XML, не затрагивая внутренние данные узлов, которые я хочу сохранить?