XSLT过滤属性

时间:2013-02-07 16:07:11

标签: xslt filtering umbraco

我需要一点帮助,根据属性

过滤我的xml

我有以下格式的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属性),但意识到只有当hideInNavigationLandingPage标记的属性时我才会这样做,所以我试过

value['hideInNavigation'='0']

但这似乎也没有做任何事情。经过多次寻找答案,我没有想出任何东西,所以想知道是否可能

3 个答案:

答案 0 :(得分:1)

假设当前上下文是<root>元素,您可以选择带有hideInNavigation = 0的LandingPages:

LandingPage[hideInNavigation = '0']

如果您要分享您的XSLT,我会为您提供更具体的指导,说明如何针对此特定情况对其进行修改。

您的第一个示例中的@isDoc测试是否是您想要的?是否要过滤具有isDoc属性且hideInNavigation值为0的LandingPages?

答案 1 :(得分:1)

'hideInNavigation'='0'比较两个字符串'hideInNavigation''0',这些字符串保证不同。

在root的上下文中,LandingPage[hideInNavigation=0]将匹配示例中的LandingPage元素。

答案 2 :(得分:0)

此XPath返回所有LandingPage,其isDoc属性为空,hideInNavigation元素内容为'0'

//LandingPage[@isDoc="" and hideInNavigation='0']