Arhn - архитектура программирования

Заполнение таблицы с помощью XSL для фильтрации по критериям

Довольно новичок в преобразованиях XSL, но несколько часов искал переполнение стека и не могу достичь того, к чему стремлюсь. У меня есть XML-документ, который я хочу преобразовать в таблицу с помощью таблицы стилей xsl, но я хочу выбрать только определенные части XML на основе значений узлов. Вот мой XML:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="guitarsXSLStyleSheet.xsl" type="text/xsl"?>
<guitars>
    <guitar>
        <model>Strat</model>
        <year>1978</year>
        <price>2500</price>
    </guitar>
    <guitar>
        <model>Jaguar</model>
        <year>2006</year>
        <price>400</price>
    </guitar>
    <guitar>
        <model>Strat</model>
        <year>2015</year>
        <price>900</price>
    </guitar>
    <guitar>
        <model>Tele</model>
        <year>1981</year>
        <price>1200</price>
    </guitar>
</guitars>

Теперь у меня есть таблица стилей xsl, которая выводит все это в таблицу:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/">
        <table id="guitarTable" border="1" width="200">
            <tr class="header">
                <th>Model</th>
                <th>Year</th>
                <th>Price</th>
            </tr>
            <xsl:apply-templates select="//guitar"/>
        </table>
    </xsl:template>

    <xsl:template match="guitar">
        <tr>
            <td> <xsl:value-of select="model" /> </td>
            <td> <xsl:value-of select="year" />  </td>
            <td> <xsl:value-of select="price" /> </td>

        </tr>
    </xsl:template>

</xsl:stylesheet>

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

Я подумал, может быть, изменить строку <td> <xsl:value-of select="model" /> </td>

to

<td> <xsl:value-of select="model[text()='Strat']" /> </td>

сделал бы это, но он по-прежнему дает мне таблицу длиной 4 строки, в которой только несоответствующие столбцы модели закрашены, но остальные все еще отображаются. Как мне это сделать? Спасибо!

15.03.2017

Ответы:


1

Измените <xsl:apply-templates select="//guitar"/> на <xsl:apply-templates select="//guitar[model = 'Strat']"/>. Обратите внимание, что попытка изучить XSLT и XPath, прочитав ответ StackOverflow, может помочь, но любой базовый учебник по XPath в качестве отправной точки, вероятно, является лучшим способом.

15.03.2017
  • Это помогло, спасибо. Я определенно читал учебники, которые я могу получить, но не смог найти ни одного, где бы он касался вставки этого и применения его к таблице. Быстрое продолжение, есть ли способ заставить это работать только с частичным совпадением? Например: <xsl:apply-templates select="//guitar[model = 'Str']"/> 15.03.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..