Я пытаюсь добавить атрибут к узлу, если значение дочернего узла равно некоторой строке.
У меня есть файл 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 и тогда он должен добавить атрибут ко всем соответствующим узлам.
Спасибо.