Реализация XML в M-системе

ibnTeo
Дата: 11.09.2005 15:20:04
Есть ли наработки по этому поводу?

Вот сделал подходящую структуру:

<document name="document_1">
<title>Document 1</title>
<data id="1" maxlength="1000">
Text <b>bold</b> text.
</data>
</document>

s ^document("$last")=2
s ^document("@name")="document_1"
s ^document(1,"title")="Document 1"
s ^document(2,"data","$last")=3
s ^document(2,"data","@id")=1
s ^document(2,"data","@maxlength")=1000
s ^document(2,"data",1,"#text")="Text "
s ^document(2,"data",2,"b")="bold"
s ^document(2,"data",3,"#text")=" text."

Только не представляю насколько будут тяжелы операции вставки узла в произвольное место (реализация и время исполнения), сложность реализации навигации по документу (реализация осей навигации XPath), сложность создания индексов вглубь данных (наподобие <xsl:key name="b" match="//b" use="."/>), организация асболютной адресации (что-то вроде GUID-ID, "~2~data~2~" не подойдет, т.к. нужный узел может быть отодвинут после получения адреса узла).

ЗЫ: M-язык я только начал изучать на M3-Lite
VadimF
Дата: 11.09.2005 15:44:52
Добрый день,

Взгляните на документацию Cache':
XML и Web-сервисы.

Можете скачать однопользовательскую версию Cache' и попробовать реализовать нужный Вам функционал.

Вадим
ibnTeo
Дата: 11.09.2005 15:47:14
VadimF
Добрый день,

Взгляните на документацию Cache':
XML и Web-сервисы.

Можете скачать однопользовательскую версию Cache' и попробовать реализовать нужный Вам функционал.

Вадим


Вадим, это конечно интересно, но на данном этапе хочу разобраться с возможностями старого доброго MUMPS для лучшего понимания этой системы.
VadimF
Дата: 11.09.2005 19:52:06
Не очень понимаю, какой смысл сейчас разбираться со старым добрым MUMPS...
Большая часть систем на MUMPS, которые продолжаютс развиваться, уже переведена на Cache'.

Если больше интересует MUMPS посмотрите на eXtc.


Вадим
ibnTeo
Дата: 11.09.2005 20:42:22
VadimF
Не очень понимаю, какой смысл сейчас разбираться со старым добрым MUMPS...
Большая часть систем на MUMPS, которые продолжаютс развиваться, уже переведена на Cache'.

Если больше интересует MUMPS посмотрите на eXtc.


Вадим


Вадим, вы конечно правы, лучше направить усилия на изучение возможностей Cache. MUMPS же сейчас лучше изучить c теоретической точки зрения для лучшего понимания как работает сама Cache :) Многие вещи там устарели уже на пару десятков лет, но сам принцип обработки данных меня просто поразил. С хорошим инструментом это идеальная платформа для большинства задач.
LittleCat
Дата: 11.09.2005 21:46:57
ibnTeo

Вадим, вы конечно правы, лучше направить усилия на изучение возможностей Cache. MUMPS же сейчас лучше изучить c теоретической точки зрения для лучшего понимания как работает сама Cache :) Многие вещи там устарели уже на пару десятков лет, но сам принцип обработки данных меня просто поразил. С хорошим инструментом это идеальная платформа для большинства задач.

Нельзя ли пояснить, что там устарело ? Просто MUMPS (нынче М) - это стандарт, а Cache, просто одна из его реализаций, наверное самая продвинутая, но и похоже самая дорогая. На мой взгляд, нужно исходить из поставленной задачи. Если хочется использовать всенавороты Cache типа CSP, объектов, то никуда не деться, но если собираешся писать на стандартном М, если хочешь сэкономить и готов многое сделать своими руками, а не полагаться на чужие готовые решения, то есть и другие реализации М (GT.M под Linux бесплатен, M3Lite - под Windows). Удачи !
Sergei Obrastsov
Дата: 14.09.2005 03:22:13
LittleCat

Если хочется использовать всенавороты Cache типа CSP, объектов, то никуда не деться, но если собираешся писать на стандартном М, если хочешь сэкономить и готов многое сделать своими руками, а не полагаться на чужие готовые решения, то есть и другие реализации М (GT.M под Linux бесплатен, M3Lite - под Windows). Удачи !


При всех наворотах в Cache, которые сделаны, кстати на том самом стандартном M с добавлением нескольких внутренних функций, она остается реализацией M-языка. Так что писать на чистом M можно и в ней. Размерность, конечно, но другие не сильно меньше.
Sergei Obrastsov
Дата: 14.09.2005 03:39:00
VadimF
Многие вещи там устарели уже на пару десятков лет, но сам принцип обработки данных меня просто поразил. С хорошим инструментом это идеальная платформа для большинства задач.

Меня тоже интересует - что же это там так сильно устарело? Особенно, если речь идет о чистом языке. А отсутствие инструментария - вечная беда M-систем. Приходится ваять самим.
Sergei Obrastsov
Дата: 14.09.2005 04:01:29
ibnTeo

<document name="document_1">
<title>Document 1</title>
<data id="1" maxlength="1000">
Text <b>bold</b> text.
</data>
</document>

s ^document("$last")=2
s ^document("@name")="document_1"
s ^document(1,"title")="Document 1"
s ^document(2,"data","$last")=3
s ^document(2,"data","@id")=1
s ^document(2,"data","@maxlength")=1000
s ^document(2,"data",1,"#text")="Text "
s ^document(2,"data",2,"b")="bold"
s ^document(2,"data",3,"#text")=" text."

Я бы предложил более удобную структуру:

^doc(DocId)=DocName~title
^doc(DocId,"data",1)="1000~bold"
^doc(DocId,"data",1,"text",1)="..."
^doc(DocId,"data",2)="..."
^doc(DocId,"data",2,"text",1)="..."
...
Это навскидку. Если более конкретно - нужно смотреть.

Вставка узлов - дело простое. Только не забывайте о сортировке.
В случае обязательного сохранения последовательности - используйте
числовые индексы, тогда вставка в конкретное место между двумя индексами
реализуется просто: i3 = i2 - i1 / 2. Хотя со строковыми тоже просто.
Это же M, здесь с данными можно делать все, что душе угодно.
Сашок
Дата: 14.09.2005 11:41:10