2016-11-22 4 views
0

Ich versuchte einen Code in der XSLT, es kommt nur in der Ausgabe korrekt. Aber kommen als zweimal,Element Inhalt kommt zweimal in der Ausgabe xml

XML-Eingabedatei ist:

<?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 Ich verwendet:

<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> 

Erste ouput ist:

<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 

> 

Ich brauche das Ausgangselement kommen an Einmal. Bitte führen Sie den XSLT-Code aus. Danke

+0

geben Sie Ihre Eingabe XML – ScanQR

+0

Ich bearbeitet @ TechBreak. Bitte schauen Sie in diese – User501

+0

Ich würde gut gebildet und gültig xml – ScanQR

Antwort

0

Ihr OR '|' Bedingung, um die Dinge zweimal auszuführen.

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

Es ist immer besser, und empfahl Trennung zu haben Bedenken.

Sie müssen zuerst mit/topic (root) übereinstimmen, um loszulegen und dann separate Vorlage aufzurufen.

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

Danke. Seine Arbeit – User501

+0

@BopathyS froh, zu helfen, bitte akzeptieren upvote :) – ScanQR

+0

kann ich nicht upvote. Sein Sprichwort 15 Reputation braucht dafür – User501