XML XML слияния на основе структуры и данных по умолчанию - PullRequest
0 голосов
/ 30 октября 2018

Я хотел бы объединить две XML-части. Мне нравится создавать динамический XSLT, который мы можем использовать для разных конверсий. Для динамической части у меня есть идея создать шаблон структуры, который содержит необходимый вывод.

ВХОД / ИСТОЧНИК

 <?xml version="1.0" encoding="UTF-8"?>
    <DATA>
      <Transport>
        <Cars>
          <line>
            <brand>Opel</brand>
            <type>Corsa</type>
          </line>
        </Cars>
        <CarPrices>
          <line>
            <price>12000</price>
            <country>Belgium</country>
            <OptionPrices>
              <line>
                <introductionKit>400</introductionKit>
              </line>
            </OptionPrices>
          </line>
          <line>
            <price>15000</price>
            <country>Holland</country>
          </line>
        </CarPrices>
        <colors>
          <line>
            <color>red</color>
          </line>
          <line>
            <color>blue</color>
          </line>
        </colors>
      </Transport>
      <Transport>
        <Cars>
          <line>
            <brand>Opel</brand>
            <type>Omga</type>
          </line>
        </Cars>
        <CarPrices>
          <line>
            <price>16000</price>
            <country>Germany</country>
          </line>
        </CarPrices>
        <Engine>
          <line>
            <fuel>diesel</fuel>
            <type>1.6</type>
          </line>
        </Engine>
      </Transport>
    </DATA>

Шаблон вывода сделанный на заказ Элементы, содержащие данные, будут видны под родительским элементом.

  <?xml version="1.0" encoding="UTF-8"?>
    <Cars>
      <line>
        <CarPrices>
          <line>
            <OptionPrices/>
          </line>
        </CarPrices>
        <colors>
        </colors>
        <Engine>    
        </Engine>
        <Measurements>
        </Measurements>
      </line>
    </Cars>

Желаемый вывод

<?xml version="1.0" encoding="UTF-8"?>
<Cars>
  <line>
    <brand>Opel</brand>
    <type>Corsa</type>
    <CarPrices>
      <line>
        <price>12000</price>
        <country>Belgium</country>
        <OptionPrices>
          <line>
            <introductionKit>400</introductionKit>
          </line>
        </OptionPrices>
      </line>
      <line>
        <price>15000</price>
        <country>Holland</country>
        <OptionPrices/>
      </line>
    </CarPrices>
    <colors>
      <line>
        <color>red</color>
      </line>
      <line>
        <color>blue</color>
      </line>
    </colors>
    <Engine>
      <line/>
    </Engine>
    <Measurements>
  </Measurements>
  </line>
  <line>
    <brand>Opel</brand>
    <type>Omga</type>
    <CarPrices>
      <line>
        <price>16000</price>
        <country>Germany</country>
        <OptionPrices/>
      </line>
    </CarPrices>
    <colors/>
    <Engine>
      <line>
        <fuel>diesel</fuel>
        <type>1.6</type>
      </line>
    </Engine>
    <Measurements>
  </Measurements>
  </line>
</Cars>

Я пробовал разные вещи, но не с правильным поведением / результатом. По просьбе я предпочитаю динамическое преобразование. Если у нас есть другой вход (например, велосипеды с одинаковой структурой), это тоже сработает.

примечание: например, Измерения не на входе, но они нужны нам на выходе.

Спасибо за вашу помощь.

edit: только для xslt 1.0

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