Я пытаюсь получить небольшое разъяснение, чтобы понять, правильно ли я понимаю эту проблему.
У меня есть файл 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><img border=0 width=53 height=70 src=http://ep.yimg33333333333333333-27706119506618_2144_317650845></Thumb>
<Picture><img border=0 width=1125 height=1500 src=http://ep.yim333333333333333306119506618_2144_207331152></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></b></font></p></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
, чтобы присвоить каждому элементу теги, которые остаются неизменными, такие как условие, принятый платеж, даже если у них нет соответствующих значений в исходном файле?