2012-10-24 185 views
1

我试图写一个xslt模板匹配,它会选择所有不是item =“toy”的产品。下面是我的代码,但它不工作,我可以知道什么可能是错误?xml过滤属性

<color> 
    <xsl:apply-templates select="//product/@item[not(.='toy')]"> 
    </color> 
+0

也许这是一个命名空间的问题? –

回答

1

有许多与你的XML和XSLT的问题,虽然有些人可能是拼写错误,当你创建你的问题。您的XML缺少xsi的名称空间声明,并且您的应用程序模板使用双引号而不是单引号。它也没有关闭。

然而,真正的问题是,你说你看选择产品节点,但您的应用模板实际上是试图选择实际项目属性。

试试这个

<xsl:apply-templates select="//product[not(@xsi:item='toy')]" /> 

或者,也许这

<xsl:apply-templates select="//product[@xsi:item!='toy']" /> 
+0

已经在你的方式上测试过了,的名称空间问题仍然存在。 – pinkele123

+0

好吧,我发现这个问题,我忘了声明我的新模板match.thanks的前缀! – pinkele123

1

试着用单引号:

<xsl:apply-templates select="//product/@xsi:item[not(.='toy')]">