xsl for-each выводит все данные, а не по одному за раз - PullRequest
0 голосов
/ 30 января 2020

Хочу предварить это, сказав, что у меня 0 опыта работы с XML / XSL, и я не знаком с терминологией, которую я должен использовать.

Я работаю над кодом, который использует файл xml. Файл xml (я полагаю, важные части) отформатирован примерно так:

<All> 
  <Cases> 
    <Case> 
      <extension-fields> 
        <extension-field display-text="whatever"> 
          <value>X</value> 
        </extension-field> 
      </extension-fields> 
    </Case>  
    <Case> 
      <extension-fields> 
        <extension-field display-text="whatever"> 
          <value>Y</value> 
        </extension-field> 
      </extension-fields> 
    </Case> 
  </Cases> 
</All>

Каждый случай имеет свой собственный набор полей расширения.

Я пытаюсь получить значение отдельного поля расширения, где display-text = 'what' для каждого из моих дел. Я написал следующее:

<xsl:for-each select="All/Cases/Case">
  <w:tc> 
    <w:tcPr> 
      <w:tcW w:w="{$Col2}" w:type="dxa"/>  
      <w:vAlign w:val="top"/> 
    </w:tcPr>  
    <w:p> 
      <w:pPr> 
        <w:jc w:val="right"/> 
      </w:pPr>  
      <w:r> 
        <w:t> 
          <xsl:value-of select="/All/Cases/Case/extension-fields/extension-field[@display-text = 'whatever']/value"/> 
        </w:t> 
      </w:r> 
    </w:p> 
  </w:tc>
</xsl:for-each>

(это где-то в таблице, и я не был уверен, все ли это актуально, поэтому я просто показал всю часть, которая у меня есть). проблема с)

Я ожидаю увидеть индивидуальные значения каждого дела в выходных данных (поэтому у каждого номера дела будут свои значения X и Y), но вместо этого я вижу, что у каждого дела есть оба значения XY рядом с ним. Теперь, я думаю, что происходит для каждого случая по делу, каждый вопрос проходит по всей части, а не по отдельному случаю, но мне сложно понять, почему.

1 Ответ

0 голосов
/ 30 января 2020

Теперь, я думаю, что происходит для каждого случая, каждый вопрос проходит по всей части, а не по отдельному случаю, но мне сложно понять, почему.

Ваш контекст в xsl:for-each шаблоне содержимого инструкции является элементом Case, но ваша инструкция xsl:value-of использует абсолютный путь к местоположению (/All/Cases/Case/extension-fields/extension-field[@display-text = 'whatever']/value). Это всегда будет иметь одинаковый результат для любого входного источника, не учитывая текущий контекстный узел, потому что ... это абсолютный путь к местоположению .

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