Bun*_*bit 5 html xml xslt indentation
我想在html页面中显示缩进的XML,<code></code>
我从javascript函数获取XML
new XMLSerializer()).serializeToString(newXMLDoc)
这给了我无意的XML字符串.
我能想到的一种方法是使用<ul>
和<li>
但有更好的方法吗?
在这种情况下,XSLT可以帮助我(对不起,我不太了解XSLT
).如果是,我需要在html文档中或在xmlString
我附加到<code></code>
标记的XSLT样式表中附加XSLT样式表.
它只是一个客户端应用程序我不能在服务器端做任何事情.
更新:我也替换<和>与的xmlString <
并且>
我还可以使用XSLT?
即使在应用了Dimitre Novatchev给出的XSLT之后,我也没有得到缩进文本,虽然我可以看到XML在使用SAXON解析器kernow应用XSLT时缩进但是当我在我的javascript代码中执行它时我得到了相同的缩进码.
//var xslt contains the XSLT provided by Dimitre Novatchev as string
//var XMLDoc is the XMLDocument object to be transformed
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
newXMLDoc = xsltProcessor.transformToDocument(xml,document);
//This is how I am converting the transformed XML to string
return (new XMLSerializer()).serializeToString(newXMLDoc)
Run Code Online (Sandbox Code Playgroud)
我建议您使用服务器端代码执行此操作,并将HTML格式的XML发送到您的客户端.是的,XSLT可以帮到你.但是您应该在服务器上对 XML进行HTML编码.
但请注意,如果要删除\n
文档中的标记(换行符)和其他空格字符(如空格,制表符等),则需要搜索客户端文档格式化程序或类似内容的内容. .写这样的东西绝不是一件容易的事.
您还可以使用语法高亮显示器来处理XML.这里可以找到一个很好的例子.然后你可以简单地使用:
<pre class='brush: xml;'>
// XML goes here.
</pre>
Run Code Online (Sandbox Code Playgroud)
您可以分两步执行此操作:
首先,只需使用身份转换和指令<xsl:output indent="yes"/>
处理XML 文档:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
当将此转换应用于任何 XML 文档(例如此文档)时:
<root><node/></root>
Run Code Online (Sandbox Code Playgroud)
大多数 XSLT 处理器(.NET XslCompiledTransform、Saxon 6.5.4 和 Saxon 9.0.0.2、AltovaXML)都会产生所需的结果:
<root>
<node />
</root>
Run Code Online (Sandbox Code Playgroud)
第二步是对结果执行字符串替换操作,以便将任何<
字符替换为<
字符串。
如果您想要更高级的格式显示,请查看XPath Visualizer如何使用 XSLT 实现此目的。
归档时间: |
|
查看次数: |
32133 次 |
最近记录: |