Я просто написал XSLT, который сначала не работал.
Мне пришлось переименовать всех детей <Recordset>
в <C>
:
<?xml version="1.0" encoding="utf-8"?>
<Record>
<Recordset>
<company>102</company>
<store>1801</store>
....
</Recordset>
<Recordset>
....
</Recordset>
</Record>
Я использовал следующий XSLT:
<xsl:template match="Record/Recordset/child::*">
<xsl:element name="C">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
Он работает и переименовывает всех дочерних элементов <Recordset>
в <C>
.
Но сначала мой матч в шаблоне выглядел так:
<xsl:template match="Record/Recordset/child::node()">
Моя идея заключалась в том, что каждый дочерний элемент <Recordset>
является node, поэтому node()
будет уместным.
Он тоже работал, но для каждого ребенка добавлен дополнительный <C/>
.
Какая разница между child::node()
и child::*
?