XSLT zanořené značky (tagy) – XML / XSL(T) – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

XSLT  zanořené značky (tagy) – XML / XSL(T) – Fórum – Programujte.comXSLT zanořené značky (tagy) – XML / XSL(T) – Fórum – Programujte.com

 

Boros
~ Anonymní uživatel
1 příspěvek
2. 11. 2013   #1
-
0
-

Dobrý den,

v XSLT jsem začátečník.

Dají se nějak pomocí XSLT do sebe zanořovat značky?

Něco takového.

vstupní xml:

<x></x>

<y></y>

vystupní xml:

<x>

<y>

</y>

</x>

Díky

Nahlásit jako SPAM
IP: 89.190.62.–
liborb
~ Redaktor
+18
Guru
4. 11. 2013   #2
-
0
-

Samozřejmě, že jde. Vstupní XML by mělo být správně tj. s jedním kořenovým tagem, takže třeba něco takového: 

<i attr='i'>
   <x attr='x'>
   </x>   
   <y attr='y'>
   </y>
</i>

Vyjdeme z obecné kopírky (neboli z transformace shodnosti), tj. z: 

<xsl:template match="*|@*">
	<xsl:copy>
		<xsl:apply-templates select="*|@*"/>
	</xsl:copy>
</xsl:template>

kterou upravím tak, aby kopírovala pouze kořenový tag a jeho atributy a pro další tagy volala jejich šablonu: 

<xsl:template match="i|@*">
	<xsl:copy>
		<xsl:apply-templates select="*|@*"/>
	</xsl:copy>	
</xsl:template>

no a přidáme kopírování tagu x (s jeho atributy) s vnořením jeho následovníků (tj. zde y): 

<xsl:template match="x">
	<xsl:copy>
		<xsl:apply-templates select="@*"/>
		<xsl:copy-of select="following-sibling::*" />
	</xsl:copy>
</xsl:template>

a to je celé neboli: 

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method='xml' indent='yes' />

<xsl:template match="i|@*">
	<xsl:copy>
		<xsl:apply-templates select="*|@*"/>
	</xsl:copy>	
</xsl:template>

<xsl:template match="x">
	<xsl:copy>
		<xsl:apply-templates select="@*"/>
		<xsl:copy-of select="following-sibling::*" />
	</xsl:copy>
</xsl:template>

</xsl:stylesheet>
Nahlásit jako SPAM
IP: 188.75.135.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

XSLT spolu s DB — založil jerkyrama

XML + XSLT v PHP — založil mylan4

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý