Добавление дочернего элемента в список в xml с использованием xslt не работает - PullRequest
1 голос
/ 19 июня 2020

У меня есть источник 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>

И я хочу добавить элемент в список <targets>. Я пытаюсь использовать 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/targets">
        <xsl:copy>
            <xsl:copy-of select="@*" />
            <target xsi:type="File" name="general"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Однако я просто получаю преобразование идентификатора, и новый элемент не добавляется в список.

1 Ответ

1 голос
/ 19 июня 2020

Элемент targets принадлежит пространству имен t, поэтому запрос должен быть /t:nlog/t:targets

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...