Доброго времени суток. С xml и xslt я только начинаю разбираться, потому могу путаться в терминах и понятиях. За это прошу не пинать. Задача использовать один файл xml для меню сайта. Но, по необходимости, нудно бутеть только часть его трансформировать и отображать в html. Вот тестовый xml Код | <?xml version="1.0" encoding="UTF-8"?>
<root> <node> <category> <id>id1<id> </category> <content> <start namber="1" name="Start 1" path="/start 1"> <menu namber="1" name="Menu 1" path="/menu 1"> <submenu namber="1.1" name="Sub menu 1.1" path="/submenu 1.1"/> <submenu namber="1.2" name="Sub menu 1.2" path="/submenu 1.2"/> </menu> </start> <start namber="2" name="Start 2" path="/start 2"> <menu namber="2" name="Menu 2" path="/menu 2"> <submenu namber="2.1" name="Sub menu 2.1" path="/submenu 2.1"/> <submenu namber="2.2" name="Sub menu 2.2" path="/submenu 2.2"> <item namber="2.2.1" name="Item menu 2.2.1" path="/itemmenu 2.2.1"/> <item namber="2.2.2" name="Item menu 2.2.2" path="/itemmenu 2.2.2"/> </submenu> </menu> <menu namber="3" name="Menu 3" path="/menu 3"> <submenu namber="3.1" name="Sub menu 3.1" path="/submenu 3.1"/> <submenu namber="3.2" name="Sub menu 3.2" path="/submenu 3.2"/> <submenu namber="3.3" name="Sub menu 3.3" path="/submenu 3.3"/> </menu> </start> </content> </node> <node> <category> <id>id2<id> </category> <content> <start namber="1" name="Start 1" path="/start 1"> <menu namber="1" name="Menu 1" path="/menu 1"> <submenu namber="1.1" name="Sub menu 1.1" path="/submenu 1.1"/> <submenu namber="1.2" name="Sub menu 1.2" path="/submenu 1.2"/> </menu> </start> <start namber="2" name="Start 2" path="/start 2"> <menu namber="2" name="Menu 2" path="/menu 2"> <submenu namber="2.1" name="Sub menu 2.1" path="/submenu 2.1"/> <submenu namber="2.2" name="Sub menu 2.2" path="/submenu 2.2"> <item namber="2.2.1" name="Item menu 2.2.1" path="/itemmenu 2.2.1"/> <item namber="2.2.2" name="Item menu 2.2.2" path="/itemmenu 2.2.2"/> </submenu> </menu> <menu namber="3" name="Menu 3" path="/menu 3"> <submenu namber="3.1" name="Sub menu 3.1" path="/submenu 3.1"/> <submenu namber="3.2" name="Sub menu 3.2" path="/submenu 3.2"/> <submenu namber="3.3" name="Sub menu 3.3" path="/submenu 3.3"/> </menu> </start> </content> </node> <node> <category> <id>id3<id> </category> <content> <start namber="1" name="Start 1" path="/start 1"> <menu namber="1" name="Menu 1" path="/menu 1"> <submenu namber="1.1" name="Sub menu 1.1" path="/submenu 1.1"/> <submenu namber="1.2" name="Sub menu 1.2" path="/submenu 1.2"/> </menu> </start> <start namber="2" name="Start 2" path="/start 2"> <menu namber="2" name="Menu 2" path="/menu 2"> <submenu namber="2.1" name="Sub menu 2.1" path="/submenu 2.1"/> <submenu namber="2.2" name="Sub menu 2.2" path="/submenu 2.2"> <item namber="2.2.1" name="Item menu 2.2.1" path="/itemmenu 2.2.1"/> <item namber="2.2.2" name="Item menu 2.2.2" path="/itemmenu 2.2.2"/> </submenu> </menu> <menu namber="3" name="Menu 3" path="/menu 3"> <submenu namber="3.1" name="Sub menu 3.1" path="/submenu 3.1"/> <submenu namber="3.2" name="Sub menu 3.2" path="/submenu 3.2"/> <submenu namber="3.3" name="Sub menu 3.3" path="/submenu 3.3"/> </menu> </start> </content> </node> </root>
|
Для трансформации xsl Код | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" />
<xsl:template match="root"> <ul> <xsl:apply-templates select="content"/> </ul> </xsl:template> <xsl:template match="start"> <li> <a href="{@path}"> <xsl:value-of select="@name"/> </a> </li> <ul> <xsl:apply-templates select="menu"/> </ul> </xsl:template> <xsl:template match="start/menu"> <li> <a href="{@path}"> <xsl:value-of select="@name"/> </a> </li> <ul> <xsl:apply-templates select="submenu"/> </ul> </xsl:template> <xsl:template match="menu/submenu"> <li> <a href="{@path}"> <xsl:value-of select="@name"/> </a> </li> <xsl:if test="item"> <ul> <xsl:apply-templates select="item"/> </ul> </xsl:if> </xsl:template> <xsl:template match="submenu/item"> <li> <a href="{@path}"> <xsl:value-of select="@name"/> </a> </li> </xsl:template> </xsl:stylesheet>
|
Этот xsl обрабатывает весь xml, а мне нужно тоько часть <content> ... </content> с условием что id='id2' С неделю не могу найти решение. Подскажите как это сожно сделать. За ранее спасибо.
|