PRB: Không th? b? n?p h?i chúng mà b?n t?o và t?i b?ng cách s? d?ng k?ch b?n trong XSLT

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 316775 - Xem s?n ph?m mà bài này áp d?ng vào.
Bài vi?t này đ? đư?c lưu tr?. Bài vi?t đư?c cung c?p "nguyên tr?ng" và s? không c?n đư?c c?p nh?t n?a.
Bài vi?t này đ? c?p đ?n Microsoft sau.Không gian tên thư vi?n l?p c?a NET Framework:
  • System.io
  • System.xml
  • System.xml.XPath
  • System.xml.XSL
Bung t?t c? | Thu g?n t?t c?

? Trang này

TRI?U CH?NG

Khi b?n s? d?ng các y?u t? <msxsl:script> nhi?u l?n v?i khuôn kh? System.Xml.Xslt, m?t r? r? b? nh? có th? x?y ra v?i m?t s? lư?ng l?n Extensible Markup Language (XML) ho?c Extensible Stylesheet ngôn ng? (XSL) ?ng d?ng. </msxsl:script>

NGUYÊN NHÂN

Các l?p h?c c?a các System.xml không gian tên h? tr? vi?c s? d?ng các k?ch b?n nhúng b?ng cách s? d?ng các y?u t? k?ch b?n trong các ?ng d?ng XSL Transformation (XSLT). V? v?y, các y?u t? <msxsl:script> cho phép b?n ch?n ngôn ng? l?p tr?nh (ch?ng h?n như Microsoft Visual C#.NET ho?c Microsoft Visual Basic.NET) đ? th?c hi?n nhi?m v? nh?t đ?nh.</msxsl:script>

Khai báo ch?c năng đư?c ch?a trong k?ch b?n kh?i. Khi b?n s? d?ng k?ch b?n nhúng v?i m?t t?p tin XSL, m?t h?i đ?ng có ch?a ngôn ng? trung gian Microsoft (MSIL) đư?c t?o ra và đư?c t?i vào b? nh?. V? c?a m?t h?n ch? thi?t k? trong phiên b?n này c?a Microsoft.NET Framework, b?n không th? l?y đó l?p ráp t? b? nh?. Đi?u này có th? d?n đ?n m?t r? r? b? nh? n?u h?i đ?ng khác nhau đư?c t?o ra và đư?c t?i nhi?u l?n ho?c trong m?t v?ng l?p.

GI?I PHÁP

Đ? gi?i quy?t v?n đ? này, không nhi?u l?n n?p XSLT v?i k?ch b?n. Phát tri?n ?ng d?ng c?a b?n trong m?t cách như v?y mà b?n t?i XSLT m?t l?n và tái s? d?ng nó nhi?u l?n khi c?n thi?t. Th?c hành này c?ng c?i thi?n hi?u su?t.

Ví d?, đo?n m? sau r? r? b? nh?:
For(int i=0;i<1000;i++)
{
      xslt.Load(stylesheet);
      //Do other stuff
      xslt.Transform(doc, null, writer);
}
				
Thay đ?i m? như sau đ? t?i XSLT ch? m?t l?n và tái s? d?ng nó trong m?t v?ng l?p:
xslt.Load(stylesheet);
For(int i=0;i<1000;i++)
{

      //Do other stuff
      xslt.Transform(doc, null, writer);
}
				
M? này ch? t?i l?p ráp m?t l?n và không r? r? b? nh?.

CÁCH GI?I QUY?T KHÁC

L?y m?t h?i đ?ng cá nhân b?i x?p d? t?t c? các l?nh v?c ?ng d?ng có ch?a y Cynulliad. Đ? th?c hi?n vi?c này, g?i cho các AppDomain.Unload() phương pháp cho m?i tên mi?n ?ng d?ng đ? l?p ráp đư?c n?p, ho?c g?i các UnloadDomain() phương pháp trên lưu tr? API không đư?c qu?n l?.

THÔNG TIN THÊM

Các bước mô phỏng hành vi.

  1. T?o m?t Visual C#.D? án ?ng d?ng giao di?n đi?u khi?n NET.
  2. T?o m?t ?ng d?ng XSLT, và sau đó thêm m? sau đây:
    using System;
    using System.IO;
    using System.Xml;
    using System.Xml.XPath;
    using System.Xml.Xsl;
    
    public class Sample
    {
    	private const String filename = "..\\..\\XmlFile1.xml";
    	private const String stylesheet = "..\\..\\XSLTFile1.xslt";
    
    	public static void Main() 
    	{
    
                    for(int i=0;i<1000;i++)
                    {
    
    		XslTransform xslt = new XslTransform();
                    xslt.Load(stylesheet);
    
    		//Load the XML data file.
    		XPathDocument doc = new XPathDocument(filename);
    
    		//Create an XmlTextWriter to write to the console.         
    		XmlTextWriter writer = new XmlTextWriter(Console.Out);
    		writer.Formatting = Formatting.Indented;
    
    		//Transform the file.
    		xslt.Transform(doc, null, writer);
    		writer.Close();
                    }
    		System.Console.Read();
            
    	} 
    }
    					
  3. T?o m?t t?p tin XSLT đư?c đ?t theo tên XSLTFile1.xslt, và sau đó thêm m? sau đây:
     <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt"
        xmlns:user="urn:my-scripts">
    
      <msxsl:script language="C#" implements-prefix="user">
    
    <![CDATA[
    
         public double circumference(double radius){
           double pi = 3.14;
           double circ = pi*radius*2;
           return circ;
         }      
                ]] >     
    <!-- Remove the space between ]] and > in the preceding line. -->
    <!-- The space is inserted because of a publishing constraint. -->
    
       </msxsl:script>
    
      <xsl:template match="data">  
      <circles>
    
      <xsl:for-each select="circle">
        <circle>
        <xsl:copy-of select="node()"/>
           <circumference>
              <xsl:value-of select="user:circumference(radius)"/>        
           </circumference>
        </circle>
      </xsl:for-each>
      </circles>
      </xsl:template>
    </xsl:stylesheet>
    					
  4. T?o m?t t?p XML có tên XMLFile1.xml, và sau đó thêm m? sau đây:
    <?xml version='1.0'?>
    <data>
      <circle>
        <radius>12</radius>
      </circle>
      <circle>
        <radius>37.5</radius>
      </circle>
    </data>
    					
  5. Lưu các t?p tin XML và XSL trong thư m?c ?ng d?ng.
  6. Bư?c qua các m?. Thông báo r?ng các h?i đ?ng khác nhau đư?c t?o ra và đư?c n?p trong c?a s? đ?u ra c?a Visual Studio.NET.
  7. M? màn h?nh hi?u su?t. Thông báo r?ng các byte tư nhân hi?n th? s? gia tăng trong b? nh?.

Thu?c tính

ID c?a bài: 316775 - L?n xem xét sau cùng: 21 Tháng Hai 2014 - Xem xét l?i: 1.0
Áp d?ng
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.0
T? khóa: 
kbnosurvey kbarchive kbprb kbmt KB316775 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:316775

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com