我有以下XSLT:
<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>
在“身体”中,我想提出以下文字:
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/>
现在,当我将其插入XSLT时,<BR/>
一直出现。我希望它们被换行替换。
我期望的输出是:
Beste,
Dit是een automatische mail m.b.t.在MyRiziv voor de。的注册 groersing'{0}'符合RIZIV-nummer {1}:
{0}和{1}将替换为实际值。
我使用以下C#代码进行转换:
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();
任何人都可以帮助我吗?
答案 0 :(得分:0)
使用apply-template
代替value-of
代替正文,以便您可以在输出中处理BR
。
试试这个:
<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:copy>
</xsl:template>
<xsl:template match="BR">
<xsl:text>
</xsl:text>
</xsl:template>
上的转化