簡體   English   中英

如何在HTML代碼標記內顯示縮進的XML

[英]How can i display indented XML inside HTML code tag

我想在<code></code>里面的html頁面中顯示縮進的XML我從javascript函數獲取XML

new XMLSerializer()).serializeToString(newXMLDoc)

這給了我無意的XML字符串。

我能想到的一種方法是使用<ul><li>

但有更好的方法嗎?

在這種情況下,XSLT可以幫助我嗎(抱歉,我對XSLT了解不多)。如果是,我需要在html文檔中或在我附加到<code></code>xmlString中附加XSLT樣式表。 <code></code>標簽。

它只是一個客戶端應用程序我不能在服務器端做任何事情。

更新:我也用&lt;替換xmlString中的<和> &gt; 我還能使用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)

我建議您使用服務器端代碼執行此操作,並將HTML格式的XML發送到您的客戶端。 是的,XSLT可以幫到你。 但是您應該在服務器上 XML進行HTML編碼

但請注意,如果要從文檔中刪除\\n標記(換行符)和其他空格字符(如空格,制表符等),則需要搜索客戶端文檔格式化程序或其他內容像那樣。 寫這樣的東西絕不是一件容易的事。

您還可以使用語法高亮顯示器來處理XML。 這里可以找到一個很好的例子。 然后你可以簡單地使用:

<pre class='brush: xml;'>
   // XML goes here.
</pre>

您可以分兩步完成此操作:

首先,只使用標識轉換<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>

在任何XML文檔 (例如此文檔上應用此轉換時

<root><node/></root>

大多數XSLT處理器 (.NET XslCompiledTransform,Saxon 6.5.4和Saxon 9.0.0.2,AltovaXML) 產生想要的結果

<root>
  <node />
</root>

第二個步驟是為執行一個字符串替換該結果操作,使得任何<字符被替換為&lt; 串。

如果你想要一個更高級的顯示器,看看XPath Visualizer如何使用XSLT做到這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM