Удалить раздел на основе атрибута с помощью XSLT - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь удалить раздел на основе атрибута, выбранного в файле xml. Я пробовал много мест, но не смог найти решение для этого. Вот моя проблема:

В моем файле xml есть 2 раздела, и я пытаюсь отфильтровать один раздел на основе атрибута "name", используя XSLT.

Текущий XML

   <BindingSection>
      <Bindings name="temp">
        <add type="type" assembly="test Assembly"  dst="destination" />
      </Bindings>

      <Bindings name="final">
       <add type="type" assembly="test Assembly"  dst="destination" />
      </Bindings>
 </BindingSection>

Если я выберу «temp», то раздел «Привязки» с «final» должен быть удален из файла XML, и результат должен быть таким, как показано ниже.

Желаемый XML

 <BindingSection>
      <Bindings name="temp">
        <add type="type" assembly="test Assembly"  dst="destination" />
      </Bindings>
 </BindingSection>

Заранее спасибо.

1 Ответ

0 голосов
/ 21 апреля 2020

Обновлен ответ. Надеюсь, я полностью понял вашу просьбу. Оставьте раздел, соответствующий параметру, который вы объявили в XML.

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:param name="var">temp</xsl:param>

<xsl:template match="Bindings">
  <xsl:if test="@name=$var">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:if>
</xsl:template>

</xsl:stylesheet>

http://xsltransform.net/nbssZvq

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