2015-06-20 3 views
-1
<PEE> 
<PG> 
    <EMP> 

      <Summary> 
       <EMP_ID>1</EMP_ID> 
      </Summary> 

      <PE> 
      <Operation>NONE</Operation> 
      <AN>100</AN> 
     </PE> 

      <PE> 
      <Operation>REMOVE</Operation> 
      <AN>200</AN> 
     </PE> 

     <PE> 
      <Operation>ADD</Operation> 
      <AN>300</AN> 
     </PE> 
    </EMP> 

    <EMP> 

      <Summary> 
       <EMP_ID>2</EMP_ID> 
      </Summary> 

      <PE> 
      <Operation>REMOVE</Operation> 
      <AN>400</AN> 
     </PE> 

      <PE> 
      <Operation>NONE</Operation> 
      <AN>500</AN> 
     </PE> 

     <PE> 
      <Operation>NONE</Operation> 
      <AN>600</AN> 
     </PE> 

    </EMP> 
</PG> 
</PEE> 

Здравствуйте @Michael, большое спасибо за предыдущий ответ. Я даю вам более подходящий xml, который является частью фактического xml. Правильно понимаете, что на выходе не должно быть напечатано никаких операций «СНЯТИЕ», а операция «НЕТ» будет напечатана только в том случае, если для одного и того же «EMP_ID» есть хотя бы одна дочерняя операция «ADD»/«MODIFY». Я ожидаю 2 строки в текстовом выходе, где первая строка должна быть «1 NONE 100», а вторая «1 ADD 300». Прошу вас помочь мне в этом. Благодаря!Необходимо распечатать данные только для выборочных случаев

+0

Не могли бы вы показать нам ожидаемый результат вашего примера ** как код **? –

ответ

1

Формат ожидаемого выхода не совсем ясен. Следующая таблица стилей будет копировать все, как есть, за исключением:

  1. любого account которого action является «УДАЛИТЬ»;
  2. любой account, чей action является "NONE" и не имеет брата = account, action - либо "ДОБАВИТЬ", либо "ИЗМЕНИТЬ".

XSLT-1,0

<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="*"/> 

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

<xsl:template match="account[action='REMOVE' or action='NONE' and not(../account[action='ADD' or action='MODIFY'])]"/> 

</xsl:stylesheet> 

Тестовый вход

<root> 
    <emp> 
    <summary> 
     <emp_id>1</emp_id> 
    </summary> 
    <account> 
     <action>REMOVE</action> 
     <value>11</value> 
    </account> 
    <account> 
     <action>NONE</action> 
     <value>12</value> 
    </account> 
    </emp> 
    <emp> 
    <summary> 
     <emp_id>2</emp_id> 
    </summary> 
    <account> 
     <action>REMOVE</action> 
     <value>21</value> 
    </account> 
    <account> 
     <action>NONE</action> 
     <value>23</value> 
    </account> 
    <account> 
     <action>ADD</action> 
     <value>22</value> 
    </account> 
    </emp> 
    <emp> 
    <summary> 
     <emp_id>3</emp_id> 
    </summary> 
    <account> 
     <action>REMOVE</action> 
     <value>31</value> 
    </account> 
    <account> 
     <action>NONE</action> 
     <value>32</value> 
    </account> 
    <account> 
     <action>MODIFY</action> 
     <value>33</value> 
    </account> 
    </emp> 
</root> 

Результат

<root> 
    <emp> 
     <summary> 
     <emp_id>1</emp_id> 
     </summary> 
    </emp> 
    <emp> 
     <summary> 
     <emp_id>2</emp_id> 
     </summary> 
     <account> 
     <action>NONE</action> 
     <value>23</value> 
     </account> 
     <account> 
     <action>ADD</action> 
     <value>22</value> 
     </account> 
    </emp> 
    <emp> 
     <summary> 
     <emp_id>3</emp_id> 
     </summary> 
     <account> 
     <action>NONE</action> 
     <value>32</value> 
     </account> 
     <account> 
     <action>MODIFY</action> 
     <value>33</value> 
     </account> 
    </emp> 
</root> 
+0

Привет, Майкл, большое спасибо за ваш ответ! Это было действительно полезно. Тем не менее, я мог бы дать более правильный xml для этого. Пожалуйста, помогите мне за то же самое. – amit82foru

+1

@ amit82foru ** 1. ** Вы все еще не опубликовали свой ожидаемый результат. ** 2. ** Я не вижу, что между входами существует большая разница; почему вы не можете самостоятельно внести необходимые корректировки? –

Смежные вопросы