2016-11-22 64 views
0

我在XSLT中尝试了一个代码,它只在输出中正确显示。但是,未来的两倍,元素内容在输出xml中出现两次

XML输入文件是:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE topic 
    PUBLIC "urn:pubid:com.saffron.doctypes:doctypes:dita:topic" "topic.dtd"> 
<topic> 
     <title class="- topic/title " outputclass="MLU">Non-Insulin Injections: Up Close and 
     Personal</title> 
<body> 
     <p class="- topic/p " outputclass="MLU_Code">W3333</p> 
     <p class="- topic/p " outputclass="MLU_Condition">Injections</p> 
     <p class="- topic/p " outputclass="MLU_Type">Select &amp; Reflect</p> 
</body> 
</topic> 

XSL我使用:

<xsl:template match="title[@outputclass='MLU'] | p[@outputclass='MLU_Code']"> 


    <trackingSettings> 
    <urlcode> 
    <xsl:value-of select="//p[@outputclass='MLU_Code']"/> 
    </urlcode> 
    <apiurl>http://mlucenter.com/like/api</apiurl> 
    </trackingSettings> 
    <page></page> 
    <xsl:apply-templates select="p[@outputclass='MLU_Code']"/> 
    <banner> 
    <enabled>true</enabled> 
    <text>  
    <xsl:value-of select="//title[@outputclass='MLU']"/> 
    </text></banner> 
    <xsl:apply-templates select="title[@outputclass='MLU']"/> 
    </xsl:template> 

获取输出继电器是:

<trackingSettings><urlcode>W3333</urlcode><apiurl>http://mlucenter.com/like/api</apiurl></trackingSettings> 
<page/> 
<banner><enabled>true</enabled> 
<text>Non-Insulin Injections: Up Close and Personal</text></banner> 
    <trackingSettings><urlcode>W3333</urlcode><apiurl>http://mlucenter.com/like/api</apiurl></trackingSettings> 
<page/> 
<banner><enabled>true</enabled> 
<text>Non-Insulin Injections: Up Close and Personal</text></banner 

> 

我需要的输出元素都在一旦。请指导该XSLT代码。谢谢

+0

提供您的输入XML – ScanQR

+0

我编辑了@TechBreak。请看这 – User501

+0

我需要格式正确和有效的xml – ScanQR

回答

0

您的OR'|'条件强迫两次运行的东西。

的xsl:模板匹配= “标题[@ OutputClass类= 'MLU'] | P [@ OutputClass类= 'MLU_Code']”>

它始终是更好,并建议具有分离关注。

您需要首先按/ topic(root)匹配才能开始,然后调用单独的模板。

<xsl:template match="/topic"> 
    <!-- invoke your separate templates--> 
</xsl:template> 
+0

谢谢。它的工作 – User501

+0

@BoopathyS很高兴帮助,请接受upvote :) – ScanQR

+0

我不能upvote。它说15声望需要 – User501