首先,我对 xslt 完全陌生。我有一个程序,它为我提供了一个具有以下布局的 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<Statistic>
<Elements>
<Element ElementName="A" Type="Element">
<ElementResult StatType="Mean"></ElementResult>
<ElementResult StatType="Reported">
<ResultValue>10</ResultValue>
</ElementResult>
</Element>
</Elements>
<Elements>
<Element ElementName="B" Type="Element">
<ElementResult StatType="Mean"></ElementResult>
<ElementResult StatType="Reported">
<ResultValue>5</ResultValue>
</ElementResult>
</Element>
</Elements>
<Elements>
<Element ElementName="C" Type="Element">
<ElementResult StatType="Mean"></ElementResult>
<ElementResult StatType="Reported">
<ResultValue>0.5</ResultValue>
</ElementResult>
</Element>
</Elements>
<Elements>
<Element ElementName="D" Type="Element">
<ElementResult StatType="Mean"></ElementResult>
<ElementResult StatType="Reported">
<ResultValue>0.0001</ResultValue>
</ElementResult>
</Element>
</Elements>
<Elements>
<Element ElementName="E" Type="Element">
<ElementResult StatType="Mean"></ElementResult>
<ElementResult StatType="Reported">
<ResultValue>0.1</ResultValue>
</ElementResult>
</Element>
</Elements>
</Statistic>
我想仅提取其他顺序的值。该程序允许我使用 xslt 样式表来转换输出。我的想法是在样式表中使用 nodelist,因为我想要提取的元素要多得多。这是我的代码:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
version="1.0">
<xsl:output method="text" />
<xsl:variable name="ElementArray">
<ElementItem Item="C" />
<ElementItem Item="D" />
<ElementItem Item="A" />
<ElementItem Item="B" />
<ElementItem Item="E" />
</xsl:variable>
<xsl:template match="/">
<xsl:for-each select="msxsl:node-set($ElementArray)/ElementItem">
<xsl:value-of select="@Item"/> <!-- This line works as excpected --> CDABE
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我现在的问题是,如何在下一行中使用@Item。
<xsl:value-of select="/Statistic/Elements/Element[@ElementName=***@Item must be included here, but how***]/ElementResult[@StatType='Reported']/ResultValue" />
<!-- This line should give in the end --> 0.5 0.0001 10 5 0.1
我希望有人知道我该如何做到这一点。
编辑:更正输出和 xml 文件。