我需要用Container / Patient / Races / Race [number] / Code中的值填充XML属性“ 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"/>
答案 0 :(得分:1)
当您这样做:
<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}" />
并处理该变量。