Xml 如何在xslt定义中避开花括号

Xml 如何在xslt定义中避开花括号,xml,xslt,Xml,Xslt,我有一个类似xml的 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true&quo

我有一个类似xml的

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="Error"
      internalLogFile="internal-nlog.txt">
  <targets async="true">
    <target xsi:type="Null" name="blackhole" />
  </targets>
  <rules>
    <logger name="*" minlevel="Error" writeTo="exceptions"/>
    <logger name="Microsoft.AspNetCore.*" minlevel="Trace" writeTo="blackhole" final="true"/>
  </rules>
</nlog>

我想插入

<target xsi:type="Bugsnag" name="bugsnag" apikey="xxx" AppType="${app}" ReleaseStage="Development" />

所以它最终看起来像

我像这样尝试了XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/t:nlog/t:targets">
        <xsl:copy>
            <xsl:copy-of select="@*|node()" />
            <target xsi:type="Bugsnag" name="bugsnag" apikey="xxx" AppType="$\{app\}" ReleaseStage="Development" />
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>



但他们两个都没有工作。第一个错误是输入字符串无效,字母插入的是
'app'
,而不是
${app}

您可以使用双括号,或者使用xsl:attribute元素添加属性

示例(在AppType2和AppType3属性中):


${app}
生成:

<target xmlns="" xsi:type="Bugsnag" name="bugsnag" apikey="xxx" AppType="$" ReleaseStage="Development" AppType2="${app}" AppType3="${app}"/></targets>

您可以使用双大括号,或者使用xsl:attribute元素添加属性

示例(在AppType2和AppType3属性中):


${app}
生成:

<target xmlns="" xsi:type="Bugsnag" name="bugsnag" apikey="xxx" AppType="$" ReleaseStage="Development" AppType2="${app}" AppType3="${app}"/></targets>

<target xmlns="" xsi:type="Bugsnag" name="bugsnag" apikey="xxx" AppType="$" ReleaseStage="Development" AppType2="${app}" AppType3="${app}"/></targets>