我与萨克森9.2他xslt文件存在问题。 (XSLT文件工作在XSLT 1.0与包含在C#中的发动机,但它是太慢)与萨克森9.2兼容性问题他他
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>
但是,每当我使用@ComplementCodeRouteur的Magasin或Client内部的属性时,它都不会返回任何内容。 Magasins中唯一的工作属性是Id = {@ Id}。 有人知道为什么以及如何解决它? 我不够好找到它不工作的原因。