Заполнение и вывод структурированных документов

MiksIr

miksir@home:~$
Заполнение и вывод структурированных документов

Представим обычный документ древовидной структуры (заголовок 1-го уровня, 2-го, 3-го...).
Даем пользователю возможность вводить текст в разделы, при этом сама структура (как и имена разделов) - фиксирована.
Хочется строить формы ввода на основе структуры через XSLT, получив данные из формы обернуть в XML и его уже хранить.
Выдавать сохраненные данные на странице так же через XSLT.
Собственно, интересует что-то вроде best practices как это делать и в частности как объединять XML со структурой и XML с данными для их последующего XSLT преобразования.
Например, можно тупо склеить 2 XML-я, обернув его корневым тегом и потом уже в XSLT разруливать что откуда брать. Или же на основе структурного XML через XSLT генерить XSLT через которое прогонять XML с данными ;)
Очень хотелось бы пообщаца с людьми, которые именно похожую задачу заполнения и вывода документа произвольной структуры решали.
 

FB3

Новичок
Вроде как немало работал с XML/XSLT, но вот сути не могу понять.
Может быть на примерах будет проще? Тогда и подскажу, как лучше сделать.
 

MiksIr

miksir@home:~$
Head 1
-- Subhead 1.1
<text>
-- Subhead 1.2
<text>
Head 2
-- Subhead 2.1
<text>
-- Subhead 2.2
<text>
Вот допустим такая структура. Все тексты храним в базе в XML. На выходе хочется получать и форму для ввода этого text и страницу для вывода. С другой стороны, все заголовки и структура задана жестко.
С точки зрения удобства работы хочется разделить XSLT для вывода страницы, для вывода формы (на самом деле там еще больше видов). Но если разделять, то и структуру и названия заголовков держать прямо в XSLT получается накладно - дублирование данных. По-этому приходит мысль сделать XML-чик описывающий эту структуру, хранящий названия заголовков, editable и проче и через XSLT брать эту структуру, генерить вывод, а сами данные (text) брать из другого XML (который из базы пришел). Ну как один из вариантов.
Может можно тут обойтись одним XSLT не потеряв читабельность, но в общем не хотелось бы. Типа, одна страница - админка, вторая - юзерчасть... разнести хотелось бы.
 

AmdY

Пью пиво
Команда форума
хм.
я понимаю примерно так
PHP:
<root>
<data>
  <record id="1">
    <title>test</title>
    <question >bla bla</question >
    <answer>bla bla bla</answer>
  </record>
</data>
<forms>
  <form type="add">
    <field name='title' validate='empty'>Title</field>
    <field name='question '>Question</field>
  </form>
  <form type="answer">
    <field name='answer ' validate='empty'>input text</field>
  </form>
</form>
</root>
но я бы разнёс хранение данных и работу с ними
 

MiksIr

miksir@home:~$
Т.е. брать data и forms, склеить как строки, обернуть в root и дальше уже пихать в XSLT для вывода
 

FB3

Новичок
В принципе, можно написать XSD Schema для XML документа и по ней строить форму. Так как это будет тоже XML файл, никто не помешает его пропарсить тем же XSLT.
 

MiksIr

miksir@home:~$
Вот пытался идти по этому пути, но недалеко.
Появился вопрос - ну со структурой понятно, а названия заголовков в схему удастся впихнуть? Ибо они, как я говорил, фиксированные и совсем не хочется их дублировать в XSLT и уж тем более хранить вместе с данными.
И еще, а что это дает, м... скажем кроме правильности технологий, если я схему все-равно как XML буду преобразовывать. И потом, как это решит вопрос объединения схемы и данных.
И есть ли в PHP экстеншены для валидации через указанную схему.
 

FB3

Новичок
Заголовки я бы вставил все таки в XML. ИМХО, это тоже данные. Надо будет поменять - проблемы не возникнет. Но можно и из схемы подгружать.

Из схемы можно будет генерить форму и данные для ее валидации.

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

Валидировать через DOMDocument:
http://ru2.php.net/manual/ru/domdocument.schemavalidate.php

Вообщем, это все теория на самом деле. ИМХО, не стоит мешать мух с котлетами, потом не отделить будет.
 

MiksIr

miksir@home:~$
> не стоит мешать мух с котлетами, потом не отделить будет
Ага, именно по-этому не хочется хранить заголовки в данных. Ибо поменять - это значить пройтись по всем записям базы select-update. Да и при разработке не очень удобно.
Со схемой еще поковыряюсь, но в принципе, как я понял, это можно реализовать и обычной XML-кой (в смысле, своей структуры).
Спасибо.
 
Сверху