我有以下XML:
<StatsContainer>
<Variant1>0</Variant1>
<Variant2>0.5</Variant2>
<Variant3>1.2</Variant3>
<Variant4>4.1</Variant4>
<Variant5>93.9</Variant5>
<Variant6>0.3</Variant6>
<Variant7>0</Variant7>
<Variant8>0</Variant8>
<Variant9>0</Variant9>
<Variant10>0</Variant10>
<Variant11>0</Variant11>
<Variant12>0</Variant12>
<GlobalVariant1>4.6</GlobalVariant1>
<GlobalVariant2>40.4</GlobalVariant2>
<GlobalVariant3>13.8</GlobalVariant3>
<GlobalVariant4>2.8</GlobalVariant4>
<GlobalVariant5>35.6</GlobalVariant5>
<GlobalVariant6>2.8</GlobalVariant6>
<GlobalVariant7>0</GlobalVariant7>
<GlobalVariant8>0</GlobalVariant8>
<GlobalVariant9>0</GlobalVariant9>
<GlobalVariant10>0</GlobalVariant10>
<GlobalVariant11>0</GlobalVariant11>
<GlobalVariant12>0</GlobalVariant12>
<MosaicType>Boligtype</MosaicType>
<OverRepresentedVariant>5</OverRepresentedVariant>
</StatsContainer>
如您所见,我在“OverRepresentedVariant”标签中有一个数字。这个数字可能会不时变化。我需要的是使用正确的数字来获取“Variant”标签。在上面的例子中,我需要从“Variant5”-tag(93.9)中获取值。明天“OverRepresentedVariant”值可能已经改为3,这意味着我现在应该抓住“Variant3”值。
所以这就是我得到的。我有一个名为$btOver
的变量,它包含上面的XML。我还有一个名为$btId
的变量,其中包含“OverRepresentedVariant”值,如下所示:
<xsl:variable name="btId" select="$btOver/OverRepresentedVariant" />
所以现在我需要帮助找到具有正确ID的Variant-tags。我需要的标签将始终命名为“Variant”,后跟id。那么我怎样才能获得正确的标签?
答案 0 :(得分:3)
StatsContainer/*[name() = concat('Variant', ../OverRepresentedVariant)]PS:你真的应该考虑改变XML。将数据作为元素名称的一部分是一个坏的想法。这就是它应该是这样的:
<StatsContainer>
<Variant id="1">0</Variant>
<!-- ... -->
<Variant id="12">0</Variant>
<GlobalVariant id="1">4.6</GlobalVariant>
<!-- ... -->
<GlobalVariant id="12">0</GlobalVariant>
<MosaicType>Boligtype</MosaicType>
<OverRepresentedVariant>5</OverRepresentedVariant>
</StatsContainer>
然后XPath将是
StatsContainer/Variant[@id = ../OverRepresentedVariant]