Xslt2.0'ı ubuntu'daki herhangi bir html dosyasına nasıl uygulayabilirim?


1

Xslt2.0'ı ubuntu'daki herhangi bir html dosyasına nasıl uygulayabilirim?

Bu işi yapacak bir şey arıyorum:

wget -qO- "https://www.amazon.com/" | ????? | saxonb-xslt -o:output.xml -xsl:transform20.xsl -s:-

Vahşi ortamda html ile çalışacak kadar sağlam olmak, örneğin https://www.nzz.ch/ http://www.spiegel.de/


transform20.xsl:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Yanıtlar:


1

Soru

Xslt2.0'ı ubuntu'daki herhangi bir html dosyasına nasıl uygulayabilirim?

Kısa cevap

Yapamazsın

Uzun cevap

HTML XML değil. XSLT, XML'e uygulanabilir ancak HTML'ye uygulanmaz. Hangi işletim sistemini çalıştırdığınız önemli değil.

IFF, verilen HTML dosyanızın aslında X HTML olduğundan emin olabilirsiniz, o zaman XML olarak da geçerlidir ve XSLT kullanılarak işlenebilir. Bununla birlikte, çoğu HTML, XHTML değildir ve aşağıdaki gibi geçerli HTML yapılarıdır:

<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>
  <body>
    <p>This is content.<br>
       This is the second line.</p>
  </body>
</html>

... bir XML veya XSLT motorunun bunun geçersiz bir işaretleme olduğundan şikayet etmesine neden olacak ve işlem başarısız olacaktır.

Anahtar sorun, HTML'nin kapanmamış etiketleri açmaya izin vermesidir. Yukarıdaki örnekte, <meta>ve <br>etiketler kapanmıyor. Bir XML işlemcisinde bu etiketler hiç bitmeyen bir yapı oluşturur. HTML işlemciler bu öğelerin gömülü listelerine sahiptir, ancak XML işlemciler yoktur.

Geçici çözüm

Yukarıdaki HTML snippet'inin bir XML / XSLT motoru tarafından işlenebilmesi için, <meta>ve <br>etiketlerinin olduğu gibi bitiş etiketlerine sahip olmaları gerekir ya <meta></meta>da kendileri gibi kapanmaları gerekir <meta/>.

HTML'yi XHTML'ye dönüştürmek için muhtemelen araçlar vardır. Hızlı bir Google araması biraz yukarı kalkar . HTML’nizi önce bunlar aracılığıyla çalıştırabilir ve ardından bunları XSLT kullanarak işleyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.