日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

XLT格式化XML那点事(C#代码中的问题解决)(二)

發(fā)布時(shí)間:2024/4/14 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XLT格式化XML那点事(C#代码中的问题解决)(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

接上篇《XML通過XSL格式化的那點(diǎn)事(XML到自定義節(jié)點(diǎn)折疊顯示)》,本文就如何將大的XLST分割成小文件和如何用C#將XML通過XSL生成HTML文件中的問題做下分析,避免有同樣需求的朋友走彎路。

Import的使用

<xsl:Import> 元素必須在第一個(gè)節(jié)點(diǎn)

如何避免輸出SelfClose的非法元素

?

簡(jiǎn)單繁瑣的辦法

<script type="text/javascript" src="nowhere.js"> <xsl:comment></xsl:comment> </script>

?

一勞永逸的方法

不用XMLWriter使用自己定義的XMLHTMLWriter

using System; using System.Collections.Generic; using System.Text; using System.Xml;namespace XSLSelfClosing { public class XmlHtmlWriter : XmlTextWriter { public XmlHtmlWriter(System.IO.Stream stream, Encoding en) : base(stream, en) {//Put all the elemnts for which you want self closing tags in this list. //Rest of the tags would be explicitely closed fullyClosedElements.AddRange(new string[] { "br", "hr" }); }string openingElement = ""; List<string> fullyClosedElements = new List<string>();public override void WriteEndElement() { if (fullyClosedElements.IndexOf(openingElement) < 0) WriteFullEndElement(); else base.WriteEndElement(); } public override void WriteStartElement(string prefix, string localName, string ns) { base.WriteStartElement(prefix, localName, ns); openingElement = localName; } } }

?

XSL Copy 函數(shù)會(huì)為節(jié)點(diǎn)自動(dòng)添加xmlns的問題

解決方法:

添加如下模板

<xsl:template match="*" mode="copy-no-namespaces"><xsl:element name="{local-name()}"><xsl:copy-of select="@*"/><xsl:apply-templates select="node()" mode="copy-no-namespaces"/></xsl:element> </xsl:template><xsl:template match="comment()| processing-instruction()" mode="copy-no-namespaces"><xsl:copy/> </xsl:template>

?

應(yīng)用示例,替換掉使用`Copy-of`的代碼段

<xsl:apply-templates select="$var1_SCTIcfBlkCredTrf/ns0:FIToFICstmrCdtTrf/sw8:CdtTrfTxInf" mode="copy-no-namespaces"/>

?

參考

XSLT self-closing tags issue

How to force Non-Self Closing tags for empty nodes when using XslCompiledTransform class

How to mimic copy-namespaces=“no” in XSLT 1.0?

轉(zhuǎn)載于:https://www.cnblogs.com/HQFZ/p/4798652.html

總結(jié)

以上是生活随笔為你收集整理的XLT格式化XML那点事(C#代码中的问题解决)(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。