У меня проблема с файлом xslt в saxon 9.2 he. (Файл xslt работает в xslt 1.0 с движком, включенным в c #, но он слишком медленный)
Файл Xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Magasins">
<Magasins xmlns:xi="http://www.w3.org/2001/XInclude" Id="{@Id}">
<xsl:apply-templates/>
</Magasins>
</xsl:template>
<xsl:key name="kClientGroup" match="Client"
use="concat(../@CodeRouteur, @ComplementCodeRouteur)"
/>
<xsl:template match="Magasin">
<xsl:apply-templates select="Client[generate-id()
=
generate-id(key('kClientGroup',
concat(../@CodeRouteur, @ComplementCodeRouteur))[1])]"
/>
</xsl:template>
<xsl:template match="Client">
<Magasin
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
CodeRouteur="{concat(../@CodeRouteur,@ComplementCodeRouteur)}">
<xsl:copy-of select="../@*[name() != 'CodeRouteur']"/>
<xsl:apply-templates select="key('kClientGroup',
concat(../@CodeRouteur,@ComplementCodeRouteur))" mode="copy"/>
</Magasin>
</xsl:template>
<xsl:template match="Client" mode="copy">
<xsl:copy>
<xsl:copy-of select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
исходный файл XML
<?xml version="1.0" encoding="UTF-8"?>
<Magasins>
<Magasin Nom="Name" CodeRouteur="TE">
<Client IdClient="1" ComplementCodeRouteur="A" Name="YYY"><Elem /></Client>
<Client IdClient="2" ComplementCodeRouteur="B" Name="XXX"><Elem /></Client>
</Magasin>
<Magasin Nom="Name2" CodeRouteur="TE">
<Client IdClient="3" ComplementCodeRouteur="A" Name="YYY"><Elem /></Client>
</Magasin>
</Magasins>
Требуемый выходной файл
<?xml version="1.0" encoding="UTF-8"?>
<Magasins>
<Magasin Nom="Name" CodeRouteur="TEA">
<Client IdClient="1" ComplementCodeRouteur="A" Name="YYY"><Elem /></Client>
</Magasin>
<Magasin Nom="Name" CodeRouteur="TEB">
<Client IdClient="2" ComplementCodeRouteur="B" Name="XXX"><Elem /></Client>
</Magasin>
<Magasin Nom="Name2" CodeRouteur="TEA">
<Client IdClient="3" ComplementCodeRouteur="A" Name="YYY"><Elem /></Client>
</Magasin>
</Magasins>
Но каждый раз, когда я использую атрибуты внутри Magasin или Client, такие как @ComplementCodeRouteur, он ничего не возвращает. Единственный работающий атрибут - это Id = {@ Id} в Magasins.
Кто-нибудь знает почему и как это решить?
Я не достаточно хорош, чтобы понять, почему это не работает.