Archive for the ‘xml’ Category

without no comments

Wednesday, May 9th, 2007

Стили коментариев в кодах програмных языков

  1. # php, perl, bash, mySql
  2. // php, javascript, ActionSctipt, Java, mySql
  3. /* php, javascript, css, ActionScript, Java, mySql */
  4. (* AppleScript *)
  5. AppleScript, mySql [два минуса]
  6. <!– html, xslt ->

Имена шаблонов

Tuesday, May 8th, 2007

К шаблонам template можно обратится не только по совпадению пути но и по имени которое почему-то называется mode. Это очень удобно если к примеру сделать зебру таблицу
xml

<books>
	<autor name="Robert Sheckley" />
	<autor name="Isaac Asimov" />
	<autor name="Ray Bradbury" />
	<autor name="Frank Patrick Herbert" />
</books>

xslt

<xsl:template match="/books/autor" mode="autors">
 <xsl:if test="(position() mod 2) = 0">
  <xsl:apply-templates select="." mode="row_gray" />
 </xsl:if>

 <xsl:if test="not((position() mod 2) = 0)">
  <xsl:apply-templates select="." mode="row_white" />
 </xsl:if>
</xsl:template>

<xsl:template match="/books/autor" mode="row_white">
 <tr><td>
  <xsl:value-of select="@name" />
 </td></tr>
</xsl:template>

<xsl:template match="/books/autor" mode="row_gray" >
 <tr><td bgcolor="#ccc">
  <xsl:value-of select="@name" />
 </td>

</xsl:template>

результат

Robert Sheckley
Isaac Asimov
Ray Bradbury
Frank Patrick Herbert

Пустые пространства

Friday, May 4th, 2007

Если между тегами xsl не получается поставить пробел или другой какой знак то лучше воспользовася тегом <xsl:text>

<xsl:number/>
  <span id="{date}">
    <xsl:value-of select="title" />
  </span>

1Foundation

но если добавить

<xsl:number/><xsl:text> </xsl:text>
  <span id="{date}">
    <xsl:value-of select="title" />
  </span>

1 Foundation

то пробел будет добавлен

substring before и after

Tuesday, May 1st, 2007

Еще одна неплохая функция в xslt. Наример можно получить кусок текста перед и после пробела, вот например решение с английской The

xml

The Martian Chronicles

xslt


 , The

html

Martian Chronicles, The

Сгенерировать ID

Friday, April 27th, 2007

В xslt наверное единственном из мне знакомых языков позаботились о том, что бы не ломать голову над тем, какой еще один уникальный id придумать для элемента.

<span id="{generate-id()}">

генерируется номер который скорее всего никогда не встретится в документе еще раз.


Атрибуты и значения

Wednesday, April 25th, 2007
MyMans

Получить значение

и получить атрибут

@ перед именем говорит о том что получаем атрибут

Добавляем атрибуты

Monday, April 23rd, 2007

XSLT очень щепетилен к тому как правильности документа. Например старый и добрый способ на php для него не будет верен

link

сразу же ждите ошибки. Существует 2 способа как это сделать правильно, один простой, второй слишком програмный, но в начала исходная часть

MyMans

Начнем с простого



второй по сложнее


				

Адресация в xslt

Monday, April 23rd, 2007

Отрадно видеть, что чем моложе язык, тем больше в нем интуитивно понятных вещей. В xslt аресации просто на высоте.


		Immortality, Inc
		Robert Sheckley
		1958

теперь непосредственно xslt


здесь адресация от корневого элемента, который кстати как вы уже догадались называется root


а здесь уже относительная, значит следующий темплейт должен принимать


Кстати внутри темплейта точка и есть текущая папка так сказать, поэтому

	,

на выходе получим Shekly, Immortality, Inc

Красивый ouput для View Source

Wednesday, April 18th, 2007

если вставать xml внутрь документа то как правило он начинает выглядеть как длинная колбаса, без пробелов и отступов, для тех кому это важно можно сделать так:

$dom = new DOMDocument('1.0', "utf8");
$dom->formatOutput = TRUE;

тогда вывод становится отформатированным, вместо

 ./ee.php | cat -n
     1  <?xml version="1.0" encoding="utf8"?><values/>

теперь выглядит так

     1  <?xml version="1.0" encoding="utf8"?>
     2  <values/>

В некоторых случаях это может приводить к ошибкам при чтении, так как добавляются пустые текстовые ноды, а их надо отсеивать. Хотя в любом случает надо обходить пустые ноды

dumpmysql и xml

Tuesday, March 20th, 2007

в принципе динамичность не всегда нужна, скажем если у вас есть список который обновляется скажем раз в 100 лет, как у меня таблица photographers, то можно сделать ее дамп и грузить ее на страницу просто из файла. А еще лучше когда данные будут представлены в xml

[@foto]: mysqldump -u {логин} --password={пароль}
               --xml photos  autors > autors.xml

затем тоже хорошая команда

[@foto]: less autors.xml

и видем отличные данные, которые потом можно трамсформировать во что угодно, правда как считается XSLT трасформаторы работают медленее чем хотелось, но какая разница, так нагрузка была бы на SQL.

Затем когда в админке будут изменены данные таблици то делаем заново mysqldump, и готово.