есть ли способ конвертировать все атрибуты узлов в дочерние узлы с использованием XSLT 1.0
? Он должен работать безупречно с PHP xsltProcessor
. Атрибуты должны быть удалены (если возможно).
Пример ввода:
<root aaa="111" bbb="222" ccc="333"> <bob ddd="444" /> <data eee="555"> <steve>bar1</steve> <john>bar2</john> <peter fff="666">bar3</peter> </data> <greg ggg="777" /> </root>
Желаемый результат:
<root> <aaa>111</aaa> <bbb>222</bbb> <ccc>333</ccc> <bob> <ddd>444</ddd> </bob> <data> <eee>555</eee> <steve>bar1</steve> <john>bar2</john> <peter> <fff>666</fff> bar3 </peter> </data> <greg> <ggg>777</ggg> </greg> </root>
Спасибо!
Протестировано на Oxygen / XML с использованием Saxon6.5:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="@*"> <xsl:element name="{name()}"><xsl:value-of select="."/></xsl:element> </xsl:template> </xsl:stylesheet>
Это основано на использовании шаблона идентификации для узлов элемента и шаблона, который преобразует атрибуты в элементы.