XSLT Kullanarak Bir Dizedeki Karakterin Son Görünümünü Ters Bulma Yöntemi

Dizelerde belirli karakterleri bulmak, programlamada yaygın bir görev olabilir, özellikle de URL’ler veya dosya yolları ile çalışırken. XSLT’de, bir karakterin ilk görünümünü bulmak için fonksiyonlar olsa da, özellikle dosya adları ve uzantılarını çıkarırken, bir karakterin son görünümünü almak gerekebilir. Bu blog yazısı, bir dizede karakteri ters bulma ve anlamlı bilgileri çıkarma ile ilgili tipik bir probleme çözüm sunmaktadır.

Zorluk: Dosya Uzantılarını Çıkarmak

Bu örneği düşünün:

<mediaurl>http://www.blah.com/path/to/file/media.jpg</mediaurl>

substring-before() ve substring-after() gibi temel XSLT fonksiyonlarını kullanarak, dosya URL’sindeki noktanın (.) ilk görünümünü kolayca bulabiliriz. Ancak, dosya adını ve uzantısını elde etmek için, dizideki son noktayı tanımlamamız gerekir—bu, standart fonksiyonlarla basit bir işlem değildir.

Neden Son Görünümü İhtiyacımız Var?

Amaç, dosya adını uzantısından ayırmaktır. Örneğin, yukarıdaki URL’den şunu çıkarmak istiyoruz:

  • Dosya Adı: media
  • Dosya Uzantısı: jpg

Bunu başarmak için, dizideki son . noktasını etkili bir şekilde belirlemek için bir yönteme ihtiyacımız var.

Çözüm: Özel bir XSLT Şablonu

XSLT 1.0 kullanarak bir dizedeki karakterin son görünümünü bulmak için basit ve etkili bir yöntemi burada bulabilirsiniz. Çözüm, dizeyi işleyen ve gerekli bölümleri çıkaran özyinelemeli bir şablon oluşturmayı içerir.

XSLT Kod Uygulaması

İşte bu hedefe ulaşan bir örnek şablon:

<xsl:template name="getExtension">
  <xsl:param name="filename"/>
  
  <xsl:choose>
    <xsl:when test="contains($filename, '.')">
      <xsl:call-template name="getExtension">
        <xsl:with-param name="filename" select="substring-after($filename, '.')"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$filename"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<xsl:template match="/">
  <xsl:call-template name="getExtension">
    <xsl:with-param name="filename" select="'http://www.blah.com/path/to/file/media.jpg'"/>
  </xsl:call-template>
</xsl:template>

Kodun Açıklaması

  • Şablon Bildirimi: getExtension şablonu, tam bir dosya adından dosya uzantısını çıkaracak şekilde tasarlanmıştır.

  • Parametre: İşlenecek diziyi tutan bir $filename parametresi alır.

  • Koşullu Mantık:

    • Eğer dosya adı bir nokta içeriyorsa, kendisini özyinelemeli olarak çağırır ve ilk noktadan sonraki alt dizeyi geçirir.
    • Bu, son alt dizeye (gerçek uzantının bulunduğu yer) ulaşılana kadar devam eder; bu uzantı çıktı olarak yazdırılır.
  • Kök Şablonunu Eşleştir: Ana şablon, kökü eşler ve uzantıyı çıkarmak için getExtension çağrısını başlatır, uzantının çıkarılacağı URL’yi sağlar.

Nasıl Kullanılır?

Yukarıdaki XSLT’yi projenizde kullanmak için:

  1. Bu kodu XSLT stil dosyanıza ekleyin.
  2. Kök şablonundaki select ifadesi içindeki URL veya yolu gerektiği gibi değiştirin.
  3. XML verinizi işleyerek dosya uzantısını sorunsuz bir şekilde çıkarın!

Son Düşünceler

XSLT bağlamında bir dizedeki karakterin son görünümünü bulmak biraz yaratıcılık gerektirebilir. Özyinelemeli şablonlardan yararlanarak karmaşık dizeleri parçalayabilir ve dosya adları ve uzantıları gibi değerli bilgileri çıkarabilir, veri manipülasyonu görevlerinizi geliştirebilirsiniz.

XSLT’de benzer dize işleme problemleriyle karşılaştığınızda bu kılavuza geri dönmekten çekinmeyin!