|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
HunterNomad : 26 Новичок
|
Янв 26, 2012 16:16 |
|
|
Доброго времени суток.
У меня структура вся сайта будет храниться в 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> |
Для обработки всего xml написал (как мог) такой xslt
| Код: |
<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> |
Все отрабатывается, но возникла подзадача.
Выбрать только часть <content> ... </content> при условии id='id2'
Вот тут я и встрял.
Получается или все выбрать, или ничего.
Подскажите как правильно оформить xslt файл.
Спасибо за ранее. |
|
|
|
 |
Taky_ : 491 Бывалый
|
Янв 26, 2012 17:52 |
|
|
Поидее:
<xsl:template match="//content[id='id2']">
должно помочь. |
|
|
|
 |
Skipy : 4801 Я тут живу! Откуда: Москва, Россия
|
Янв 27, 2012 10:58 |
|
|
А я бы написал так: //node[category/id='id2']/content.
Писал навскидку, могу ошибаться. _________________ С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других! |
|
|
|
 |
HunterNomad : 26 Новичок
|
Янв 27, 2012 12:17 |
|
|
Спасибо, но увы не получилось.  |
|
|
|
 |
Taky_ : 491 Бывалый
|
Янв 27, 2012 13:17 |
|
|
Фактически в math мы указываем условие сопоставления. Язык - xPath.
http://allxml.h1.ru/articles/xpath.htm
Там есть пример:
| Код: |
| books/book[language='Russian']/name |
Выбор книги на русском языке. Может сопоставление с корнем немного не так проходит? |
|
|
|
 |
Skipy : 4801 Я тут живу! Откуда: Москва, Россия
|
Янв 27, 2012 14:23 |
|
|
Вопрос на засыпку автору. Вы этот xml прямо скопировали из рабочего файла? Ибо он даже не well-formed. _________________ С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других! |
|
|
|
 |
Skipy : 4801 Я тут живу! Откуда: Москва, Россия
|
Янв 27, 2012 14:30 |
|
|
| HunterNomad писал(а): |
Спасибо, но увы не получилось.  |
После исправления синтаксиса xml проверил:
| Код: |
| //node[category/id/text()='id2']/content |
Это выражение выбирает нужный узел content _________________ С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других! |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> XML |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|