Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автоматическое создание переменных и условий, Генерация ссылок и переменных 
V
    Опции темы
vinograd2008
Дата 1.2.2012, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.12.2008

Репутация: нет
Всего: нет



Есть несколько XML файлов и есть несколько иходных файлов в которых есть элементы с одинаковым содержимым все это обрабатывается одним файлом xsl. Нужно сравнивать содержимое элемента Termin в файлах 1.xml и 2.xml и с содержимым того же элемента Termin только в файлах s1, s1-1 и в зависимости от сравнения то есть если в файле 1.xml и в одном из файлов s1 или s1-1 есть одинаковые термины то получать содержимое элемента Termin и вывести его на экран то есть в браузер в html страницу если нет то ничо не выводить. Сервер не использую, весь вывод осуществляется на клиенте.

Файл 1.xml

Выглядит он следующим образом:

Код


<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type='text/xsl' href='1.xsl'?>
<Root>

  <Statya>
    <Termin>Сайт</Termin>
  </Statya>

  <Statya>
    <Termin>CMS</Termin>
  </Statya>

</Root>



Файл 2.xml

Код


<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type='text/xsl' href='1.xsl'?>
<Root>

  <Statya>
    <Termin>Интернет маркетинг</Termin>
  </Statya>

</Root>



Файл s1.xml

Код


<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="new.xsl" ?>
<Root>
<Section>Системы управления содержимым</Section>

<Ssilka name="s1" />

<TerminInSection>
<Termin>Сайт</Termin>
</TerminInSection>

<TerminInSection>
<Termin>СMS</Termin>
</TerminInSection>

</Root>



Файл s1-1.xml

Код


<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="new.xsl" ?>
<Root>
<Section>Всемирная паутина</Section>

<Ssilka name="s1-1" />

<TerminInSection>
<Termin>Интернет</Termin>
</TerminInSection>

<TerminInSection>
<Termin>Интернет маркетинг</Termin>
</TerminInSection>

</Root>



Должно в результате выводиться на экран так открываю файл 1.xml и на экране отображается.

Сайт

          Системы управления содержимым

CMS

          Системы управления содержимым

Открываю файл 2.xml на экране должно отображаться

Интернет


Интернет маркетинг

        Всемирная паутина
 
Сейчас обрабатываю я это примерно так

Код


<xsl:variable name="ref0">
<xsl:for-each select="document('s1.xml')//TerminInSection/Termin">
<xsl:value-of select="."/>
</xsl:for-each>
        </xsl:variable>
        
        <xsl:variable name="ref1">
<xsl:for-each select="document('s1-1.xml')//TerminInSection/Termin">
<xsl:value-of select="."/>
</xsl:for-each>
        </xsl:variable>

<xsl:variable name="refs2">
              <xsl:value-of select="/Root/Statya[position()=$i]/Termin" />
        </xsl:variable>
        
                <xsl:variable name="refs">
                <xsl:choose>
            <xsl:when test="contains($refs0, $refs2)">
                <xsl:value-of select="document('s1.xml')//Section"/>
            </xsl:when>
            <xsl:when test="contains($refs1, $refs2)">
                <xsl:value-of select="document('s1-1.xml')//Section"/>
            </xsl:when>
                 <xsl:otherwise>
                 </xsl:otherwise>
                                       </xsl:choose>
                </xsl:variable>

                                     <xsl:variable name="refx">
                <xsl:choose>
            <xsl:when test="contains($refs0, $refs2)">
                s1.xml
            </xsl:when>
            <xsl:when test="contains($refs1, $refs2)">
                s1-1.xml
            </xsl:when>
                 <xsl:otherwise>
                 </xsl:otherwise>
                                       </xsl:choose>
            </xsl:variable>

<a href="{$refx}">
<xsl:value-of select="$refs"/>
</a>



Это работает.

Но проблема в том что при создании нового файла s1-2 допустим приходится создавать новую переменную в xslt и писать для неё условие а также указывать имя файла в функции document а мне нужно сделать так чтобы не приходилось вносить изменения в шаблон при каждом создании нового файла чтоб не приходилось создавать новые переменные и условия для них. Как это можно сделать на xslt?

Это сообщение отредактировал(а) vinograd2008 - 1.2.2012, 21:03
PM MAIL   Вверх
diadiavova
Дата 1.2.2012, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5820
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Если у тебя преобразование производится в браузере, а документы загружаются из файловой системы(а не с сервера), то этого сделать не получится. Используй javascript для решения своей задачи.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vinograd2008
Дата 1.2.2012, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.12.2008

Репутация: нет
Всего: нет



Цитата(diadiavova @ 1.2.2012,  20:37)
Если у тебя преобразование производится в браузере, а документы загружаются из файловой системы(а не с сервера), то этого сделать не получится. Используй javascript для решения своей задачи.

И почему не получится щас же как то работает просто приходится создавать кучу переменных а я и спрашиваю как это сделать чтобы не вносить изменения в стили по сто раз. Создать универсальный xslt. А каким образом можно использовать javascript для решения такой задачи. Я просто не знаю как в javascripte использовать файловую систему а именно загружать xml документ, в C# например для этого есть метод Load, а в javascript как и выбрать из него элементы и потом это все передать в xslt в Интернете чо то ничо не могу найти по этому поводу.

Это сообщение отредактировал(а) vinograd2008 - 1.2.2012, 20:46
PM MAIL   Вверх
diadiavova
Дата 1.2.2012, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5820
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(vinograd2008 @  1.2.2012,  21:42 Найти цитируемый пост)
И почему не получится щас же как то работает просто приходится создавать кучу переменных а я и спрашиваю как это сделать чтобы не вносить изменения в стили по сто раз. 

Что именно работает? Ты задал вопрос о том, как передать параметры в стиль, я тебе отвечаю, что из браузера никак ты этого не сделаешь. Не знаю, что у тебя сейчас работает, я тебе конкретно ответил на вопрос о том, можно ли из браузера передать параметры в преобразование.

Другой вопрос, а почему бы тебе в сами хмл файлы не вносить все данные, необходимые для их обработки? Если тебе при обработке определенного файла, нужны другие файлы, от содержимого которых зависит обработка, ну внеси сведения о них в сам документ. Выдели в нем специальную секцию, которая будет считываться преобразованием. Ведь функции document ты можешь передать и выражение xpath, которое возвратит нужный тебе адрес.

Цитата(vinograd2008 @  1.2.2012,  21:42 Найти цитируемый пост)
 просто не знаю как в javascripte использовать файловую систему

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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.1350 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.