Счетчик XSLT в xpath - PullRequest
       2

Счетчик XSLT в xpath

0 голосов
/ 14 мая 2019

Мне нужно заполнить атрибут «code» атрибута XML значением из Container / Patient / Races / Race [number] / Code.Я не могу получить атрибут для заполнения значением.Смотрите XML и XSLT ниже.

Я пробовал различные сценарии тестирования с https://www.freeformatter.com/xsl-transformer.html

    <?xml version="1.0" encoding="UTF-8"?>
    <Container>
      <Patient>
        <Races>
          <Race>
            <Code>2106-3</Code>
          </Race>
          <Race>
            <Code>2106-9</Code>
          </Race>
        </Races>
     </Patient>
    </Container>


    <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sdtc="urn:hl7-org:sdtc">
      <xsl:template match="/">
        <raceCode code="{Container/Patient/Races/Race[1]/Code}" />
          <xsl:for-each select="Container/Patient/Races/Race[position()>1]">
          <xsl:variable name="pos" select="position()"/>
          <sdtc:raceCode code="{Container/Patient/Races/Race[$pos]/Code}" />
      </xsl:for-each>
      </xsl:template>
    </xsl:stylesheet>

Вот что выводит:

     <raceCode xmlns:sdtc="urn:hl7-org:sdtc" code="2106-3"/>
     <sdtc:raceCode xmlns:sdtc="urn:hl7-org:sdtc" code=""/>

, но я хочу следующее:

    <raceCode xmlns:sdtc="urn:hl7-org:sdtc" code="2106-3"/>
    <sdtc:raceCode xmlns:sdtc="urn:hl7-org:sdtc" code="2106-9"/>

1 Ответ

1 голос
/ 14 мая 2019

Когда вы делаете:

 <xsl:for-each select="Container/Patient/Races/Race[position()>1]">

, вы попадаете в контекст Race.Из этого контекста выражение:

Container/Patient/Races/Race[$pos]/Code

ничего не выбирает.Вы бы получили другой результат, если бы изменили:

<sdtc:raceCode code="{Container/Patient/Races/Race[$pos]/Code}" />

, чтобы использовать абсолютный путь:

<sdtc:raceCode code="{/Container/Patient/Races/Race[position()>1][$pos]/Code}" />

, но на самом деле вы можете сделать это просто:

<sdtc:raceCode code="{Code}" />

и избавьтесь от переменной.

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