Как я могу использовать XSLT для создания канала RSS 2.0 из файла XML? - PullRequest
0 голосов
/ 08 февраля 2011

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

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

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

например.

< channel >  
< product >  
< othertags >

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

Какой самый простой способ написать это? Могу ли я сделать это в Bash?

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

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

<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, так что я думаю, что я должен придерживаться этого.

EDIT: Вот выдержка из одного продукта в файле XML:

<Product Id="21082">      
  <Code>21082</Code>
  <Description>Cute Spaghetti Strap Top</Description>       
  <Url>http://www.clot333333nd.com/21082.html</Url>      
  <Thumb>&lt;img border=0 width=53 height=70 src=http://ep.yimg33333333333333333-27706119506618_2144_317650845&gt;</Thumb>
  <Picture>&lt;img border=0 width=1125 height=1500 src=http://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="http://www.clo3333333333333ctus.html">Contact Us</ProductRef>
    <ProductRef Id="tops" Url="http://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="http://www.w3.org/1999/XSL/Transform">
  <xmlns:g="http://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, чтобы присвоить каждому элементу теги, которые остаются неизменными, такие как условие, принятый платеж, даже если у них нет соответствующих значений в исходном файле?

1 Ответ

0 голосов
/ 09 февраля 2011

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

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

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

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

Какой самый простой способ написать это? Могу ли я сделать это в Bash?

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

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

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

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

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

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

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

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

XSLT-процессор может обрабатывать файлы намного больше, чем это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...