parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

А есди хранить в базе?

Ike 09.05.2006 21:47

Меня всегда интересовал вопрос -- как хранить данные в базе в виде xml?
То есть не перемешка(<text>Текст</text>) же с данными.

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

весь код:
#это временная конструкция -- надо переделать
@print2[]
^select_pid[]
^print[$postid;index;^select_template[]]

#выводим страницу
@print[postid;xslSheet;template]
	$sourceDoc[^xdoc::create{
		^print_page_object[$template;$postid]
	}]

	$menuItems[^sourceDoc.select[/page/body/navigation/menuItem]]
		^for[i](0;$menuItems-1){
			$node[$menuItems.$i]
			^if(^node.getAttribute[link] eq $request:uri || !def ^node.getAttribute[link]){
				^node.setAttribute[state;disabled]
			}{
				^node.setAttribute[state;enabled]
			}
		}

	$transformedDoc[^sourceDoc.transform[/xsl/${xslSheet}.xsl]]
	^memory:compact[]

	^process{^transformedDoc.string[$.method[html]]}

#выбираем id страницы в соответствии с uri
@select_pid[]
	$page[^if(def $form:page){$form:page}{main}]
	$selectPageContent[^table::sql{
		SELECT post_id, object_type 
		FROM posts 
		WHERE post_id = (SELECT uri_id FROM uri WHERE uri_path = '$page')
	}]
	$objectTypes[$selectPageContent.object_type]
	$postid[^if(!def $form:id){$selectPageContent.post_id}{$form:id}]


@select_template[]

#####
#ToDDo
#SELECT template FROM objects_types WHERE object_type = ...
#####
	^if(($form:page eq main  || !def $form:page) && $objectTypes == 1){
		$result[index_page]
	}{	
		^if($objectTypes != 1){
			$result[full_page]			
			}{
			$result[regular_page]			
			}
	}


#вывести страницу
@print_page_object[template;sid]
	$selectObjectsTo[^table::sql{
		SELECT post_id, creation_date, edit_date, 
			version, author, header, object_type, 
			publication_date, end_date, is_published
		FROM posts
		WHERE post_id = '$sid'
	}]
	$postId[$sid]
	$value[^hash::sql{SELECT name, text FROM contents WHERE post_id = '$sid'}]
	^selectObjectsTo.menu{
	$head[$selectObjectsTo.header]
	$sourceDocL[^xdoc::load[/datatypes/${template}.xml]]
	^process{^sourceDocL.string[$.method[html]]}
	}
	^memory:compact[]
Код конечно плохой...