привет У меня есть XML-документ сайта, который выглядит примерно такXSLT копирования из без детей
<pagenode title="home" url="~/" fornavbar="true">
<pagenode title="admin" url="~/admin" fornavbar="false">
<pagenode title="users" url="~/admin/users" fornavbar="false"/>
<pagenode title="events" url="~/admin/events" fornavbar="true"/>
</pagenode>
<pagenode title="catalog" url="~/catalog" fornavbar="true"/>
<pagenode title="contact us" url="~/contactus" fornavbar="false"/>
</pagenode>
Теперь я хочу, чтобы извлечь документ XML для навигационной панели, которая включает в себя все pagenodes, которые имеют fornavbar = правда. Как это может быть сделано?
ближайший я смог получить до сих пор было так:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="pagenode[@fornavbar='true']">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
проблема с этим состоит в том, что включает в себя все дети ничего совпавшие в навигационной панели
я только хочу, чтобы скопировать все атрибуты , не все дети
но если я попробовать
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="pagenode[@fornavbar='true']">
<pagenode title="{@title}" url="{@url}"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
то у меня есть 2 проблемы
- я мог бы впечатать каждый атрибут отдельно, и у меня есть довольно много на странице и Theyre склонны в конечном счете
- изменить теряет иерархию. все становится плоским один за другим
Я был бы признателен всем и любой помощи в этом вопросе.
спасибо!
EDIT: пример вывода, который ид нравится видеть
<pagenode title="home" url="~/" fornavbar="true">
<pagenode title="events" url="~/admin/events" fornavbar="true"/>
<pagenode title="catalog" url="~/catalog" fornavbar="true"/>
</pagenode>
Хороший вопрос, +1. См. Мой ответ для полного, но очень короткого решения, которое полностью использует самый фундаментальный шаблон проектирования XSLT. :) –