2010-02-17 36 views
0

我想知道是否有方法從XSL文件中獲取參數或變量值。舉例來說,如果我有以下幾點:獲取變量值和XSLT文件

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:variable name="username" select ="usertest"/> 
    <xsl:variable name="password" select ="pass"/> 
    <!-- ... --> 
</xsl:stylesheet> 

我想從XSL閱讀usernamepassword值,並利用它們進行身份驗證。我正在使用ASP.Net和C#在XML文件上執行實際轉換。

是否有人可以與我分享代碼,這將允許我從ASP.NET/C#讀取XSL變量。先謝謝您的幫助。

回答

0

謝謝Everone。這裏是最後的工作:用於測試目的

客戶端(ASP使用VBScript):

<% 

//Create Object 
Set xmlhttp = CreateObject("Microsoft.XMLHTTP") 
//Set up the object with the URL 
'xmlhttp.open "POST" ,"http://localhost/ASP_Test/receiveXML.asp",False 

//Create DOM Object 
Set xmldom = CreateObject("Microsoft.XMLDOM") 
xmldom.async = false 

//Load xls to send over for transform 
xmldom.load(Server.MapPath("/ASP_Test/masterdata/test.xsl")) 

//Send transform file as DOM object 
xmlhttp.send xmldom 
%> 
////////////////////////////////////////////////////////////////////////// 
On the Server Side: (aspx with C#) Accepts xslt and process the transform: 

//file path for data xml 
String xmlFile = ("\\masterdata\\test.xml"); 
//file path for transformed xml 
String xmlFile2 = ("\\masterdata\\out.xml"); 


XmlTextReader reader = new XmlTextReader(Request.InputStream); 
Transform(xmlFile, reader, xmlFile2); 

public static string Transform(string sXmlPath, XmlTextReader xslFileReader, string outFile) 
     { 
      try 
      { 
       //load the Xml doc 
       XPathDocument myXPathDoc = new XPathDocument(sXmlPath); 
       XslCompiledTransform myXslTrans = new XslCompiledTransform(); 

       //load the Xsl 
       myXslTrans.Load(xslFileReader); 

       //create the output stream 
       XmlTextWriter myWriter = new XmlTextWriter 
        (outFile, null); 

       //do the actual transform of Xml 
       myXslTrans.Transform(myXPathDoc, null, myWriter); 

       myWriter.Close(); 
       return "Done"; 
      } 
      catch (Exception e) 
      { 
       return e.Message; 
      } 
     } 
2

你的問題是(編輯:是)缺少實際的代碼,但從描述中顯示你正在尋找的是XPath。 XSL會將一個XML文檔轉換爲另一個XML文檔,然後您可以使用XPath查詢生成的XML以獲取所需的值。

此Microsoft知識庫文章有如何在C#中使用XPath的信息:

http://support.microsoft.com/kb/308333

4

這很容易。 XSL文件本身就是XML,所以你可以這樣對待它們。

XmlDocument xslDoc = new XmlDocument(); 
xslDoc.Load("myfile.xsl"); 

XmlNamespaceManager nsMgr = new XmlNamespaceManager(xslDoc.NameTable); 
nsMgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform"); 

XmlNode usrNode = xslDoc.SelectSingleNode("/xsl:stylesheet/xsl:variable[@name='username']", nsMgr); 
XmlNode pwdNode = xslDoc.SelectSingleNode("/xsl:stylesheet/xsl:variable[@name='password']", nsMgr); 

string usr = usrNode.Attributes["select"].Value; 
string pwd = pwdNode.Attributes["select"].Value; 
+0

這是偉大的..很高興知道.. +1 :-) – 2010-02-17 10:29:58