WedX - журнал о программировании и компьютерных науках

Как я могу использовать XSLT для создания канала RSS 2.0 из файла XML?

Я пытаюсь получить небольшое разъяснение, чтобы увидеть, правильно ли я понимаю эту проблему.

У меня есть файл XML с веб-сайта, в котором перечислены все данные с этого сайта. Я пытаюсь создать канал RSS 2.0, чтобы загрузить канал данных в продукты Google. XML-файл содержит слишком много информации; Я просто хочу взять продукты из него и поместить их в меньший файл XML или RSS с каналами и тегами, специфичными для Google.

Мне сказали использовать таблицу стилей XSLT. Будет ли это выглядеть как пустой шаблон финального проекта?

E.g.

< channel >  
< product >  
< othertags >

Понадобится ли мне небольшой скрипт для запуска XML-файла для заполнения конечного продукта?

Как проще всего это написать? Могу ли я сделать это в bash?

РЕДАКТИРОВАТЬ:
Я вижу возможность прикреплять таблицы стилей XSLT в Dreamweaver; Кто-нибудь знает об этом?

NEWEDIT: я провел дополнительные исследования и заставил XSLTPalette работать на OSX. Я протестировал небольшой фрагмент XML-файла со случайным XSLT-листом и получил хорошие результаты. XSLTsheet, который я пытаюсь создать, использует следующие параметры:

<item>
  <title>
    <![CDATA[titlegoeshere]]>
  </title>
  <description>
    <![CDATA[general description with boilerplate]]>
  </description>
  <link>link to item page</link>
  <g:condition>new</g:condition>
  <g:price>19.99</g:price>
  <g:product_type>Clothing, Accessories</g:product_type>
  <g:image_link>linktoimage.jpg</g:image_link>
  <g:payment_accepted>Visa</g:payment_accepted>
  <g:payment_accepted>Mastercard</g:payment_accepted>
  <g:payment_accepted>Discover</g:payment_accepted>
</item>

Все эти теги не обязательно имеют одно и то же имя в XML-файле, поэтому, посмотрев, какие значения я бы поместил, как бы я мог сопоставить их? Размер XML-файла составляет около 6 МБ, и я сомневаюсь, что смогу его обработать с моими 2 ГБ. Должен ли я сначала попытаться обрезать файл? Я получил поля из предыдущей загрузки для сайта, но многие ссылки были неверными, поэтому повтор, это было в RSS 2.0, поэтому я думаю, что должен придерживаться этого.

РЕДАКТИРОВАТЬ: Вот выдержка из одного продукта в файле XML:

<Product Id="21082">      
  <Code>21082</Code>
  <Description>Cute Spaghetti Strap Top</Description>       
  <Url>https://www.clot333333nd.com/21082.html</Url>      
  <Thumb>&lt;img border=0 width=53 height=70 src=https://ep.yimg33333333333333333-27706119506618_2144_317650845&gt;</Thumb>
  <Picture>&lt;img border=0 width=1125 height=1500 src=https://ep.yim333333333333333306119506618_2144_207331152&gt;</Picture>
  <Weight>1</Weight>
  <Orderable>YES</Orderable>
  <Taxable>YES</Taxable>
  <Pricing>
    <BasePrice>9.99</BasePrice>
    <LocalizedBasePrice>9.99</LocalizedBasePrice>
    <OrigPrice>24.99</OrigPrice>
    <LocalizedOrigPrice>24.99</LocalizedOrigPrice>
    <SalePrice>9.99</SalePrice>
    <LocalizedSalePrice>9.99</LocalizedSalePrice>
  </Pricing>
  <Path>
    <ProductRef Id="contactus" Url="https://www.clo3333333333333ctus.html">Contact Us</ProductRef>
    <ProductRef Id="tops" Url="https://www.clot333333333333ps.html">Wholesale Clothing Tops</ProductRef>
  </Path>
  <Availability>Usually ships the next business day.</Availability>
  <Caption>th bgc&lnt&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;</Caption>
  <OptionLists>
    <OptionList name="Size">
      <OptionValue>S</OptionValue>
      <OptionValue>M</OptionValue>
      <OptionValue>L</OptionValue>
      <OptionValue>Mixed-Sizes</OptionValue>
    </OptionList>
    <OptionList name="Color">
      <OptionValue>Blue</OptionValue>
    </OptionList>
    <OptionList name="Quantities">
      <OptionValue>1 Piece</OptionValue>
      <OptionValue>Add(+$30.89) For 12 Pieces</OptionValue>
      <OptionValue>Add(+54.77) For 24 Pieces</OptionValue>
    </OptionList>
  </OptionLists>
</Product>

Я хотел бы, чтобы это выглядело так:

<item>  
  <title>  
    <![CDATA[titlegoeshere]]>    
  </title>  
  <description>  
    <![CDATA[general description with boilerplate]]>  
  </description>
  <link>link to item page</link>
  <g:condition>new</g:condition>
  <g:price>19.99</g:price>
  <g:product_type>Clothing, Accessories</g:product_type>
  <g:image_link>linktoimage.jpg</g:image_link>
  <g:payment_accepted>Visa</g:payment_accepted>
  <g:payment_accepted>Mastercard</g:payment_accepted>
  <g:payment_accepted>Discover</g:payment_accepted>
</item>

Вот как я хочу, чтобы это совпадало:

<item>
  <title>
    <![CDATA[titlegoeshere]]>  ##Description
  </title>
  <description>
    <![CDATA[general description with boilerplate]]> ##Caption
  </description>
  <link>link to item page</link> ##Url
  <g:condition>new</g:condition> ##always new
  <g:price>19.99</g:price>  ## BasePrice
  <g:product_type>Clothing, Accessories</g:product_type>   ##always same
  <g:image_link>linktoimage.jpg</g:image_link>  ## Picture
  <g:payment_accepted>Visa</g:payment_accepted>  ##always same
  <g:payment_accepted>Mastercard</g:payment_accepted>  ## always same
  <g:payment_accepted>Discover</g:payment_accepted>  #always same
</item>

Вот что я построил до сих пор, но я получаю несколько ошибок, когда пытаюсь его использовать:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="https://www.w3.org/1999/XSL/Transform">
  <xmlns:g="https://base.google.com/ns/1.0" version="1.0">
  <xsl:output method="RSS 2.0" />
  <xsl:template match="Description">
    <title>
    </title>
  </xsl:template>
  <xsl:template match="Caption">
    <description>
    </description>
  </xsl:template>
  <xsl:template match="Url>
    <link>
    </link>
  </xsl:template>
  <xsl:template match="Condition">
    <g:condition>
    </g:condition>
  </xsl:template>
  <xsl:template match="Picture">
    <g:image_link>
    </g:image_link>
  </xsl:template>
</xsl:stylesheet>

Кроме того, могу ли я использовать foreach, чтобы дать каждому элементу теги, которые остаются неизменными, такие как условие, оплата принята, даже если они не имеют соответствующих значений в исходном файле?

08.02.2011

  • XSLT — это декларативный язык, оптимизированный для преобразований XML. Если вам нужна таблица стилей для вашей задачи, то вы должны описать ее более точно: Какие элементы вы хотите убрать из вашего ввода? Если вы спрашиваете, как вызвать какой-либо XSLT-процессор, вам нужно будет указать больше контекста вашей среды: какой XSLT-процессор, какой язык и т. д. 09.02.2011
  • когда вы говорите «язык», вы имеете в виду XML или RSS 2.0? если я использую графический интерфейс для обработки XSLT, нужно ли мне использовать язык сценариев? сделает ли это процесс более эффективным? 10.02.2011

Ответы:


1

Будет ли это выглядеть как пустой шаблон финального проекта?

Извините, вы можете прояснить это? Если вы говорите о своем примере, то результат xml может выглядеть так. Это зависит от вашей таблицы стилей XSLT.

Понадобится ли мне небольшой скрипт для запуска XML-файла для заполнения конечного продукта?

Вам нужно будет применить XSLT-преобразование к исходному XML-документу, чтобы получить результат.

Как проще всего это написать? Могу ли я сделать это в bash?

Вы можете установить любой из доступных XSLT-процессоров, создать bash-скрипт, передавая XML в вашу таблицу стилей XSLT и получая результат, а затем запускать свой скрипт с помощью cron или вручную и т. д.

Я вижу возможность прикреплять таблицы стилей XSLT в Dreamweaver; Кто-нибудь знает об этом?

Это сделано для упрощения разработки таблиц стилей XSLT.

Все эти теги не обязательно имеют одно и то же имя в XML-файле, поэтому, посмотрев, какие значения я бы поместил, как бы я мог сопоставить их?

Вам нужно будет написать шаблоны xslt, преобразующие входные узлы в выходные. Ф.и.

<xsl:template match="input">
  <output/>
</xsl:template>

В Интернете есть хорошие учебные пособия по XSLT.

размер XML-файла составляет около 6 МБ, и я сомневаюсь, что смогу обработать его с моими 2 ГБ, должен ли я сначала попытаться обрезать файл?

Процессор XSLT может обрабатывать файлы намного большего размера.

09.02.2011
  • таким образом, верхняя часть файла будет выглядеть так: xsl:stylesheet xmlns:xsl=w3.org/ 1999/XSL/Transform xmlns:g=base.google.com/ns/1.0 версия=1.0› ‹xsl:метод вывода=RSS 2.0/› 11.02.2011
  • Для «ввода» некоторые теги повторяются в файле XML, например, «описание» используется в разных контекстах, что должно быть примером «match=input», если поле, которое я пытаюсь сопоставить, выглядит так: ‹ Product Id=agfasu › ‹ Код ›3616a‹ /Код › ‹ Описание ›Ageless Fashion Suit‹ /Описание › И я хочу взять то, что находится в «описании», но оно использовалось и в других местах. 11.02.2011
  • я сделал еще одно редактирование выше, которое, как мне кажется, более понятно, я начинаю понимать процесс, но особенности сбивают меня с толку 11.02.2011
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

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

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]