2011-09-28 20 views
0

鉴于路径/XML/Staff/Content/ContentXML/StaffProfile/Role是正确的,并且我有5 /XML/Staff只有一名工作人员以“合作伙伴”这个XPath有什么问题?

为什么这场比赛的所有5名工作人员的角色?

<xsl:apply-templates select="/XML/Staff[Content/ContentXML/StaffProfile/Role='Partner']" mode="List"/> 
+0

是角色的属性或元素? –

+0

角色是一个元素 – johnwards

+0

然后你需要执行'/ text()'来选择'Role'的文本节点,因为'Role'元素本身不等于字符串''Partner'';正如我在下面回答的那样。 –

回答

2

我还没有看到你的XML(你应该张贴完整性),但我认为Role是一个XML元素,如果是这样的情况下,相对于一个字符串将无法正常工作。试试这个:

<xsl:apply-templates 
    select="/XML/Staff[Content/ContentXML/StaffProfile/Role/text()='Partner']" 
    mode="List" /> 

如果Role是一个属性,你需要这样做:

<xsl:apply-templates 
    select="/XML/Staff[Content/ContentXML/StaffProfile/@Role='Partner']" 
    mode="List" /> 
+0

在http://www.mizar.dk/XPath/Default.aspx进行测试,当我回来时,答案正在等待:) –

+1

谢谢你们!我已经离开了一年的XML,所以text()完全滑落了我的心灵!我会在早上确认并接受:) – johnwards

+0

嗨,大家好,这是我的一个错误。工作人员元素是单数,复数是工作人员名单模板内的“内容”,它与“内容”上的匹配是我将测试和它的工作原理。我不需要执行它所用的text()函数。 – johnwards