Я хочу добавить узел в документ XML с помощью xslt.Я использую msxsl в качестве процессора.XML-документ имеет следующую структуру:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PlatformShortName>SDK_NAME</PlatformShortName>
</PropertyGroup>
</Project>
Правило XSL вставляет нужный узел:
( Редактировать : добавлено пространство имен XSL)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ms="http://schemas.microsoft.com/developer/msbuild/2003"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
exclude-result-prefixes="ms">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="ms:Project/ms:PropertyGroup">
<PropertyGroup>
<xsl:element name="PlatformInstructionSet">AMRv7</xsl:element>
<xsl:apply-templates/>
</PropertyGroup>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
Но результат переместил атрибут пространства имен с Project
на PropertyGroup
.
( Редактировать : Я хочу, чтобы Project
и PropertyGroup
были идентичны вводу.)
<Project>
<PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PlatformInstructionSet>AMRv7</PlatformInstructionSet>
<PlatformShortName>SDK_NAME</PlatformShortName>
</PropertyGroup>
</Project>
Необходимо избегать этого.Как я могу только добавить узел без изменения структуры?Кроме того, я хотел бы вставить новый узел, как и другие узлы.