У меня есть XML, где текстовый узел со значением «нулевой тег» появляется (случайным образом) в разных местах файла.
Мой вопрос состоит в том, как заменить текст другим текстом, где имя элемента (и родительского узла) неизвестно . Я уже создал файл XSLT, который выглядит немного громоздким, и я не уверен в его эффективности во время преобразования.
Это пример теста XML, который я создал:
<root>
<sub_root>abc</sub_root>
<sub_root>
<child>test value</child>
<child2>test value</child2>
<sub_child>
<node1>data</node1>
<node2>data2</node2>
<node3>
<grand_child>test value</grand_child>
</node3>
<node4>test value</node4>
</sub_child>
</sub_root>
</root>
Это XSLT:
<xsl:template match="@*|*|text()">
<xsl:copy>
<xsl:choose>
<xsl:when test="text()='test value'">
<xsl:apply-templates select="@*|*"/>
<xsl:text>replaced</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="@*|*|text()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
Это желаемый вывод, я пытаюсь сгенерировать:
<root>
<sub_root>abc</sub_root>
<sub_root>
<child>replaced</child>
<child2>replaced</child2>
<sub_child>
<node1>data</node1>
<node2>data2</node2>
<node3>
<grand_child>replaced</grand_child>
</node3>
<node4>replaced</node4>
</sub_child>
</sub_root>
</root>
может ли этот код быть написан еще лучше (в любых терминах)? Или это мой код достаточно лучше?