Я хочу фильтровать XML. Те, что я получаю, довольно большие, для меня много бесполезной информации.XSLT-фильтр XML, за исключением элементов certen
Мне просто нужно несколько элементов с текстом из этих файлов. Это почти то, на что это похоже.
<root>
<customerinfo1>...</customerinfo1>
<customerinfo2>...</customerinfo2>
<productinfo>
<productinfo1>...</productinfo1>
<productinfo2...></productinfo2>
<textarea>
<other1>...</other1>
<other2>...</other2>
<text1>abc</text1>
<text2>cab</text2>
<text3>bca</text3>
<other3>...</other3>
</textarea>
</productinfo>
</root>
Это почти то, на что оно похоже. Не все элементы имеют текст. Я хочу взять элементы с текстом в них и добавить их к одному элементу. Я хочу что-то подобное этому.
<placement>
<text>Text from text1 text2 or text3</text>
</placement>
Какой XSLT я сделал и что он сделал. Так что мне удается сортировать его только с текстовыми элементами, но не группировать их по одному элементу. И большая проблема в том, что весь текст исчезает с <text>No text here</text>
, и я получаю элементы, где пусто от начала в XML.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="*[starts-with(name(),'text')]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()|@*">
<placement>
<text>
<xsl:apply-templates/>
</text>
</placement>
</xsl:template>
</xsl:stylesheet>
Вы можете точно показать, что результат должен выглядеть при обработке сводились пример источника, который вы дал в верхней части вашего вопроса? –
Вы хотите сопоставить элемент 'root' с новым элементом' placement'? Или вы хотите сопоставить каждый элемент 'textarea' с новым элементом' placement'? И ваш желаемый выходной образец должен отображать данные из входного образца, который вы хотите вывести, в противном случае сложно сказать, чего вы хотите. Что касается вашего кода, если вы удалите первый шаблон и замените второй 'match = 'node() | @ *" 'на' match = "root" 'и' xsl: apply-templates /> 'в нем с'
Okej, позвольте мне уточнить. Я хочу, чтобы 'textarea' чтобы стать 'placement' и' text1, text2, text3' стать одним ' Текст из text1, 2 и 3 здесь ' –
user2272544