2013-02-07 7 views
0

Я нуждаясь немного помочь с фильтрацией мой XML основано на свойствеXSLT Фильтр по недвижимости

У меня есть XML в следующем формате:

<?xml version="1.0" encoding="utf-8" ?> 
<root id="-1"> 
    <LandingPage id="1067" parentID="1050" level="2" 
     writerID="0" creatorID="0" nodeType="1066" template="1073" 
     sortOrder="0" createDate="2013-02-04T14:29:39" 
     updateDate="2013-02-07T11:08:27" nodeName="About" 
     urlName="about" writerName="Pete" creatorName="Pete" 
     path="-1,1050,1067" isDoc=""> 
     <hideInNavigation>0</hideInNavigation> 
    </LandingPage> 
</root> 

Что мне нужно сделать, это фильтровать эти элементы где hideInNavigation = 0

Я попытался следующие:

[@isDoc and @hideInNavigation ='0'] 

(я нужен @isDoc атрибут тоже), но понял, что это будет работать только если hideInNavigation был атрибутом LandingPage тега, поэтому я попытался

value['hideInNavigation'='0'] 

, но это, похоже, не делать ничего, либо. После долгих поисков ответа, я не придумал ничего так было интересно, если это возможно

+1

'[@isDoc и hideInNavigation = '0'] '- вам просто нужно удалить' @ 'потому, что 'hideInNavigation' - это дочерний элемент, а не атрибут. –

ответ

1

Предположива текущего контекста было <root> элемента, вы можете выбрать LandingPages с hideInNavigation = 0 с:

LandingPage[hideInNavigation = '0'] 

Если вы поделитесь своим XSLT, я дам вам более конкретные рекомендации о том, как внести изменения в этот конкретный случай.

И был ли тест @isDoc в вашем первом примере чем-то, что вы хотели? Вы хотите отфильтровать LandingPages, которые имеют атрибут isDoc и значение hideInNavigation 0?

+0

Привет, да, мне нужен атрибут isDoc, поэтому я попробовал * [@ isDoc и hideInNavigation = '0'], и это не сработает – Pete

+0

В таком случае, пожалуйста, покажите нам свой XSLT? По крайней мере, '', который содержит эту логику и, возможно, немного больше. – JLRishe

+0

это то, что захватывает страницы: '' - это работает отлично, но когда я пытаюсь добавить что-нибудь, что нужно сделать с помощью навигации скрыть, он не возвращает никаких результатов. – Pete

1

'hideInNavigation'='0' сравнивает две строки 'hideInNavigation' и '0', которые гарантированно будут отличаться.

В контексте root LandingPage[hideInNavigation=0] будет соответствовать элементу LandingPage в вашем примере.

0

Это XPath вернуть все LandingPage с isDoc атрибут пустым и hideInNavigation содержание элемент '0'

//LandingPage[@isDoc="" and hideInNavigation='0'] 
Смежные вопросы