Xpoint
   [напомнить пароль]

Подскажите способы генерации статического сайта из XML/XSLT

Метки: [без меток]
2007-06-04 16:33:43 [обр] Alexey Meledin aka Avm-aka-Cureman(0/36)[досье]

Вопрос думаю простой. Есть сайт, которые претендует на отсутствие динамики. Можно выделить обычный шаблон страницы, навигацию, и содержимое каждой страницы. Хочется поместить текст в XML в стандартном виде, выразить навигацию в XML, после чего сделать единый XSL для трансформации в html, после чего запустить НЕЧТО, что на основе созданных документов выдсат мне набор статических html файлов, разложенных в структуру папок.

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

спустя 22 минуты [обр] nameR(0/3)[досье]

это хмл

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test7.xsl"?>
<books>
   <autor name="Robert Sheckley">
      <book>
         <title>Immortality, Inc.</title>
         <date>1958</date>
      </book>
      <book>
         <title>Meeting of the Minds</title>
         <date>1960</date>
      </book>
   </autor>
   <autor name="Isaac Asimov">
      <book>
         <title>Foundation</title>
         <date>1945</date>
      </book>
      <book>
         <title>The Bicentennial Man</title>
         <date>1976</date>
      </book>
   </autor>
   <autor name="Ray Bradbury">
      <book>
         <title>The Martian Chronicles</title>
         <date>1950</date>
      </book>
      <book>
         <title>Fahrenheit 451</title>
         <date>1953</date>
      </book>            
   </autor>
   <autor name="Frank Patrick Herbert">
      <book>
         <title>Dune</title>
         <date>1965</date>
      </book>
   </autor>
</books>

а это xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/books">

  <html>
    <head>
      <title>Books</title>
   </head>

    <body>
   <h1>Books</h1>
   <a href="#">A-Z</a>
   <ul>
      <xsl:apply-templates select="/books/autor" mode="lis" />
   </ul>
   </body>
  </html>
</xsl:template>


<xsl:template match="/books/autor" mode="lis">
   <li id="{@name}">
        <xsl:value-of select="@name" /> (<xsl:value-of select="count(book)" />)
        <!-- xsl:value-of select="substring(@name, 2, 3)" / -->
   </li>
   <p>
      <xsl:apply-templates select="book" mode="lis2" />
   </p>
</xsl:template>

<xsl:template match="/books/autor/book"  mode="lis2">
   
     <span id="{date}">   
   
   <xsl:number />
   <xsl:text>. </xsl:text>
    

   <xsl:if  test="substring-before(title, ' ') = 'The'">
      <xsl:value-of select="substring-after(title, 'The ')" />, The
   </xsl:if>
   
   <xsl:if  test="not(substring-before(title, ' ') = 'The')">
      <xsl:value-of select="title" />
   </xsl:if>
   
   (<xsl:value-of select="date" />)</span>
   
   <xsl:if test="position() != last()">, </xsl:if>
   
</xsl:template>

</xsl:stylesheet>

открывайте xml в браузере, лучше в FF

спустя 6 часов [обр] Привидение+(0/795)[досье]

nameR[досье]
Насколько я понял вопрос, в браузере открывать требуется не xml, а html

Alexey Meledin aka Avm-aka-Cureman[досье]
А вопрос обновления сайта продуман? или же его решение возлагается на искомый инструмент?

спустя 2 часа [обр] Александр Лукьянов(221/781)[досье]
Alexey Meledin aka Avm-aka-Cureman[досье]
Бесплатный Saxon 6.5.3 поддерживает элемент <xsl:document> из драфта XSLT 1.1, с помощью которого теоретически можно организовать вывод сразу в несколько документов, нужно только указать в XSL, что Вы используете именно XSLT 1.1 - <xsl:stylesheet ... version="1.1">.
Он же (и XSLTProc, если я не путаю) поддерживают пакетную обработку множественных входных XML-файлов — правда, насколько я помню, по разным директориям раскладывать при этом не получится. На худой конец, можно еще попользовать MSXML - либо написав несложный JScript/VBScript, либо используя утилиту msxsl.exe, которую можно скачать с сайта MS.
Вариантов масса, в принципе.
спустя 1 день 18 часов [обр] Alexey Meledin aka Avm-aka-Cureman(0/36)[досье]

Привидение[досье] Обновление сайта: обновил XML документы, запустил тулзу генерации статического html и выложил все это на сайт. Так мне видится.

Кто-нибудь использует для своих проектов подготовку документов в форматах XML/XSL, а после этого статическую генерацию всего этого дела в HTML. Или я сильно отстал от жизни, и можно уже делать сайты в формате xml присоединя к нему xsl stylesheet?

спустя 23 минуты [обр] Александр Лукьянов(221/781)[досье]

Alexey Meledin aka Avm-aka-Cureman[досье]

Кто-нибудь использует для своих проектов подготовку документов в форматах XML/XSL, а после этого статическую генерацию всего этого дела в HTML

Я думал об этом, но не было настолько сильно нагруженного сайта, чтобы это имело смысл - выгрузка на сайт XML + преобразования при запросе не сказать чтобы очень сильно затратная операция, особенно если сайт не слишком посещаемый, а размер XML и XSL — в разумных пределах.
Хотя можно, почему нет?

можно уже делать сайты в формате xml присоединя к нему xsl stylesheet?

ИМХО, пока нет. Хотя MSIE 6+, Mozilla и Opera 9+ поддерживают клиентскую трансформацию, это все-таки не все браузеры на земле, да и в исходном XML не все стоит показывать.

спустя 2 дня 18 часов [обр] Михаил Кюршин aka ya-ya(0/414)[досье]

Присоединюсь к совету Александра Лукьянова. Правда, я использую libxslt (для Windows он лежит тут http://www.zlatkovic.com/pub/libxml/):

> xsltproc.exe -o hello.html page.xsl  hello.xml

Организовать пакетную обработку уже дело техники.

спустя 25 дней [обр] dark-demon(0/1)[досье]

>Хотя MSIE 6+, Mozilla и Opera 9+ поддерживают клиентскую трансформацию, это все-таки не все браузеры на земле

но почти ;-) и сафари в их числе...

лично я уже перешёл на xml+xslt. правда не полностью.. xml сохраняет совместимость с html, а xslt используется для мелочей.
например, преобразование object в в который грузится страничка в iframe в ИЕ (из-за глюков в ИЕ и мозилле нельзя выбрать что-то одно из них).
или создание скина для бордюра посредством добавления в исходный код всего одного вложенного дива, который с помощью xslt разворачивается в пяток.
в общем по мелочи, чтобы страницу можно было смотреть и без xslt. в принципе, если не волнует поддержка устаревшими или экзотическими браузерами, то можно и тру-xml замутить :)

Powered by POEM™ Engine Copyright © 2002-2005