Я изменяю свой XML-документ с помощью xsl, и у меня возникают проблемы с разделением содержимого узла. Вот пример:
Входной документ XML
<root>
<exampleNode>text 1 <insideNodeA/> text 2 <insideNodeB/> text 3</exampleNode>
<exampleNode>text 4<insideNodeB/></exampleNode>
</root>
Короче говоря, у меня есть узел, в котором я могу иметь некоторый текст, и различные узлы (илинет) в любом порядке. Нет никакого способа узнать заранее, является ли содержимое только текстом, текстом и одним из узлов, только одним из узлов, текстом и обоими узлами в любом порядке и т. Д.
Вот что мне нужно иметь:
Требуется вывод XML
<root>
<unwrapped>
<txt>text 1</txt>
<reworkedNodeA/>
<txt>text 2</txt>
<reworkedNodeB/>
<txt>text 3</txt>
</unwrapped>
<unwrapped>
<txt>text 4</txt>
<reworkedNodeB/>
</unwrapped>
</root>
И, конечно, я переделываю внутренние узлы и B.
Мой XSL-код
<xsl:template match="exampleNodee">
<xsl:if test="count(*)>0">
<xsl:element name="unwrapped">
<xsl:element name="txt"><xsl:value-of select="text()"/></xsl:element>
<xsl:apply-templates select="child::node()"/>
</xsl:element>
</xsl:if>
</xsl:template>
Проблема в том, что этот код создает только один элемент "txt" с первым текстом "exampleNode", а затем применяет шаблоны для каждого дочернего узла.
Какя могу получить содержимое «exampleNode» в правильном порядке и применить правильные шаблоны для получения желаемого результата?