Как вывести элементы XML в предопределенном порядке?Возможное решение стиля массива было бы замечательно, если бы было что-то вроде этого.
У меня есть много XML-файлов с разными именами для элементов, которые будут преобразованы одновременно, но, как вы можете видеть, они все будутповторил то же самое.Моя проблема в том, что их порядок неправильный, и я хочу, чтобы они были в том же порядке, как
id, name, description, price, image, url, category, category_id, shopid
Это мой XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="identity.xsl"/>
<xsl:template match="/*">
<products>
<xsl:for-each select="file">
<xsl:apply-templates
select="document(.)/*//product">
<xsl:with-param name="file" select="."/>
</xsl:apply-templates>
</xsl:for-each>
</products>
</xsl:template>
<xsl:template match="product">
<xsl:param name="file"/>
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:if test="not(id)">
<id><xsl:value-of select="@id"/></id>
</xsl:if>
<xsl:apply-templates select="node()"/>
<catid><xsl:value-of select="category/@id"/></catid>
<shopid><xsl:value-of select="$file"/></shopid>
</xsl:copy>
</xsl:template>
<xsl:template match="title">
<name>
<xsl:apply-templates select="node() | @*" />
</name>
</xsl:template>
<xsl:template match="price_with_vat">
<price>
<xsl:apply-templates select="node() | @*" />
</price>
</xsl:template>
<xsl:template match="link">
<url>
<xsl:apply-templates select="node() | @*" />
</url>
</xsl:template>
<xsl:template match="category/@id
| product/@id | availability | manufacturer | shipping | sku | ssku | thumbnail | stock | weight | mpn | instock"/>
</xsl:stylesheet>