我提出一个表,其中的标题名称是从头元件,并从属性的reportdata元件获得的数据。但是,我不知道属性的名称:Value1,Value2,等..提前。生成属性的名称并将其存储在报告节点内的列元素内部的FieldName属性中。的XPath如何创建的属性的路径动态
我一直没能找到一种方法,使使用生成的FIELDNAMES和reportdata获得对应的属性值的XPath。有任何想法吗?或者这是不可能的。
以下是XML:
<report>
<reportparameters>
<header Order="1" HeaderName="Day_1" />
<header Order="2" HeaderName="Day_2" />
<header Order="3" HeaderName="Day_3" />
<header Order="4" HeaderName="Total" />
<reportnode ColumnCount="4">
<column Order="1" FieldName="Value1" />
<column Order="2" FieldName="Value2" />
<column Order="3" FieldName="Value3" />
<column Order="4" FieldName="TotalValue" />
</reportnode>
</reportparameters>
<reportdata Value1="0" Value2="0" Value3="0" TotalValue="0"/>
<reportdata Value1="0" Value2="0" Value3="0" TotalValue="0"/>
<reportdata Value1="0" Value2="0" Value3="0" TotalValue="0"/>
<reportdata Value1="0" Value2="0" Value3="0" TotalValue="0"/>
<reportdata Value1="0" Value2="0" Value3="0" TotalValue="0"/>
</report>
的XSL尝试:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no"/>
<xsl:template match="/">
<report>
<row>
<xsl:for-each select="/report/reportparameters/header">
<xsl:variable name="columnCounter" select="position()"/>
<xsl:element name="{./@HeaderName}">
<xsl:for-each select="/report/reportdata">
<xsl:value-of select="@{../reportparameters/reportnode/column[@Order=$columnCounter+1]/@FieldName}"/>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</row>
</report>
</xsl:template>
</xsl:stylesheet>
什么是你正在试图将结果呢?请使用不同的单元格值,以便我们可以了解转换的逻辑。 –
@ michael.hor257k我一定会确保下次发布我想要的结果。幸运的是,如果没有它,你仍然能够帮助我! – FreakinRocket