xsl tutorial transformar template son qué manejo las hojas estilo español ejemplos cuáles componentes aplicación xslt dry

tutorial - ¿Cómo pueden estos documentos XSLT ser DRY-ed



xsl template (1)

He hecho dos páginas y ahora me pregunto si puedo SECARlas.

Aquí el XSLT:

Página principal: http://pastebin.com/yuZL913W dagboek-page: http://pastebin.com/6FGYvpvf (Editado)

Roelof

Lo siento, uno de los enlaces está mal. Edité esto.

Mi pregunta es cómo SECAR estos para que pueda reutilizar las piezas. Solo el <div id="posts"> es diferente. Creo que entiendo el relleno en los espacios en blanco, pero es un gran archivo xslt. ¿Es esto posible sin plantillas nombradas y plantillas de llamadas?


Aquí hay una forma: lo que llamo " Rellenar los espacios en blanco " para separar el contenido del procesamiento y parametrizar el procesamiento :

Archivo de representación (c: /temp/delete/nc3.xml) :

<html xmlns:gen="gen:gen"> <gen:data from="params" mode="top"/> <body > <div id="outer"> <div id="container"> <div id="search"> <form method="get" id="searchform" action="http://www.notepadchaos.com/"> <input type="text" value="" name="s" id="s" class="txtField" /> <input type="submit" id="searchsubmit" class="btnSearch" value="Find It " /> </form> </div> <div id="title"> <h2>Tamara Wobben</h2> </div> </div> <div id="content"> <div class="col01"> <div class="post"> <h3> <gen:data from="entry/title"/> </h3> <div class="post-inner"> <gen:data from="section/entry/tekst" /> </div></div></div> <div class="side-columns"> <div class="col02"> <div class="pages"> <!-- hier komen de losse pagina''s --> </div> <div class="pages-bottom"></div> <div class="categories-upper"></div> <div class="categories"> <!-- hier komt het menu --> </div> <div class="categories-btm"></div> </div> <div class ="col03"> <div class="recent-post" > <!-- hier komen de recente posts --> </div> <div class="postit-bottom"></div> </div> </div> <br style="clear:both" /> </div> <gen:data from="params" mode="down"/> </div> </body> </html>

Archivo de datos (c: /temp/delete/data.xml) :

<data> <params> <today>2011-12-29</today> <current-time>22:17</current-time> <this-year>2011</this-year> <this-month>12</this-month> <this-day>29</this-day> <timezone>+01:00</timezone> <website-name>Tamara Wobben</website-name> <page-title>frontpage</page-title> <root>http://test.tamarawobben.nl</root> <workspace>http://test.tamarawobben.nl/workspace</workspace> <root-page>frontpage</root-page> <current-page>frontpage</current-page> <current-page-id>6</current-page-id> <current-path>/?debug=xml</current-path> <parent-path>/</parent-path> <current-url>http://test.tamarawobben.nl/?debug=xml</current-url> <upload-limit>2097152</upload-limit> <symphony-version>2.2.5</symphony-version> <cookie-username>xxxx</cookie-username> <cookie-pass>xxxxx</cookie-pass> <site-mode>live</site-mode> </params> <events /> <image> <section id="7" handle="images">Images</section> <entry id="13"> <image size="22 KB" path="/images" type="image/jpeg"> <filename>img_5874.jpg</filename> <meta creation="2011-12-19T18:40:04+01:00" width="400" height="267" /> </image> </entry> </image> <recent-posts> <section id="9" handle="dagboek">Dagboek</section> <entry id="15"> <datum time="00:00" weekday="2">2005-02-22</datum> <titel handle="7-weken-echo">7 weken echo</titel> </entry> </recent-posts> <section> <section id="6" handle="sections">Sections</section> <entry id="12"> <title handle="even-voorstellen">Even Voorstellen</title> <tekst><p>FLOAT : img_5874.jpg</p> 55 56<p>Naam : Tamara Wobben<br /> 57Geboorte gewicht : 2000 gram<br /> 58Geboorte lengte : 44 cm.<br /> 59Geboortedatum : 1 september 2005 </p> </tekst> </entry> </section> </data>

Código XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:gen="gen:gen" exclude-result-prefixes="gen"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:param name="pFormPath" select= "''file:///c:/temp/delete/nc3.xml''"/> <xsl:param name="pDataPath" select= "''file:///c:/temp/delete/data.xml''"/> <xsl:variable name="vFormDoc" select="document($pFormPath)"/> <xsl:variable name="vDataDoc" select="document($pDataPath)"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="/"> <xsl:apply-templates select="$vFormDoc/*"/> </xsl:template> <xsl:template match= "gen:data [@from=''params'' and @mode=''top'' ]"> <!-- Use $vDataDoc to populate this --> T O P S T U F </xsl:template> <xsl:template match= "gen:data[@from=''entry/Title'']"> <!-- Use $vDataDoc to populate this --> E N T R Y T I T L E </xsl:template> <xsl:template match= "gen:data[@from=''section/entry/tekst'']"> <!-- Use $vDataDoc to populate this --> S E C T I O N E N T R Y T E X T </xsl:template> <xsl:template match= "gen:data [@from=''params'' and @mode=''down'' ]"> <!-- Use $vDataDoc to populate this --> D O W N S T U F </xsl:template> </xsl:stylesheet>

Archivo XML de origen (no utilizado):

<t/>

Cuando la transformación anterior se realiza en cualquier archivo XML (no utilizado), el archivo de representación se rellena con datos del archivo de datos . Las plantillas que procesan gen:data marcador de posición gen:data elementos de gen:data , son ficticias pero aún demuestran cómo funciona este proceso.

El resultado del procesamiento :

<html xmlns:gen="gen:gen"> T O P S T U F <body> <div id="outer"> <div id="container"> <div id="search"> <form method="get" id="searchform" action="http://www.notepadchaos.com/"><input type="text" value="" name="s" id="s" class="txtField"><input type="submit" id="searchsubmit" class="btnSearch" value="Find It "></form> </div> <div id="title"> <h2>Tamara Wobben</h2> </div> </div> <div id="content"> <div class="col01"> <div class="post"> <h3> <gen:data from="entry/title"></gen:data> </h3> <div class="post-inner"> S E C T I O N E N T R Y T E X T </div> </div> </div> <div class="side-columns"> <div class="col02"> <div class="pages"> <!-- hier komen de losse pagina''s --> </div> <div class="pages-bottom"></div> <div class="categories-upper"></div> <div class="categories"> <!-- hier komt het menu --> </div> <div class="categories-btm"></div> </div> <div class="col03"> <div class="recent-post"> <!-- hier komen de recente posts --> </div> <div class="postit-bottom"></div> </div> </div><br style="clear:both"></div> D O W N S T U F </div> </body> </html>

Nota :

  1. Este código puede llenar cualquier documento de representación (ruta pasada como un parámetro externo) utilizando los datos de cualquier documento de datos (nuevamente la ruta pasó como un parámetro externo). Por lo tanto, es posible crear diferentes salidas / formatos poblados con datos diferentes.

  2. Los marcadores de posición ( gen:data elementos de gen:data ) que se reemplazarán por "contenido en vivo" pueden tener diferentes formatos y semántica, sin límites a la imaginación.

  3. Los editores (expertos que no pertenecen a XSLT) pueden trabajar en uno o más documentos de renderización de forma independiente entre sí y de los desarrolladores de XSLT.

  4. Se logra un mayor grado de reutilización, flexibilidad y facilidad de mantenimiento.