BILGI: XSL Dönüşümleri performans geliştirme için teknikleri

Makale çevirileri Makale çevirileri
Makale numarası: 815124 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, Genişletilebilir Stil Sayfası Dili (XSL) dönüşümleri performansını artırmak için bazı teknikleri listelenir. XSL işlevsel bir dildir. XSL ortak dil özelliklerini desteklemiyor. Örneğin, XSL globals veya dönüş değerleri desteklemiyor. XSL bir nesne odaklı dil değildir ve modüler, işlemci döngüsü maliyetler. XSL için hiçbir hata ayıklama yok, bu nedenle, hata ayıklama zor olur.

Daha fazla bilgi

Performans'ın bir XSL dönüşümünün kullandığınız senaryolara bağlıdır. Bu makalede listelenen teknik genel yönergeler ' dir. Her ayarlama sonuçlarını ölçmek emin olun. Yalnızca sınama veya belirli bir teknik performansını artırır olup olmadığını kanıtlayabilirsiniz. Microsoft XSL işlemci kullanarak komut satırı XSL dönüştürmelerini gerçekleştirmek için de sınama msxsl.exe komut satırı yardımcı programını kullanabilirsiniz. Msxsl.exe yardımcı programı 4.0 dönüştürme gerçekleştirmek için Microsoft XML Parser ' (msxml4.dll) çağırır. Bu yardımcı program aşağıdaki MSDN'DEN karşıdan site:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&DisplayLang=en

Performansını iyileştirmek için gereken teknikler

  • Sayfalarınızı oluşturmak için en yaygın kod yollarını tanımlamak ve bu yollar en iyi duruma getirme. XSL yüksek yeniden bölümlerini en iyi duruma getirin.
  • Öznitelikleri Sub-Elements kullanmak yerine, mümkün olan her yerde kullanın. Öğeleri yerine özniteliklerini kullanarak performansını artırır. Gevşek yazılan çünkü öznitelikleri XPath eşleşme yapılırken, daha hızlı gerçekleşir. Bu doğrulama şemasının kolaylaştırır.
  • Daha belirgin bir yol yerine kullanın "/ /" mümkün olan her yerde. XML verilerini büyük olduğunda "/ /" özyinelemeli decedent arama çok pahalıdır. Belirli bir XPath ifadesi daha hızlı uygular.
  • Öznitelik değerleri eşleştiğinde, numaralayıcı öznitelikleri'ni kullanın. True veya false değerlerini ayarlamak ve bit birden çok öznitelik adları kullanın. Örneğin:
    <element_name attr1="1" attr2="1" attr3="0">
  • Komut dosyasını kullanın. Komut dosyası kullanarak performansı indirgedikten.
  • Performansı artırmak için doğrudan adıyla karşılaştırın. Örneğin yerine aşağıdaki kodu:
    ./info[type='title']
    şu kodu kullanın:
    ./title
    ne zaman, yerine adı gibi değerleri karşılaştırmak:
    Select="*[name()='sample']"
    şu kodu kullanın:
    Select="sample"
    XPath işleme ad nedeniyle, bu tam olarak eşdeğerdir.
  • MSXML, sürüm 3.0 ve sonraki sürümleri, tüm sürümleri ile açık dizin süzgeci daha hızlıdır. Performans geliştirme üst <a1>alt</a1> listesinde öğenin konumunu bağlıdır. Aşağıdaki yerine:
    /child_element
    aşağıdakileri kullanın:
    /child_element[1]
  • Parametreler, her sorgu değerlendirme yerine kullanın.
  • XSL Dönüşümleri birden çok seçenek sağlar, ancak bunların tümünün doğru gerçekleştirmemeyi. Örneğin, yerine aşağıdaki dönüştürme:
    <xsl:output method="html"/>
    aşağıdaki dönüşümü kullanın: <a1>
    <xsl:output method="html" indent="no" />
    Girinti çok miktarda istenmeyen boşlukları çıktı sağladığından, bu performansı artırır. Varsayılan olarak, öznitelik girinti için Evet değerdir.
  • Satır içi şablon ile for-each ya da bir şablon uygulamak şablon eşleştiğinden emin olduğunuzda mod özniteliği. Örnek:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
    <xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    Aşağıdaki eşleşen her düğüm için:
    "//xa:Axes/xa:Axis[@name='Axis1']"
    aşağıdaki deyimi:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    aynı modu ile diğer tüm şablonlarında değerlendirilir. Varsayılan Şablonları'nı çalıştırmak, işlemci başlatır. Bu tüm metin düğümlerin kopyalar ve şu çağrı:
    <xsl:apply-templates>
    tüm öğeler için. Bu nedenle, özgün nodeset tüm çocuklar için olası eşleşmeleri ifade olarak değerlendirilir. Deyimi eşleşen bir görevi değil. Performansı artırmak için <a0></a0>, kodu aşağıdaki gibi yeniden:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
    <xsl:template match="*" mode="Axis1">
  • Daha az şablonlarını kullanın. Bu, aynı şablonu birden çok kez çalıştırdığınızda geçerlidir. Performans ile sıkı bazı geliştirme yok for-each şablonların sayısı az olduğunda bir şablonu aramak için döngü.
  • Kullanımını azaltmak xsl: seçin / xsl: when / xsl: yoksa. Performans parametreden seçimlerin çoğu Sonbahar yoksa tümcesi. Bu nedenle , ile eşleşen ve belirli bir değeri var olduğunu bildiğinizde, aksi halde kullanmaktan kaçınmaktır deneyin.
  • xsl:Variables dinamik değerlerdir. Bu değişkenler önbelleğinde değildir ve XSL içinde başvurulan her zaman çalıştırın. Açık tür xsl:variable çevrim performansını artırır. Yapabileceğiniz çevrim string() ve boolean() işlevlerle yazın. Örneğin:
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • MSXML ve . System.XML
    • MSXML ayrıştırıcısının ve XmlReader ve XmlWriter farklıdır.
    • MSXML, XML verilerini bir belge nesne modeli yükler (DOM). Bu DOM ağaçtan verileri kolayca XPath ile gidilen, XSL ile dönüştürülmüş veya düzenlenebilir ve yeniden kaydedilir. Bu, daha kolay bir geliştirme ve daha güçlü özellikleri pahasına bellek kullanımı ve hızı sağlar.
    • XmlReader ve XmlWriter sıralı okuyucuları ve yazıcıları var. Geliştirici el ile okuma ve XML veri yazma durumunu korur. Bu en az bellek kullanımına izin verir ve bu nedenle, performansı artırır.
    • MSXML ayrıştırıcısının de SAX (XML basit API) destekler. SAX ardışık değil. .NET framework DOM XmlDocument sınıfını kullanarak da destekler.
    • Üzerinde .NET kullanımını en iyi seçim bağlıdır framework ve XML ile gerçekleştir görevi.
  • Bu teknik, veritabanı performansını ilişkilidir. Arama alanları aşağıdaki gibi pre-joining MSXML ve System.XML performans artırılabilir:
    <?xml version="1.0" encoding="UTF-8"?>
    <AllLocalDescriptor xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <Descriptor key="AMC_Labels_" ID="AMC" Name="-2000" TypeName="Labels" LCID="">
      AMC
    </Descriptor>
    <Descriptor key="AMC_Labels_3082" ID="AMC" Name="-2000" TypeName="Labels" LCID="3082">
      AMC
    </Descriptor>
    @ Anahtarının KIMLIğI türü bildirerek tarama kurtulabilirsiniz
    desc = doc.getNodeFromID("AMC_Labels_3082")

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:
XSLT Geliştirici Kılavuzu
http://msdn2.microsoft.com/en-us/library/ms759204.aspx
Enhancing XSL
http://msdn2.microsoft.com/en-us/library/aa468550.aspx
XSLT performansı hakkında ek bilgi için Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
325689BILGI: Performans XSLT dönüştürmeleri .NET Framework'teki
331026Nasıl bana göster: Performans ayarlama kullandığım. NET'te System.XML kullanarak XSLT stil sayfası

Özellikler

Makale numarası: 815124 - Last Review: 2 Kasım 2007 Cuma - Gözden geçirme: 2.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework Class Libraries 1.0
  • Microsoft .NET Framework Class Libraries 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Anahtar Kelimeler: 
kbmt kbperformance kbxml kbinfo KB815124 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:815124

Geri Bildirim Ver

 

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