Нужно XLST, чтобы изменить значение узла на основе другого узла - PullRequest
1 голос
/ 29 апреля 2011

Мне нужен XSLT, чтобы изменить значение Enabled на False, если Name равно XYZ в приведенном ниже XML-файле.

Мой XML-файл:

<MyRoot>
    <Category>
       <Name>XYZ</Name>
       <Location>mylocation</Location>
       <Enabled>True</Enabled>
    </Category>
    <Category>
       <Name>ABC</Name>
       <Location>mylocation1</Location>
       <Enabled>True</Enabled>
    </Category>
    <Category>
       <Name>DEF</Name>
       <Location>mylocation2</Location>
       <Enabled>True</Enabled>
    </Category>
</MyRoot>

1 Ответ

1 голос
/ 29 апреля 2011

Вот как я бы с этим справился:

XSLT

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

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

  <xsl:template match="Category[Name='ABC']/Enabled">
    <Enabled>False</Enabled>
  </xsl:template>

</xsl:stylesheet>

выход

<MyRoot>
   <Category>
      <Name>XYZ</Name>
      <Location>mylocation</Location>
      <Enabled>False</Enabled>
   </Category>
   <Category>
      <Name>ABC</Name>
      <Location>mylocation1</Location>
      <Enabled>True</Enabled>
   </Category>
   <Category>
      <Name>DEF</Name>
      <Location>mylocation2</Location>
      <Enabled>True</Enabled>
   </Category>
</MyRoot>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...