0

我正在为 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 专家。

非常感谢任何帮助。

谢谢

4

1 回答 1

3

Afor-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>
于 2012-02-28T12:09:51.010 回答