2010-05-01 10 views
6

XML'i XML'den başka bir şeye dönüştürmek için XSLT'yi kullanmak mümkün mü?XSLT: Xml olmayan içeriğe dönüşüyor mu?

örn. i son olmayan xml içeriği istiyorum:

<Content> 
    <image url="file1.png"> 
    <image url="file2.png"> 
    ... 
    <image url="filen.png"> 
<EndContent> 

Sen bu belge xml (hatta html) değil haber ama <elements> var.

XSLT kullanarak, xml olmayan çıktı oluşturmak mümkün mü?


olmayan xml çıktısı başka örnek olabilir: HTML IMG ve BR etiketleri kapanış sahip olmaktan yasak olduğunuz için, bu belgeyi fark edeceksiniz

<HTML> 
<BODY> 
    <IMG src="file1.png"><BR> 
    <IMG src="file2.png"><BR> 
    ... 
    <IMG src="filen.png"><BR> 
</BODY> 
</HTML> 

, HTML olduğunu etiket. Bu, tüm öğelerin bir kapatma etiketine sahip olması gerektiğinden (her etiketin kapatılması gerektiğinden), xml kullanılarak HTML'nin yeniden biçimlendirilmesiyle xhtml ile yapılandırılır.


olmayan xml çıktısı başka örnek olabilir:

INSERT INTO Documents (Filename) VALUES ('file1.png') 
INSERT INTO Documents (Filename) VALUES ('file2.png') 
... 
INSERT INTO Documents (Filename) VALUES ('file3.png') 

i gibi herhangi bir kaynak xml oluşturan, ancak bir örnek olabilir:

Kaynak xml:

<DocumentStore> 
    <Document type="image">file1.png</Document> 
    <Document type="image">file2.png</Document> 
    <Document type="image">filen.png</Document> 
</DocumentStore>  

Veya belki de:

<Profiles> 
    <User avatar="file1.png" /> 
    <User avatar="file2.png" /> 
    <User avatar="filen.png" /> 
</Profiles> 
+0

'' ve '
' nesi var? – kennytm

+0

@KennyTM: HTML, IMG ve BR'de etiketleri kapatmayı yasaklıyor. Kapanış etiketleri rahatsız edici değil. Sadece bu doğru HTML’lerin sahibi olmayacak. –

cevap

1

Evet, stil sayfanızdaki xsl:output öğesini kullanarak yapabilirsiniz.

8

Xml olması gerekmeyen çıktı biçimini belirtmek için <xsl:output>'u kullanabilirsiniz, bkz. this reference page. Eğer html çıkışı ise

Ancak, hiçbir modern tarayıcı, kapanış etiketleri koymak yapmak, böylece yukarıdaki örneği kullanarak bile şikayet etmelidir, ben tüm tarayıcı ile tamam olması gerektiğine inanıyoruz: - Yani

<HTML> 
<BODY> 
    <IMG src="file1.png"></IMG><BR></BR> 
    <IMG src="file2.png"></IMG><BR></BR> 
    ... 
    <IMG src="filen.png"></IMG><BR></BR> 
</BODY> 
</HTML> 

bir şey kaçırmadığım sürece neden kapanış etiketini koymak istemediğinizden emin değilsiniz.


Güncelleme: Bu stil göz önüne alındığında sigara xml çıktısı

ait Katma örneği: -

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" /> 
    <xsl:template match="/filenames"> 

    <xsl:for-each select="filename"> 
    INSERT INTO Documents (Filename) VALUES ('<xsl:value-of select="." />') 
    </xsl:for-each> 

    </xsl:template> 
</xsl:stylesheet> 

ve bu giriş xml: -

<?xml version="1.0" encoding="UTF-8"?> 
<filenames> 
    <filename>file1.png</filename> 
    <filename>file2.png</filename> 
    <filename>file3.png</filename> 
</filenames> 

Sen gibi çıktı almak bu: -

INSERT INTO Documents (Filename) VALUES ('file1.png') 

INSERT INTO Documents (Filename) VALUES ('file2.png') 

INSERT INTO Documents (Filename) VALUES ('file3.png') 
+0

@Alan Chan: Tarayıcıların uğraşabileceği çok fazla geçersiz HTML oluşturmuyor; geçerli HTML oluşturuyor, böylece ayrıştırıcılar işleyebilir. –

+0

@Ian: Tamam, görüyorum. Peki, çıktıyı html olduğunu belirtmek için komutunu kullanırsanız ve sonra html etiketlerini oluşturmak için kullanın ... ör. file1.png sonra xslt işlemcisi ,
vb. html için gerekli olan kapatma etiketi olmadan. –

4

olursanız olun IMG etiketlerini nasıl oluşturduğunu,

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html"/> 
<xsl:template match="/"> 
<HTML> 
<BODY> 
    <xsl:element name="IMG"> 
    <xsl:attribute name="src">file1.png</xsl:attribute> 
    </xsl:element> 
    <IMG src="file2.png"></IMG> 
    <IMG src="filen.png"/> 
</BODY> 
</HTML> 
</xsl:template> 
</xsl:stylesheet> 

çıkış yöntemi "html" IMG etiketlerini neden olur kapatılamaz için.

<HTML> 
<BODY><IMG src="file1.png"><IMG src="file2.png"><IMG src="filen.png"></BODY> 
</HTML> 
+0

Bunu yeniden oluşturduğumda, kapanış etiketleri dahildir. Aynı zamanda, bazen isteğe bağlı kapanış etiketlerini de dahil etmek isteyebilirim ve bazen istemeyebilirim. XSLT, xml'yi ** ** istenen ** çıktı biçimine dönüştürebilmelidir. –