Страницы

Поиск по вопросам

Показаны сообщения с ярлыком xslt. Показать все сообщения
Показаны сообщения с ярлыком xslt. Показать все сообщения

воскресенье, 26 января 2020 г.

XSLT 1.0. Выбрать и обработать только узлы с текстом

#xml #html #xslt


Здравствуйте.
Подскажите, пожалуйста, кому не трудно, каким образом можно "вырезать" из документа
текстовые узлы (или узлы, содержащие непосредственно текст) и "обернуть" их в пару
элементов, сохраняя атрибуты родителя?
То есть, к примеру, есть такой кусок документа:
А нужно получить: Заголовок Вопрос по работе подсистемы Вопрос по методологии Ошибка в работе подсистемы Ошибка в данных Не нашли данные? Доп. параграф Не могу найти, как это реализовать. Простое или выбор через не помогают: получается простая замена вместо выбора текстовых узлов. Был бы очень признателен за помощь.


Ответы

Ответ 1



Спасибо за внимание. Мне подсказали ответ на мой вопрос. Нужно просто использовать

четверг, 23 января 2020 г.

XSLT: Взять из набора узлов каждые два

#xml #xslt


Есть входной XML вида:


  111
  222
  333
  444
  555



Нужно взять из набора каждые два узла, чтобы получить такой фрагмент HTML:



  • ID 1: 111

    ID 2: 222

  • ID 3: 333

    ID 4: 444

  • ID 5: 555

Каким образом такое сделать?


Ответы

Ответ 1



Попробуйте 111 222 333 444 555 код Testing XML Example

ID :

  • тут код
  • проверяет четность и пересоздает новый


  • Ответ 2



    Я думаю, что ответ на мой вопрос поможет и вам. Как обычно все оказалось намного проще :)

    Ответ 3



    • ID :

      ID :



  • четверг, 2 января 2020 г.

    XSLT разница между элементом xsl:text и текстом

    #xml #xslt

    
    Для чего или в каких случаях нухно использовать элемент  в XSLT?
    
    вот пример кода
    
          
            

    • / /
      ISBN:
    попробовал написать без элемента , результат тот же.
  • / /
    ISBN:
  • в чем же сила этого элемента?


    Ответы

    Ответ 1



    Используя xsl:text можно точно управлять выводом пробельных символов. Под ваш код xsl я взял такой xml: Title1 Autor1 ver1.0 Title2 Autor2 ver2.0 Первый вариант вашего кода, с xsl:text даёт такой вывод:

    test

    • Title1 / Autor1 / ver1.0
      ISBN:1
    • Title2 / Autor2 / ver2.0
      ISBN:2
    Второй вариант выдаёт следующее:

    test

    • Title1 / Autor1 / ver1.0
      ISBN: 1
    • Title2 / Autor2 / ver2.0
      ISBN: 2
    Как можно видеть, во втором случае значение ISBN: было скопировано вместе с пробелами перед ним, а также с переводами строки. Чтобы не было недопонимания, приведу полный текст xsl-преобразования, который я использовал:

    • / /
      ISBN:


    Ответ 2



    В таблице стилей текст можно создавать для вывода в литеральное дерево результатов с использованием элемента или без него. Однако при использовании этого элемента можно до определенной степени контролировать пробелы, созданные таблицей стилей. Например, для улучшения читаемости таблицы стилей можно записывать каждый элемент шаблона на отдельной строке и в некоторых строках использовать отступы. В этом случае пробелы становятся составной частью правила шаблона. Это может быть как желательным, так и нежелательным эффектом преобразования. Иногда нужно вывести пробел, чтобы разделить два значения. В этом случае можно воспользоваться элементом . Пробелы, заключенные внутри элемента , выводятся в дерево результатов. Элемент на MSDN Library

    вторник, 16 июля 2019 г.

    XSLT перебор узлов по длине

    Есть список названий:

    необходимо создать таблицу из двух столбцов:

    12345symbols
    123456789symbols
    12345symbols 12345symbols
    12345symbols
    123456789symbols
    123456789symbols
    12345symbols 12345symbols
    123456789symbols
    12345symbols

    Названия где меньше или равно 12 символов идут каждое в одной ячейке, по две ячейки в строке. Если в названии больше 12 символов то ячейку растягиваем на две и делаем все в одну строку.
    Уже третий день бьюсь над этой задачкой, может кто сможет что подсказать. Если что то не понятно буду рад объяснить.


    Ответ

    Если вариантов всего 3, то проще всего навставлять if-ов









    Если больше - то вынести apply-templates за choose и добавить отдельные услови для пропусков нод.

    среда, 10 июля 2019 г.

    Преобразование XML с помощью XSLT

    Имеется XML-файл с такой структурой:

    значение поля field

    Необходимо с помощью средств XSLT выполнить преобразование к такому виду:

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


    Ответ

    Наиболее просто это делается вот так:

    Просто создаем элемент args с нужным списком атрибутов.
    Если же по какой-то причине этот вариант не устраивает и требуется трансформация каждого поля в отдельности - нет никаких проблем. Единственное - нужно запретить обработку текстовых узлов внутри элемента args, иначе после их вывода атрибут добавить уже не получится:



    Для заранее неизвестного количества полей можно сделать вот так:

    Если же у элемента args должны быть еще и обычные дети - придется исхитряться:




    Здесь обработка элемента args идет в два прохода. В первый проход собираются все атрибуты, во второй проход - все остальные дочерние узлы.

    воскресенье, 30 июня 2019 г.

    Перенос строк в списке xslt

    Уже битый час хочу добавить перенос строки в список,подскажите как это сделать





  • Ответ

    Добавил в начало документа вместо и тег
    заработал.

    пятница, 11 января 2019 г.

    XSLT разница между элементом xsl:text и текстом

    Для чего или в каких случаях нухно использовать элемент в XSLT?
    вот пример кода

    • / /
      ISBN:

    попробовал написать без элемента , результат тот же.
  • / /
    ISBN:

  • в чем же сила этого элемента?


    Ответ

    Используя xsl:text можно точно управлять выводом пробельных символов.
    Под ваш код xsl я взял такой xml:
    Title1 Autor1 ver1.0 Title2 Autor2 ver2.0
    Первый вариант вашего кода, с xsl:text даёт такой вывод:

    test

    • Title1 / Autor1 / ver1.0
      ISBN:1
    • Title2 / Autor2 / ver2.0
      ISBN:2

    Второй вариант выдаёт следующее:

    test

    • Title1 / Autor1 / ver1.0
      ISBN: 1
    • Title2 / Autor2 / ver2.0
      ISBN: 2

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

    Чтобы не было недопонимания, приведу полный текст xsl-преобразования, который я использовал:

    • / /
      ISBN: