Как я могу переписать этот xquery, чтобы удалить подузел, не переписывая весь этот запрос? - PullRequest
0 голосов
/ 05 ноября 2019

Вот xquery, который работает с этими XML-файлами.

<results>
  {
    for $depen in doc("../company/dependent.xml")//dependent
    where $depen/dependent_name=*
    return
     <row>
     <dependent name="{$depen/dependent_name}"/>
      {
        for $emp in doc("../company/employee.xml")//employee[ssn = $depen/essn ]
        return

        <employee>

        <emp fname="{$emp/fname}" lname="{$emp/lname}"/>
              {
              for $man in doc("../company/employee.xml")//employee[ssn = $emp/superssn ]
              return
              <manager>

              <mgr fname="{$man/fname}" lname="{$man/lname}"/>             

              </manager>
             }              
        </employee> 
      } 
     </row>   
  }
</results>

Он производит вывод ниже.

<results>
  <row>
    <dependent name="Alice"/>
    <employee>
      <emp fname="John" lname="Smith"/>
      <manager>
        <mgr fname="Franklin" lname="Wong"/>
      </manager>
    </employee>
  </row>
  <row>
    <dependent name="Elizabeth"/>
    <employee>
      <emp fname="John" lname="Smith"/>
      <manager>
        <mgr fname="Franklin" lname="Wong"/>
      </manager>
    </employee>
  </row>
  <row>
    <dependent name="Michael"/>
    <employee>
      <emp fname="John" lname="Smith"/>
      <manager>
        <mgr fname="Franklin" lname="Wong"/>
      </manager>
    </employee>
  </row>
  <row>
    <dependent name="Alice"/>
    <employee>
      <emp fname="Franklin" lname="Wong"/>
      <manager>
        <mgr fname="James" lname="Borg"/>
      </manager>
    </employee>
  </row>
  <row>
    <dependent name="Joy"/>
    <employee>
      <emp fname="Franklin" lname="Wong"/>
      <manager>
        <mgr fname="James" lname="Borg"/>
      </manager>
    </employee>
  </row>
  <row>
    <dependent name="Theodore"/>
    <employee>
      <emp fname="Franklin" lname="Wong"/>
      <manager>
        <mgr fname="James" lname="Borg"/>
      </manager>
    </employee>
  </row>
  <row>
    <dependent name="Abner"/>
    <employee>
      <emp fname="Jennifer" lname="Wallace"/>
      <manager>
        <mgr fname="James" lname="Borg"/>
      </manager>
    </employee>
  </row>
</results>

Как удалить теги сотрудника и менеджера в конечном результате, чтобы они выглядели примерно так, как показано ниже.

   <results>
      <row>
        <dependent name="Alice"/>
        <emp fname="John" lname="Smith"/>
        <mgr fname="Franklin" lname="Wong"/>
      </row>
      <row>
        <dependent name="Elizabeth"/>
        <emp fname="John" lname="Smith"/>
        <mgr fname="Franklin" lname="Wong"/>
      </row>
      <row>
        <dependent name="Michael"/>
        <emp fname="John" lname="Smith"/>
        <mgr fname="Franklin" lname="Wong"/>
      </row>
      <row>
        <dependent name="Alice"/>
        <emp fname="Franklin" lname="Wong"/>
        <mgr fname="Franklin" lname="Wong"/>
      </row>
      <row>

... и т. Д. И т. П.

Мне просто нужно знать, как переписать окончательный xquery, чтобы устранить необходимость в узле сотрудника и менеджера в конечном результате, но при этом сохранить значение.

...