Как скопировать узел из XML, не копируя дочерний узел этого узла с помощью XSLT? - PullRequest
1 голос
/ 23 июня 2010

У меня есть огромный XML, с которым мне нужно работать, но мне нужен только один из нескольких узлов в корне.Проблема в том, что в этом узле у меня есть один дочерний элемент, который нужно удалить.Кто-нибудь хочет объяснить, возможно ли это, и если да, то как это можно сделать?Это образец XML, который я получил:

    <XML>
 <Properties>
  Contend
 </Properties>
 <Events>
  Contend
 </Events>
 <Contracts>
  Contend
 </Contracts>
 <Trades>
  Contend 
 </Trades>
 <Deals>
  <Deal>
   <Edition>
    <Object>
     <Values>
      <Value>N</Value>
      <Value>N</Value>
     </Values>
    </Object>
    <Members>
     <memberValue>
      <member>template</member>
      <member>template</member>
      <member>
       <Object>
        <Flows>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
             <observations>
              Tons of Contend
             </observations>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
             <observations>
              Tons of Contend
             </observations>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
             <observations>
              Tons of Contend
             </observations>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
             <observations>
              Tons of Contend
             </observations>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
        </Flows>
       </Object>
      </member>
     </memberValue>
    </Members>
   </Edition>
  </Deal>
 </Deals>
</XML>

Мне нужно сохранить de Node, но внутри мне нужно удалить один.Обратите внимание, что узел повторяется в каждом из узлов.Все они должны быть удалены.

В конце мой XML должен выглядеть так:

    <XML>
 <Deals>
  <Deal>
   <Edition>
    <Object>
     <Values>
      <Value>N</Value>
      <Value>N</Value>
     </Values>
    </Object>
    <Members>
     <memberValue>
      <member>template</member>
      <member>template</member>
      <member>
       <Object>
        <Flows>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
         <Cupom>
          <Period>
           <Calculation>
            <Data>N</Data>
            <Data>N</Data>
            <Rate>
             <Data>N</Data>
             <Data>N</Data>
            </Rate>
           </Calculation>
          </Period>
         </Cupom>
        </Flows>
       </Object>
      </member>
     </memberValue>
    </Members>
   </Edition>
  </Deal>
 </Deals>
</XML>

Большое спасибо всем, кто может помочь.

Приветствия!

1 Ответ

1 голос
/ 23 июня 2010

Это преобразование:

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

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

 <xsl:template match="/*/*[not(self::Deals)] | Cupom/*/*/*/observations"/>
</xsl:stylesheet>

при выполнении с предоставленным XML-документом дает желаемый результат.

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