Helpers - компьютеры, интернет, программирование

Новое в XSLT - как вернуть текст класса span в xml?

У меня есть следующий XML:

    <core:renderedItem>
    <span class="harvard_title">Whose Ecosystem is it Anyway: Private and Public Rights under New Approaches to Biodiversity Conservation</span>
    '
    <span>
      <em>Journal of Human Rights and the Environment</em>
    </span>
    .
  </div>

Как получить доступ к тексту span class="harvard_title" с помощью xslt? В идеале я хотел бы вернуть только текст до двоеточия «Чья это экосистема в любом случае»

27.05.2014

  • Предоставьте правильный фрагмент xml. 27.05.2014

Ответы:


1

Предполагая, что этот xml (тот, который вы опубликовали, сформирован неправильно):

<div xmlns:core="http://www.w3.org/core">
    <core:renderedItem>
        <span class="harvard_title">Whose Ecosystem is it Anyway: Private and Public Rights under New Approaches to Biodiversity Conservation</span>
        '
        <span>
            <em>Journal of Human Rights and the Environment</em>
        </span>
        .
    </core:renderedItem>
</div>

Вы можете получить нужный текст с помощью этого кода xsl:

<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:core="http://www.w3.org/core"
  exclude-result-prefixes="xsl">
  <xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />

  <xsl:template match="/">
    <xsl:value-of select="substring-before(div/core:renderedItem/span[@class = 'harvard_title'], ':')" />
  </xsl:template>

</xsl:stylesheet>

При этом: span[@class = 'harvard_title'] вы получаете текст внутри диапазона, а с функцией substring-before вы получаете только текст перед двоеточием.

Надеюсь, поможет.

Редактировать: вы можете использовать if, чтобы учесть случай, когда в тексте нет двоеточия, но вы можете сделать это с помощью шаблонов:

<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:core="http://www.w3.org/core"
  exclude-result-prefixes="xsl">
  <xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />

  <xsl:template match="/">
    <xsl:apply-templates select="div/core:renderedItem/span[@class = 'harvard_title']" />
  </xsl:template>

  <!-- generic template, for span elements with class = 'harvard_title' -->
  <xsl:template match="span[@class = 'harvard_title']">
    <xsl:value-of select="." />
  </xsl:template>
  <!-- more specific template, for those ones containing a colon -->
  <xsl:template match="span[@class = 'harvard_title'][contains(.,':')]">
    <xsl:value-of select="substring-before(., ':')" />
  </xsl:template>

</xsl:stylesheet>
27.05.2014
  • Это прекрасно работает. Не могли бы вы дать немного больше информации? Что, если возвращаемая строка не содержит двоеточия? Это вернется и ? Как я могу проверить строку без двоеточия? Буду ли я использовать ‹xsl:when›? 27.05.2014
  • '‹xsl:имя переменной=show select=(div/span[@class = 'harvard_title']) /› ‹xsl:if test=contains($show, ':')› ‹xsl:value-of select=substring -before(div/span[@class = 'harvard_title'], ':') /› ‹/xsl:if› ‹xsl:if test=not(contains($show, ':'))› ‹xsl:value -of select=(div/span[@class = 'harvard_title']) /› ‹/xsl:if›' Кажется, это работает 27.05.2014
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

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

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..