Как использовать XSLT для получения значения строки в таблице - PullRequest
0 голосов
/ 13 апреля 2011

Мне нужна помощь в использовании xslt для извлечения значения строки из таблицы, используя другое значение строки.

У меня есть следующая таблица:

Employee       Manager
ABC           PQR
ABC           LMN
DEF           XYZ
IJK           XYZ

Сотрудник может принадлежать к нескольким отделам и может иметь более одного менеджера.

и xml для таблицы:

<List>
    <Mapping>
      <Employee>ABC</Employee>
      <Manager>PQR</Manager>
  </Mapping>
  <Mapping>
      <Employee>ABC</Employee>
      <Manager>LMN</Manager>
  </Mapping>
  <Mapping>
      <Employee>DEF</Employee>
      <Manager>XYZ</Manager>
  </Mapping>
  ...
</List>

Я получаю имя сотрудника из функции. Используя имя сотрудника в качестве ввода в XSLT, как мне найти имя менеджера сотрудника с помощью XSLT. Моим единственным выходным значением должно быть Имя менеджера, либо список, либо одно значение. Передавая имя сотрудника "ABC", я должен указать оба значения: "PQR" и "LMN" в качестве значений менеджера.

Спасибо KSR81

Ответы [ 2 ]

1 голос
/ 13 апреля 2011
<xsl:param name="empName" />

<xsl:template match="/">
    <xsl:for-each select="//Mapping[Employee = $empName]">
        <xsl:value-of select="Manager"/>
        <xsl:text> </xsl:text>
    </xsl:for-each>
</xsl:template>

Это выведет имя каждого менеджера для данного сотрудника, разделенное и завершенное пробелом.

Чтобы сделать это более эффективно, вы, вероятно, захотите использовать keys :

<xsl:param name="empName" />

<xsl:key name="mappingByEmployee" match="Mapping" use="Employee" />

<xsl:template match="/">
    <xsl:for-each select="key('mappingByEmployee', $empName)">
        <xsl:value-of select="Manager"/>
        <xsl:text> </xsl:text>
    </xsl:for-each>
</xsl:template>
0 голосов
/ 13 апреля 2011
   <xsl:for-each select="Mapping">
     <xsl:if test="Employee = "ABC"">
         <xsl:value-of select="manager"/>
     <xsl:if>
  </xsl:for-each>

Проверьте здесь для больше и работы с параметрами здесь ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...