2014-06-17 75 views
-1

的XML呈現下,各種元件(標題1,標題2 ... EndUse1,Enduse2等)的陣列中的數據:如何獲得索引的XLS值?

<EUseSummary> 
    <Name>EUSummary</Name> 
    <Title1 index="1">Proposed</Title1> 
    <Title1 index="2">Proposed</Title1> 
    <Title1 index="3">Proposed</Title1> 
    <Title1 index="4">Standard</Title1> 
    <Title1 index="5">Standard</Title1> 
    <Title1 index="6">Standard</Title1> 
    <Title1 index="7">Compliance</Title1> 
    <Title1 index="8">CAHP</Title1> 
    <Title2 index="1">Design</Title2> 
    <Title2 index="2">Design</Title2> 
    <Title2 index="3">Design</Title2> 
    <Title2 index="4">Design</Title2> 
    <Title2 index="5">Design</Title2> 
    <Title2 index="6">Design</Title2> 
    <Title2 index="7">Margin</Title2> 
    <Title2 index="8">Design</Title2> 
    <Title3 index="0">End Use</Title3> 
    <Title3 index="1">Site (kWh)</Title3> 
    <Title3 index="2">Site (therms)</Title3> 
    <Title3 index="3">(kTDV/ft²-yr)</Title3> 
    <Title3 index="4">Site (kWh)</Title3> 
    <Title3 index="5">Site (therms)</Title3> 
    <Title3 index="6">(kTDV/ft²-yr)</Title3> 
    <Title3 index="7">(kTDV/ft²-yr)</Title3> 
    <Title3 index="8">(kTDV/ft²-yr)</Title3> 
    <Enduse1 index="0">Space Heating</Enduse1> 
    <Enduse1 index="1">246</Enduse1> 
    <Enduse1 index="2">286.5</Enduse1> 
    <Enduse1 index="3">21.04</Enduse1> 
    <Enduse1 index="4">255</Enduse1> 
    <Enduse1 index="5">296.8</Enduse1> 
    <Enduse1 index="6">21.80</Enduse1> 
    <Enduse1 index="7">0.76</Enduse1> 
    <Enduse1 index="8">23.18</Enduse1> 
    <Enduse2 index="0">Space Cooling</Enduse2> 
    <Enduse2 index="1">706</Enduse2> 
    <Enduse2 index="3">18.02</Enduse2> 
    <Enduse2 index="4">696</Enduse2> 
    <Enduse2 index="6">17.62</Enduse2> 
    <Enduse2 index="7">-0.40</Enduse2> 
    <Enduse2 index="8">34.17</Enduse2> 
    <Enduse3 index="0">IAQ Ventilation</Enduse3> 
    <Enduse3 index="1">141</Enduse3> 
    <Enduse3 index="3">1.11</Enduse3> 
    <Enduse3 index="4">141</Enduse3> 
    <Enduse3 index="6">1.11</Enduse3> 
    <Enduse3 index="7">0.00</Enduse3> 
    <Enduse3 index="8">1.11</Enduse3> 
    <Enduse4 index="0">Other HVAC</Enduse4> 
    <Enduse4 index="3">0.00</Enduse4> 
    <Enduse4 index="6">0.00</Enduse4> 
    <Enduse4 index="7">0.00</Enduse4> 
    <Enduse4 index="8">0.00</Enduse4> 
    <Enduse5 index="0">Water Heating</Enduse5> 
    <Enduse5 index="2">193.7</Enduse5> 
    <Enduse5 index="3">11.52</Enduse5> 
    <Enduse5 index="5">193.7</Enduse5> 
    <Enduse5 index="6">11.52</Enduse5> 
    <Enduse5 index="7">0.00</Enduse5> 
    <Enduse5 index="8">11.52</Enduse5> 
    <Enduse6 index="0">Inside Lighting</Enduse6> 
    <Enduse6 index="1">1,300</Enduse6> 
    <Enduse6 index="3">10.80</Enduse6> 
    <Enduse6 index="4">1,300</Enduse6> 
    <Enduse6 index="6">10.80</Enduse6> 
    <Enduse6 index="7">0.00</Enduse6> 
    <Enduse6 index="8">10.80</Enduse6> 
    <Enduse7 index="0">Appl. &amp; Cooking</Enduse7> 
    <Enduse7 index="1">1,023</Enduse7> 
    <Enduse7 index="2">60.4</Enduse7> 
    <Enduse7 index="3">11.72</Enduse7> 
    <Enduse7 index="4">1,023</Enduse7> 
    <Enduse7 index="5">60.4</Enduse7> 
    <Enduse7 index="6">11.72</Enduse7> 
    <Enduse7 index="7">0.00</Enduse7> 
    <Enduse7 index="8">80.78</Enduse7> 
    <Enduse8 index="0">Plug Loads</Enduse8> 
    <Enduse8 index="1">2,630</Enduse8> 
    <Enduse8 index="3">21.07</Enduse8> 
    <Enduse8 index="4">2,630</Enduse8> 
    <Enduse8 index="6">21.07</Enduse8> 
    <Enduse8 index="7">0.00</Enduse8> 
    <Enduse8 index="8">21.07</Enduse8> 
    <Enduse9 index="0">Exterior</Enduse9> 
    <Enduse9 index="1">161</Enduse9> 
    <Enduse9 index="3">1.24</Enduse9> 
    <Enduse9 index="4">161</Enduse9> 
    <Enduse9 index="6">1.24</Enduse9> 
    <Enduse9 index="7">0.00</Enduse9> 
    <Enduse9 index="8">1.24</Enduse9> 
    <Enduse10 index="0">TOTAL</Enduse10> 
    <Enduse10 index="1">6,208</Enduse10> 
    <Enduse10 index="2">540.6</Enduse10> 
    <Enduse10 index="3">93.52</Enduse10> 
    <Enduse10 index="4">6,206</Enduse10> 
    <Enduse10 index="5">550.8</Enduse10> 
    <Enduse10 index="6">96.88</Enduse10> 
    <Enduse10 index="7">3.36</Enduse10> 
    <Enduse10 index="8">96.88</Enduse10> 
    <Enduse11 index="0">Compliance Total</Enduse11> 
    <Enduse11 index="1">1,094</Enduse11> 
    <Enduse11 index="2">480.2</Enduse11> 
    <Enduse11 index="3">48.69</Enduse11> 
    <Enduse11 index="4">1,092</Enduse11> 
    <Enduse11 index="5">490.5</Enduse11> 
    <Enduse11 index="6">52.05</Enduse11> 
    <Enduse11 index="7">3.36</Enduse11> 
    <Enduse11 index="8">52.05</Enduse11> 
    <Enduse13 index="0">PV Credit</Enduse13> 
    <Enduse13 index="3">-3.00</Enduse13> 
    <Enduse13 index="6"> </Enduse13> 
    <Enduse13 index="7">3.00</Enduse13> 

據我可以得到(使用XSLT 1.0)的XSL:

<xsl:value-of select="/SDDXML/Model/Proj/EUseSummary/Title1/descendant-or-self::text()"/ 

我想讓XLS爲所有EUseSummary元素返回索引位置8的值:Title1,Title2,Title3,Enduse1,Enduse2,Enduse3 ... Enduse13。

+1

的問題是不明確的。沒有「Title2,Title3,Enduse1等」。在你的輸入。請參閱:http://stackoverflow.com/help/mcve - 同時請註明XSLT 1.0或2.0。 –

+0

XSLT 1.0。我編輯了XML以澄清。 – user3750335

回答

2

如果輸入了良好的形成(即,如果它有一個</EUseSummary>結束標記),然後將下面的樣式表:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" encoding="UTF-8"/> 

<xsl:template match="/"> 
    <xsl:for-each select="EUseSummary/*[@index=8]"> 
     <xsl:value-of select="."/> 
     <xsl:if test="position()!=last()">, </xsl:if> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

將返回:

CAHP, Design, (kTDV/ft²-yr), 23.18, 34.17, 1.11, 0.00, 11.52, 10.80, 80.78, 21.07, 1.24, 96.88, 52.05 
+0

我可以在這裏問一個跟進問題嗎?然後,我怎樣才能將索引的特定值傳遞給fo:block元素?我對格式不正確表示歉意。 – user3750335

+0

@ user3750335我不知道。我建議你編輯你的問題(或發佈一個新問題),幷包括你期望得到的確切結果(如代碼)。 –