2014-12-04 85 views
0

我正在尝试使用xsl文件来收集数据并格式化XML文件。 最终的XML将为图表函数使用数据集。 应用程序需要的格式是这样的:在XSLT中设置输出属性值

<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')]"/> 

但只要我把设置值失败是在上述电话。 我试图将它声明为一个变量,并调用变量,但也失败了。

这是一个没有呼叫的完整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

如果你展示了更多的XSLT,而不仅仅是一行(理想情况下,一个小的,但完整的示例会有所帮助),这将有所帮助。如果您同时显示输入XML和您的预期输出,它也会有所帮助。谢谢! – 2014-12-04 23:20:21

回答

0

尝试更换:

<set value="123" /> 

与:

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

或优选:

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

myVar定义与上述表达式中的变量之后。

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

+0

非常感谢,我花了整整一天的时间试图弄清楚。我被确定但最终放弃了。 :) 感谢你的帮助。 – Aaron 2014-12-04 23:49:04

+0

这是一个不幸的人。它出现了很多。使用谷歌搜索或书籍索引很难找到一个你不知道的名字的编程结构。我认为答案是:在开始编码之前,花一整天的时间阅读合理的语言介绍,而不是在遇到问题时寻找解决方案。 – 2014-12-05 10:49:29