我正在为Google Search Appliance创建新的XSLT,而且我遇到了一个我无法解决的问题。
我的search.xml具有以下结构:
<GSP>
<ENTOBRESULTS>
<OBRES>
<MODULE_RESULT>
<Field name="fullname">Dave Smith</Field>
<Field name="title">Job title</Field>
<Field name="telephonenumber">00000000</Field>
</MODULE_RESULT>
<MODULE_RESULT>
<Field name="fullname">John Smith</Field>
<Field name="title">Senior job title</Field>
<Field name="telephonenumber">00000001</Field>
</MODULE_RESULT>
</OBRES>
</ENTOBRESULTS>
</GSP>
我创建的XSLT如下所示:
<xsl:for-each select="/GSP/ENTOBRESULTS/OBRES/MODULE_RESULT">
<dt>
<strong><a href="#"><xsl:value-of select="/GSP/ENTOBRESULTS/OBRES/MODULE_RESULT/Field[@name='fullname']"/></a></strong><br/>
<em><xsl:value-of select="/GSP/ENTOBRESULTS/OBRES/MODULE_RESULT/Field[@name='title']"/></em>
</dt>
<dd><xsl:value-of select="/GSP/ENTOBRESULTS/OBRES/MODULE_RESULT/Field[@name='telephonenumber']"/></dd>
</xsl:for-each>
我看到的问题是结果以下列方式呈现:
<dt><strong><a href="#">Dave SmithJohnSmith</a></strong><br/><em>Job titleSenior job title</em></dt>
<dd>0000000000000001</dd>
在浏览器中将它们看起来像这样:
戴夫史密斯约翰史密斯职称高级职称
0000000000000001
任何人都可以帮我解决这个问题吗?我感觉这是一个非常基本的XSLT错误,而且我并不是真正的XSLT专家。
任何帮助都非常感激。
由于
答案 0 :(得分:3)
for-each
更改了上下文节点,因此在for-each
内部您应该分别使用相对表达式,例如。
<xsl:for-each select="/GSP/ENTOBRESULTS/OBRES/MODULE_RESULT">
<dt>
<strong><a href="#"><xsl:value-of select="Field[@name='fullname']"/></a></strong><br/>
<em><xsl:value-of select="Field[@name='title']"/></em>
</dt>
<dd><xsl:value-of select="Field[@name='telephonenumber']"/></dd>
</xsl:for-each>