Я новичок в использовании XSL . Я пытаюсь преобразовать файл XML в другой файл XML с другой структурой, используя XSL. Секция input в XML выглядит следующим образом:
<tag>
<Keyword>Event: Some Text</Keyword>
<Keyword>Group: Some Text</Keyword>
<Keyword>Other: Some Text</Keyword>
</tag>
Я бы хотел, чтобы желаемый вывод был:
<tag>
<event> Some Text </event>
<group> Some Text </group>
<other> Some Text </other>
</tag>
Мой текущий XSL файл:
<xsl:for-each select="tag">
<xsl:if test="starts-with(Keyword, 'Event: ')">
<event>
<xsl:value-of select="substring-after(Keyword, 'Event: ')"/>
</event>
</xsl:if>
<xsl:if test="starts-with(Keyword, 'Group: ')">
<group>
<xsl:value-of select="substring-after(Keyword, 'Group: ')"/>
</group>
</xsl:if>
<xsl:if test="starts-with(Keyword, 'Other: ')">
<other>
<xsl:value-of select="substring-after(Keyword, 'Other: ')"/>
</other>
</xsl:if>
</xsl:for-each>
Текущий вывод показывает только узел события и не отображает остальные узлы:
<tag>
<event> Some Text </event>
</tag>
Я попытался переключить раздел 'group' на раздел 'event' в XSL, однако все дочерние узлы не отображаются, вероятно, из-за упорядочения узлов ключевых слов во входном XML. Так как же я могу прочитать все узлы ключевых слов и преобразовать их в соответствующие новые узлы для отображения?