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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[导入]关于怎样通过xslt向.NET扩展函数传递OuterXml属性

發布時間:2025/7/14 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [导入]关于怎样通过xslt向.NET扩展函数传递OuterXml属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? 根據我以前對這個系統的描述,比如選擇題,在試題的配置文件中存在差不多是以下的xmlNode

<question?sql="select?***"><title>選擇題題干</title></question>


??? 在通過xslt轉換的時候,我期望將question的OuterXml作為.NET語言的函數參數去處理,該.NET函數分析此question節點并根據設置從數據庫中取出數據,并返回。
??? 可是我在網上找了兩天,都沒有找到相關的東西,并且在網上有很多人說是應該不能實現,本來在網上有一種說法,說是用如下方法:

<xsl:stylesheet?xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
????????????????xmlns:msxsl
="urn:schemas-microsoft-com:xslt"
????????????????xmlns:user
="http://mycompany.com/mynamespace"
????????????????version
="1.0">
??
<msxsl:script?language="JScript"?implements-prefix="user">
????function?xml(nodelist)?{
??????return?nodelist.nextNode().xml;
????}
??
</msxsl:script>
??
??
<xsl:template?match="/">
????
<xsl:value-of?select="user:xml(.)"/>
??
</xsl:template>
</xsl:stylesheet>

?

可是我測試沒有成功,提示說:
??? 詳細信息: Microsoft.JScript.JScriptException: 應輸入函數

后來又從網上找了相關資料,好像說在.NET中不能使用,所以我只能放棄這個方法(主要是我實在沒有時間研究了,呵呵),后來我終于“曲線救國”,通過一個變態的方法解決了這個問題,方法如下(本人不能確認這是比較好的方法,僅作參考用,有什么好的辦法也可以提供給我,謝謝)

在我的xslt文件部分代碼如下(原理就是通過xslt對xml的轉換迭代過程將xml節點內容一個一個發送給xslt擴展):

<xsl:template?match="/exam/questionGroups/*">
<!--開始接收節點-->
?
<xsl:value-of?disable-output-escaping="yes"?select="WebExam:StartSetting(name(.))"/>
<!--發送節電的所有內容-->
?
<xsl:apply-templates?select="@*?|?node()"/>
<!--完成結點內容發送并運行該擴展函數-->
?
<xsl:value-of?disable-output-escaping="yes"?select="WebExam:GetResult()"/>
</xsl:template>
?
<!--發送所需節點下的人以子節點-->
<xsl:template?match="/exam/questionGroups/*//*">
<!--開始一個節點發送-->
?
<xsl:value-of?disable-output-escaping="yes"?select="WebExam:SendElement(name(.))"/>
<!--發送節點內容-->
?
<xsl:apply-templates?select="@*?|?node()?|?text()"/>
<!--完成發送該節點-->
?
<xsl:value-of?disable-output-escaping="yes"?select="WebExam:EndElement()"/>
</xsl:template>
??
<!--發送節點或子節點中的文本內容-->
??
<xsl:template?match="/exam/questionGroups/*//text()">
??
<xsl:value-of?disable-output-escaping="yes"?select="WebExam:SetElementValue(string(.))"/>
??
</xsl:template>
??
<!--發送節點或子節點的屬性-->
??
<xsl:template?match="/exam/questionGroups/*//@*">
????
<xsl:value-of?disable-output-escaping="yes"?select="WebExam:SendAttribute(name(.),string(.))"/>
??
</xsl:template>

在我的.NET中,用來作為xslt擴展的對象為(將從xslt發送的內容還原成一個節點):

?

public?class?Run
{
?XmlDocument?xmlDocument
=new
?XmlDocument();
//xmlNode表示發送過來的根節點,xmlNode表示當前操作的節點

?XmlNode?xmlNode,xmlNode1;
//開始接受節點數據

?public?void?StartSetting(string?elementName)
?
{
??xmlNode
=
xmlDocument.CreateElement(elementName);
??xmlNode1
=
xmlNode;
?}

//開始接收一個節點,以后接收的屬性和子節點都將附加到這個新節點
?public?void?SendElement(string?elementName)
?
{
??XmlNode?n
=
xmlDocument.CreateElement(elementName);
??xmlNode1.AppendChild(n);
??xmlNode1
=
n;
?}

//開始接收一個節點,以后接收的屬性和子節點都將附加到這個節點的父節點
?public?void?EndElement()
?
{
??xmlNode1
=
xmlNode1.ParentNode;
?}

//接收和附加一個屬性
?public?void?SendAttribute(string?Name,string?Value)
?
{
??XmlAttribute?xmlAttribute
=
xmlDocument.CreateAttribute(Name);
??xmlAttribute.Value
=
Value;
??xmlNode1.Attributes.Append(xmlAttribute);
?}

//接收和附加一個文本內容
?public?void?SetElementValue(string?text)
?
{
??xmlNode1.InnerText
=
text;
?}


?
public?string?GetResult()
?
{
/**/
/*

-----------------在這兒對節點進行操作---------------------
*/

??
return?xmlNode.OuterXml;
?}

}


??? 這樣就實現了操作xmlNode的功能
??? 想要使用這個xslt擴展,只要通過AddExtensionObject添加到transform就可以了,比如:

?XsltArgumentList?xslArg?=?new?XsltArgumentList();
?Run?obj?
=?new
?Run();
?xslArg.AddExtensionObject(
"urn:WebExam"
,?obj);
?xslt.Transform(doc,xslArg,Response.Output,
null);

總結

以上是生活随笔為你收集整理的[导入]关于怎样通过xslt向.NET扩展函数传递OuterXml属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧美日韩精品色xxx | 日本少妇一级 | 亚洲欧美日韩专区 | 2019天天干天天操 | 波多野结衣在线网址 | 欧美极品jizzhd欧美爆 | 亚洲一级黄色大片 | 欧洲一区二区三区四区 | 伊人亚洲综合 | 亚洲国产免费视频 | 在线观看国产一级片 | 古装做爰无遮挡三级聊斋艳谭 | 九九色在线 | 探花国产 | 六月丁香激情 | 大牛影视剧免费播放在线 | 激情狠狠 | 看毛片看毛片 | 成人天堂噜噜噜 | 橹图极品美女无圣光 | 激情av小说 | 久草资源在线播放 | 丁香免费视频 | 来吧亚洲综合网 | av手机网| 久久精品国产亚洲av蜜臀色欲 | 超碰人人99 | 日韩欧美成人精品 | 亚洲第一页综合 | 亚洲精品国产av | 中出在线| 手机看黄色 | 特黄特色免费视频 | 午夜精品久久久久久久久久久久久蜜桃 | 老熟妇仑乱一区二区av | 天天操天天操天天 | 色婷婷国产精品视频 | 99re超碰 | 国产嫩草在线 | 色xxxx | 国产精品剧情 | 无码内射中文字幕岛国片 | 日本激情视频网站 | 黑人大群体交免费视频 | 日韩二三区 | 免费一区二区在线观看 | 青青草视频免费播放 | 国产精品久久久久久久 | 日韩av电影网址 | 中文字幕av影视 | 在线看你懂得 | 日本三级在线 | 明日花绮罗高潮无打码 | 国产精品女同一区二区 | 亚洲欧美综合精品久久成人 | 欧美大黄| 国产精品电影一区二区三区 | 欧美嫩草| 波多野结衣免费在线视频 | 成av人在线观看 | 亚洲欧美日韩在线播放 | 一区二区在线免费视频 | 国产69久久精品成人看 | 蜜乳av中文字幕 | 亚洲黄色小视频 | 五月av综合av国产av | 午夜av剧场 | 国产免费a级片 | 婷婷导航 | 精品一区二区三区四 | 麻豆网站在线看 | 国产亚洲制服 | 成人77777 | 日本精品在线视频 | 国产a不卡 | 动漫av一区| 日韩中文字幕一区二区三区四区 | 五月天丁香婷 | 精品国产色 | 91九色高潮 | 中文字幕33页 | 高清亚洲 | 日韩免费网站 | 国产欧美一区二区 | 免费爱爱视频 | 日日爽日日操 | av啊啊| 亚洲精品18 | 久久精品综合 | 激情视频免费观看 | 完全免费av | 依人成人 | 国产精品入口麻豆九色 | 岛国av在线| 日韩二区三区 | 国产精品久久影视 | 国产精品无码av无码 | 91麻豆精品91久久久久同性 | 一本一道久久 |