在XSLT中设置输出属性值

时间:2014-12-04 23:15:29

标签: xml xslt

我正在尝试使用xsl文件来收集数据并格式化XML文件。 最终的XML将使用数据集作为图表函数。 该应用程序要求格式如下:

<dataset seriesname="Discount" showValues="0" color="FDC12E" 
  parentYAxis="P" numberPrefix="E">
<set value="112" />
</dataset>

我想用我的xsl调用替换112:

<xsl:value-of select="//*[contains(@name,'D1 OEE')]"/>

但是,无论何时我将上述调用置于Set Value中,它都会失败。 我试图将它声明为变量并调用变量,但也失败了。

这是没有调用的完整xsl文件:

<xsl:stylesheet version="1.0"   
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" method="xml" version="1.0" 
  indent="yes"/> 
<xsl:template match="/">
<graph PYAxisName="Amount" SYAxisName="Quantity" shownames="1" 
  showvalues="0" showLegend="1" rotateNames="1" 
  formatNumberScale="1" decimalPrecision="2" 
  limitsDecimalPrecision="0" divLineDecimalPrecision="1" 
  formatNumber="1" chartTopMargin="15">
<categories>
<category name="Packing 1" hoverText="Packing Line 1" /> 
<category name="Packing 2" hoverText="Packing Line 2" /> 
<category name="Workshop" hoverText="Workshop" /> 
<category name="IT Dept" hoverText="IT Dept" /> 
<category name="Filler Room" hoverText="Filler Room" /> 
<category name="Dryer 1" hoverText="Dryer 1" /> 
<category name="Dryer 2" hoverText="Dryer 2" /> 
<category name="Milk Intake" hoverText="Milk Intake" /> 
<category name="Evap 1" hoverText="Evap 1" /> 
<category name="Evap 2" hoverText="Evap 2" />  
</categories>

<dataset seriesname="Amount" showValues="0" color="AFD8F8" 
  parentYAxis="P" numberPrefix="E">
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 

</dataset>

<dataset seriesname="Discount" showValues="0" color="FDC12E" 
  parentYAxis="P" numberPrefix="E">
<set value="123" />
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
<set value="123" /> 
</dataset>

</graph>

</xsl:template>
</xsl:stylesheet> 

这是输入XML的示例:

<Notification>
  <item name="NotificationName" 
    type="Standard">New Notification24</item>
  <item name="NotificationDescription" type="Standard" /> 
  <item name="NotificationState"    
    type="Standard">OutsideControl</item>
  <item name="StartTime" 
    type="Standard">12/4/2014 11:27:49 PM</item>
  <item name="EndTime" type="Standard">1/1/1970 12:00:00 AM</item>
  <item name="TriggerTime" 
    type="Standard">2014-12-04T23:27:49Z</item>
  <item name="Priority" type="Standard">Normal</item>
  <item name="State" type="Standard">OutsideControl</item>
  <item name="NotificationInstanceID" type="Standard">52</item>
  <item name="NotificationUniqueID" 
    type="Standard">b3cc2dd4-8fae-4384-b966-764fb9d9a077</item>
  <item name="\\ABT\Fusion\Test Chart|D1 OEE" 
    type="AFAttribute">94.59624</item>
  <item name="\\ABT\Fusion\Test Chart|D2 OEE" 
    type="AFAttribute">100</item>
  <item name="\\ABT\Fusion\Test Chart|XML" 
    type="AFAttribute">D:\Fusion\Charts\fusion.xsl</item>
</Notification>

上面的XML还没有我要解析的所有参数,但最终我希望将这些项目传递给Set Value。

1 个答案:

答案 0 :(得分:0)

尝试更换:

<set value="123" /> 

使用:

<set value="{//*[contains(@name,'D1 OEE')]}" /> 

或者最好:

<set value="{$myVar}" /> 

myVar定义为具有上述表达式的变量后。

请注意大括号表示使用属性值模板