我使用此代码使用XSLT模板将XML转换为HTML:
string uri = Server.MapPath("~/template.xslt");
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(uri);
XDocument xml = new XDocument(new XElement("Root"));
StringBuilder builder = new StringBuilder();
XmlReader reader = xml.CreateReader();
XmlWriter writer = XmlWriter.Create(builder, xsl.OutputSettings);
xsl.Transform(reader, writer);
writer.Close();
Run Code Online (Sandbox Code Playgroud)
我的模板看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes" />
<xsl:template match="Root">
<html>
<head>...
Run Code Online (Sandbox Code Playgroud)
输出正确但它包含META标记.如何禁用转换,以便它不会生成META标记?
简短回答:
用途:
<xsl:output method="xml"/>
Run Code Online (Sandbox Code Playgroud)
这消除了任何添加的HTML标记<meta>.
与此同时,您可能难以实现某些元素的确切需要词汇表示.
在XSLT 2.0中,可以使用:
<xsl:output method="xhtml"/>
Run Code Online (Sandbox Code Playgroud)
输出 method="html" 的 XSLT 1.0 规范 (http://www.w3.org/TR/xslt#section-HTML-Output-Method) 要求如果结果中有 head 部分,则输出元元素树:
如果存在 HEAD 元素,则 html 输出方法应在 HEAD 元素的开始标记后立即添加一个 META 元素,指定实际使用的字符编码。
因此,XslCompiledTransform 执行 XSLT 处理器应执行的操作。如果您不想要 meta 元素,您将需要更详细地解释您到底想要什么样的输出,或者如果您想要 html 输出,为什么 meta 是一个问题。您当然可以使用输出方法=“xml”,这样您就不会获得元元素,但我不确定这种方式的序列化结果是否是您想要的“br”元素节点之类的东西。
| 归档时间: |
|
| 查看次数: |
4400 次 |
| 最近记录: |