?

Log in

XSLT или XSLM? - Alexander Dolgin
February 3rd, 2008
11:56 pm

[Link]

Previous Entry Share Next Entry
XSLT или XSLM?
Есть сложные xml документы произвольного вида, являющиеся конфигурацией к нектоторой системе.
Иногда хочется закомментировать какие-то элементы или поменять значения аттрибутов.
Что-то типа закомментировать нод, которий соответствует шаблону
ProcessName/ComponentList/Component[@name='My component']
а аттрибуту
enabled
в ноде
ProcessName/FeatureList/Feature[@name="My feature"]
поменять значение с true на false.

Первая задача решилась следующей трансформацией
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:template match="ProcessName/ComponentList/Component[@name='My component']">
		<xsl:text disable-output-escaping = "yes">&lt;!--</xsl:text>
     		<xsl:copy>
     			<xsl:apply-templates select="@*|node()" />
     		</xsl:copy>
		<xsl:text disable-output-escaping = "yes">--&gt;</xsl:text>
	</xsl:template>

	<xsl:template match="@*|node()" >
		<xsl:copy>
			<xsl:apply-templates select="@*|node()" />
		</xsl:copy>
	</xsl:template>

</xsl:stylesheet>


Вторую (изменение значения аттрибута) не осилил сходу

Кажется довольно ественным написать XSLT для этого. Но по тому, как тяжело это дается, начинает казаться, что выбрал не то средство. Может это действительно неправильный путь и нужен язык не для трансформации (XSLT), а для модификации (XSLM)? Правда такого нет, вроде, к сожалению. Или это я неправильно XSLT готовлю?
В принципе XSLT для меня не панацея. Хотелось бы, в идеале указывать, что мне нужно именно в виде
узел такой-то (XPath) -> операция с ним (скажем: удалить/закомментировать/добавить/изменить значение/вставить под-дерево). В какую сторону смотреть?

(3 comments | Leave a comment)

Comments
 
[User Picture]
From:jdevelop
Date:February 4th, 2008 07:52 am (UTC)
(Link)
вроде мы с ним что-то подобное делали когда-то, правда это скорее иерархическая СУБД чем XSLM, но оно опенсорсное, вероятно что-нибудь можно и скоммуниздить
[User Picture]
From:upstartn
Date:February 5th, 2008 10:50 am (UTC)
(Link)
Вобщем, оказалось, что
http://www.xmldatabases.org/projects/XUpdate-UseCases/
наиболее похоже на то, что мне нужно, правда реализацию еще не смотрел
Powered by LiveJournal.com