Значение XLST элемента с использованием XPATH и имени текущего атрибута - PullRequest
1 голос
/ 15 декабря 2011


Я пытаюсь создать XSL-преобразование. Мой XML выглядит так:

<DataRepository>
  <Contents>
    <Content uniqueID="1" name="some.name" ...>
      <Description>Content description</Description>
    </Content>
    ...
  </Contents>
  <Tests>
    <Test>
      <Content uniqueID="1"/>
      <Content uniqueID="2"/>
      <Content uniqueID="N">
    </Test>
    ...
  </Tests>
</DataRepository>

В преобразованном документе я хочу представить содержимое теста, показывая описание содержимого.
Ответственный за это фрагмент кода XLS:

<xsl:for-each select="DataRepository/Tests/Test">
  <h2><u><xsl:value-of select="@name"/></u></h2>
    <ol>
      <xsl:for-each select="Content">
        <li><xsl:value-of select="//DataRepository/Contents/
                 Content[@uniqueID='{@uniqueID}']/Description"/></li>
      </xsl:for-each>
    </ol>
  </xsl:for-each>

Я получаю пустые строки в выводе без описания. В случае, если я заменю {@uniqueID} на фактический номер, он работает.

Не могли бы вы подсказать, что я делаю не так?

1 Ответ

3 голосов
/ 15 декабря 2011

Используйте функцию current() для ссылки на атрибут uniqueID текущего узла:

<xsl:value-of select="/DataRepository/Contents/
             Content[@uniqueID=current()/@uniqueID]/Description"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...