2017-12-19 10 views
-1

ich folgende XSLT haben:</BR> Wechsel in XSLT Newline

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:date="http://exslt.org/dates-and-times" 
exclude-result-prefixes="date"> 
<xsl:output method="html" omit-xml-declaration="yes"/> 
    <xsl:template match="//Mail"> 
    <html> 
     <body> 
     <p> 
     <xsl:value-of xml:space="preserve" select="body"/> 
     </p> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

In der "Körper" Ich habe den folgenden Text platzieren wollen:

Beste, <BR/><BR/> 
Dit is een automatische mail m.b.t. een registratie in MyRiziv voor de groepering '{0}' met RIZIV-nummer {1}:<BR/><BR/> 

Nun, wenn ich, dass in den XSLT einfügen Die <BR/> weiterhin erscheinen. Ich möchte, dass sie durch eine neue Zeile ersetzt werden.

Der Ausgang Ich würde erwarten:

Beste,

Dit is een automatische Mail M.B.T. Registrierung in MyRiziv für groereing '{0}' erfüllt RIZIV-Nummer {1}:

Die {0} und {1} werden durch tatsächliche Werte ersetzt.

Ich verwende den folgenden C# -Code um die Transformation zu tun:

XmlDocument xmlDoc = new XmlDocument(); 

     xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes")); 

     XmlNode rootNode = xmlDoc.CreateElement("Mail"); 

     XmlNode childElement = xmlDoc.CreateElement("salutation"); 
     childElement.InnerText = GetTranslation("Salutation"); 
     rootNode.AppendChild(childElement); 

     childElement = xmlDoc.CreateElement("body"); 
     switch (emailType) 
     { 
      case EmailType.GeneralDataUpdated: 
       childElement.InnerText = CreateGeneralDataUpdatedBody(newHci, oldHci, requestor); 
       break; 
     } 
     rootNode.AppendChild(childElement); 

XslCompiledTransform xsltTransformer = new XslCompiledTransform(); 

     using (XmlReader xsltRdr = XmlReader.Create(format)) 
     { 
      xsltTransformer.Load(xsltRdr); 
     } 

     xmlStream.Position = 0; 
     StringWriter results = new StringWriter(); 

     using (XmlReader xmlRdr = XmlReader.Create(xmlStream)) 
     { 
      xsltTransformer.Transform(xmlRdr, new XsltArgumentList(), results); 
     } 

     return results.ToString(); 

Kann mir jemand helfen?

+1

Es ist mir nicht klar, genau das, was HTML-Ausgabe erwartet. Können Sie Ihre erwartete Ausgabe in die Frage aufnehmen? –

+0

Was hält Sie davon ab, keine neuen Zeilen anstelle von '
' in der XSLT zu beginnen? – GSerg

+0

Sind Ihre '
' Tags tatsächlich in einem' ' Tag in Ihrer XML-Eingabe? Sie müssen Ihre Frage wirklich bearbeiten, um Ihre Eingabe zu zeigen. Vielen Dank. –

Antwort

0

Verwenden Sie apply-template anstelle von value-of für Körper, damit Sie BR in Ausgabe verarbeiten können.

Try this:

<xsl:template match="//Mail"> 
    <html> 
     <body> 
      <p> 
       <xsl:apply-templates select="body"/> 
      </p> 
     </body> 
    </html> 
</xsl:template> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"></xsl:apply-templates> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="BR"> 
    <xsl:text>&#xa;</xsl:text> 
</xsl:template> 

Transformation Siehe auf http://xsltransform.hikmatu.com/pPgCcoq

+0

Ich habe versucht, Ihre Lösung, aber ich bekomme immer noch das gleiche Ergebnis. Ich bekomme nicht die Newline und der BR wird immer noch angezeigt –

+0

@BartSchelkens, siehe Transformation auf http://xsltransform.hikmatu.com/pPgCcoq](http://xsltransform.hikmatu.com/pPgCcoq) – Rupesh

+0

Ich habe versucht es funktioniert aber nicht auf meinem Code.Erhalten Sie nicht die Zeilenumbrüche –