2 заметки с тегом

xml

Причёсываю РСС ленту

Попробую реализовать идею:

Получить вид главной страницы для РСС ленты (в xml формате)

Ленту возьму со своего же блога: http://e2.yaruslan.ru/rss/. В Хроме лента отображается так:

Редактируем шаблон РСС ./www/system/default/rss/rss.tmpl.php
Добавляем ссылку на стили в РСС ленту (вторая строка):

<?= '<?xml version="1.0" encoding="utf-8"?>' ?> 
<?= '<?xml-stylesheet type="text/xsl" href="/style.xslt"?>'?> 
<rss version="2.0">
....

Добавляем новый файл /style.xslt на сервер:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html" indent="yes"/>
	<xsl:template match="channel">
		<html>
			<head>
				<title>
					<xsl:value-of select="title" />
				</title>
				<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
				<base href="http://e2.yaruslan.ru/" />
				<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
				<link rel="stylesheet" type="text/css" href="themes/plain/styles/main.css?1574509235" />
			</head>
			<body>
				<div class="common">
					<div class="flag">
						<div class="header-content">
							<div class="header-description">
								<div class="title">
									<div class="title-inner">
										<div class="logo-marginal">
											<div class="e2-user-picture-container e2-external-drop-target">
												<img src="http://e2.yaruslan.ru/user/userpic@2x.jpg" />
											</div>
										</div>
										<h1>
											<span id="e2-blog-title">
												<xsl:value-of select="title" />
											</span>
										</h1>
									</div>
								</div>
							</div>
						</div>
					</div>
					<div class="content">
						<xsl:apply-templates select="item" /> 
					</div>
				</div>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="item">
		<div id="e2-note-109" class="e2-note  ">
			<article>
				<h1 class="e2-published e2-smart-title">
					<a>
						<xsl:attribute name="href">
							<xsl:value-of select="link" />
						</xsl:attribute>
						<xsl:value-of select="title" />
					</a>
				</h1>
				<div class="e2-note-text e2-text e2-published">
					<xsl:value-of disable-output-escaping="yes" select="description"/>
				</div>
			</article>
		</div>
	</xsl:template>
</xsl:stylesheet>

Структуру тегов я взял с главной страницы блога, просто скопировал итоговый хтмл из браузера.

Результат

Браузеры Хром и Эдж нормально применили стили (это радует):

Браузеры ФФ и ИЕ проигнорировали стили, при этом постарались вывести хтмл записи:

Так как это всё сделано на прямую в шаблонах движка, то сохранится до первого обновления. Придётся мне каждый раз править шаблон РСС и добавлять строку стилей.

XML по назначению

Цитаты из стать XML практически всегда применяется не по назначению.

XML — это язык разметки. Это не формат данных. В большинстве схем XML это разграничение явно не учитывали, путая XML с форматом данных, что в итоге означало ошибку в самом выборе XML, поскольку на самом деле нужен был именно формат данных.

Плохо:

<roоt>
  <item name="name" value="John" />
  <item name="city" value="London" />
</roоt>

Приблизительно правильно:

<roоt>
  <item>
    <key>Name</key>
    <value>John</value>
  </item>
  <item>
    <key>City</key>
    <value>London</value>
  </item>
</roоt>

Но если люди приняли странное решение применять XML как формат данных и затем с помощью него упорядочивать словарь, то они должны понимать, что то, что они делают неуместно и не удобно. Еще часто проектировщики ошибочно выбирают XML для создания своих приложений. Но еще чаще они усугубляют ситуацию бессмысленным применением XML в одной из описанных выше форм, игнорируя тот факт, что XML для этого просто не подходит.[...]

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

Более того, поскольку в XML нет понятия чисел (или булевых выражений, либо других типов данных), все представленные в этом формате числа считаются лишь дополнительным текстом. Для извлечения данных должна быть известна схема и ее связь с соответствующими выражаемыми данными. Также необходимо знать, когда исходя из контекста тот или иной элемент текста представляет собой число, и его следует преобразовывать в число, и т. д. [...]

На сегодняшний день единственными известными мне схемами XML, являются XHTML и DocBook.

 Нет комментариев    46   3 мес   json   xml   данные