добавление атрибута к узлу

Я пытаюсь добавить атрибут к узлу, если значение дочернего узла равно некоторой строке.

У меня есть файл main.xml

<Employees>    
 <Employee>     
 <countryid>32</countryid>
 <id name="id">1</id>
 <firstname >ABC</firstname>
 <lastname >XYZ</lastname>     
 </Employee>
 <Employee>     
 <countryid>100</countryid>
 <id name="id">2</id>
 <firstname >ddd</firstname>
 <lastname >ggg</lastname>     
 </Employee>
 </Employees>    

Так, допустим, если id страны равен 32, то он должен добавить атрибут country=32 к узлу Employee. Вывод должен быть следующим :

output.xml

 <Employees>    
 <Employee countryid="32">     
 <countryid>32</countryid>
 <id name="id">1</id>
 <firstname >ABC</firstname>
 <lastname >XYZ</lastname>     
 </Employee>
 <Employee>     
 <countryid>100</countryid>
 <id name="id">2</id>
 <firstname >ddd</firstname>
 <lastname >ggg</lastname>     
 </Employee>
 </Employees>    

Я использую следующий скрипт, но получаю ошибку, что узел атрибутов не может быть создан после дочерних элементов содержащего элемента:

Transform.xsl


<xsl:template match="/">        
    <xsl:apply-templates />
</xsl:template>

<xsl:template match="Employees/Employee/countryid[.=32']">
  <xsl:attribute name="countryid">32</xsl:attribute>
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>

Любая помощь будет оценена по достоинству. Также можно ли передавать countryid как значения, разделенные запятыми, чтобы я мог передать 32,100 и тогда он должен добавить атрибут ко всем соответствующим узлам.

Спасибо.

9
задан atif 28 January 2011 в 04:29
поделиться