@grigorie1990

Как из ХML сделать дерево в виде выпадающих списков?

Доброго всем дня)
Есть задача, думаю с какой стороны к ней подойти. Может что почитать посоветуете или примеры посмотреть подскажите.

Задача:
* Обработать xml файл.
* Сгенерировать дерево в виде выпадающих списков ().
* В результате должно получится : пошаговый выбор значения из списка на каждом уровне вложености.
* Т е нужно пройти от выбора разрешения(это толщина пленки) до выбора значений пост обработки
* На первом шаге выбор разрешения, после выбора появляется вып список с вариантами материалов для данного разрешения,
* Выбираем материал - появляются относящиеся к нему варианты PostProcessing (все доступные для данного материала)
* и варианты выбора значения для каждого из PostProcessing. Т е выбор PostProcessingValue доступен после выбора материала и сгруппирован по PostProcessing

Т.е. насколько я понимаю должна быть форма типа select при наводке на которую еще одна выпадающая менюшка возникала. Я думаю надо использлвать php c библиотекой SimpleXML или DOM, xml надо обработать xlst. надо ли использовать тут javascript, или можно без него? сильно похожего не нагуглил, разве что https://habrahabr.ru/post/65077/

Вот начало хml файла (он длиннющий, но однотипный):
<?xml version ="1.0" encoding ="utf-8"?>
<Catalog>
  <Scripts>
    <Script>
      <ScriptID>99b7e76f-b4f8-4e8a-839d-6c4c4a8f28fc</ScriptID>
      <ScriptName>C/к Пленка</ScriptName>
      <Resolutions>
        <Resolution>
          <ResolutionID>8c064d58-12a4-48df-8360-ba711a38ee98</ResolutionID>
          <ResolutionName>400 dpi</ResolutionName>
          <Materials>
            <Material>
              <MaterialID>
                f145fea2-c550-49b4-98cb-468804eb517f
              </MaterialID>
              <MaterialName>
                Пленка Белая глянцевая NAR
              </MaterialName>
              <MaterialDescription>
                Описание пленки
              </MaterialDescription>
              <PostProcessings>
                <PostProcessing>
                  <PostProcessingID>368b9ae4-b07e-4465-854a-02ddf8841b5f</PostProcessingID>
                  <PostProcessingName>Ламинирование...</PostProcessingName>
                  <PostProcessingDescription>Описание</PostProcessingDescription>
                  <PostProcessingValues>
                    <PostProcessingValue>
                      <PostProcessingValueID>e51310ad-7a5b-423a-b3de-a1945f04584f</PostProcessingValueID>
                      <PostProcessingValueName>Белая глянцевая OraJet</PostProcessingValueName>
                    </PostProcessingValue>
                    <PostProcessingValue>
                      <PostProcessingValueID>333decb8-d216-4d86-9806-415622b6c352</PostProcessingValueID>
                      <PostProcessingValueName>Белая глянцевая OraJet (удаляемый клей)</PostProcessingValueName>
                    </PostProcessingValue>
                  </PostProcessingValues>
                </PostProcessing>
                <PostProcessing>
                  <PostProcessingID>b733c91b-6e92-4b66-8e54-1d36d2d942bd</PostProcessingID>
                  <PostProcessingName>Упаковка</PostProcessingName>
                  <PostProcessingDescription>Описание</PostProcessingDescription>
                  <PostProcessingValues>
                    <PostProcessingValue>
                      <PostProcessingValueID>3cc78589-8071-473c-83f5-388ffa2cbfaa</PostProcessingValueID>
                      <PostProcessingValueName>брикетом</PostProcessingValueName>
                    </PostProcessingValue>
                    <PostProcessingValue>
                      <PostProcessingValueID>2377959d-be97-4bec-9892-cc683dc267b3</PostProcessingValueID>
                      <PostProcessingValueName>Белая глянцевая OraJet (удаляемый клей)</PostProcessingValueName>
                    </PostProcessingValue>
                    <PostProcessingValue>
                      <PostProcessingValueID>2377959d-be97-4bec-9892-cc683dc267b3</PostProcessingValueID>
                      <PostProcessingValueName>в рулон</PostProcessingValueName>
                    </PostProcessingValue>
                  </PostProcessingValues>
                </PostProcessing>
              </PostProcessings>
            </Material>
            <Material>
              <MaterialID>
                e51310ad-7a5b-423a-b3de-a1945f04584f
              </MaterialID>
              <MaterialName>
                Белая глянцевая OraJet
              </MaterialName>
              <MaterialDescription>
                Описание пленки
              </MaterialDescription>
              <PostProcessings>
                <PostProcessing>
                  <PostProcessingID>368b9ae4-b07e-4465-854a-02ddf8841b5f</PostProcessingID>
                  <PostProcessingName>Ламинирование...</PostProcessingName>
                  <PostProcessingDescription>Описание</PostProcessingDescription>
                  <PostProcessingValues>
                    <PostProcessingValue>
                      <PostProcessingValueID>e51310ad-7a5b-423a-b3de-a1945f04584f</PostProcessingValueID>
                      <PostProcessingValueName>Белая глянцевая OraJet</PostProcessingValueName>

                    </PostProcessingValue>
                    <PostProcessingValue>
                      <PostProcessingValueID>333decb8-d216-4d86-9806-415622b6c352</PostProcessingValueID>
                      <PostProcessingValueName>Белая глянцевая OraJet (удаляемый клей)</PostProcessingValueName>

                    </PostProcessingValue>
                  </PostProcessingValues>
                </PostProcessing>
                <PostProcessing>
                  <PostProcessingID>b733c91b-6e92-4b66-8e54-1d36d2d942bd</PostProcessingID>
                  <PostProcessingName>Упаковка</PostProcessingName>
                  <PostProcessingDescription>Описание</PostProcessingDescription>
                  <PostProcessingValues>
                    <PostProcessingValue>
                      <PostProcessingValueID>3cc78589-8071-473c-83f5-388ffa2cbfaa</PostProcessingValueID>
                      <PostProcessingValueName>брикетом</PostProcessingValueName>

                    </PostProcessingValue>
                    <PostProcessingValue>
                      <PostProcessingValueID>0681f22c-ced0-4e7a-91f5-36c6c7d191bc</PostProcessingValueID>
                      <PostProcessingValueName>намотка на тубу</PostProcessingValueName>

                    </PostProcessingValue>
                    <PostProcessingValue>
                      <PostProcessingValueID>2377959d-be97-4bec-9892-cc683dc267b3</PostProcessingValueID>
                      <PostProcessingValueName>в рулон</PostProcessingValueName>

                    </PostProcessingValue>
                  </PostProcessingValues>
                </PostProcessing>
              </PostProcessings>
            </Material>
  • Вопрос задан
  • 402 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы