O Sitemesh gosta de funcionalidade com o XSLT?

Recentemente, fiz uma pergunta sobre o uso do XSL / t para criar um layout de site e páginas filhoAqui.. Onde o layout decoraria a página filha. Quero expandir essa ideia e criar o SiteMesh como funcionalidade. Observe que eu vou ter um número muito pequeno de arquivos de layout xsl, a maioria dos meus arquivos xsl deve ser para as páginas filho. O layout é bastante básico, inclui um cabeçalho, um menu principal, um rodapé e um corpo com uma div de conteúdo abaixo dela. O SiteMesh permite definir arquivos de modelo como um arquivo html bastante padrão e, em seguida, páginas filhas que substituirão seções do pai. Por exemplo, aqui está um modelo básico (decorador) para sitemesh:

<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>

<head>
  <title>
    <decorator:title default="SiteMesh Tutorial Example" /> - Site Title
  </title>
  <style type="text/css">@import "css/global.css";</style>
  <decorator:head />
  <body>
    <div id="header">
      <h2><a href="http://www.my-site.com/">Mysite.com</a> goes here</h2>
    </div>
    <div id="content">
      <decorator:body />
    </div>
  </body>
</html>

E então aqui seria um exemplo de uma página filha:

<html>
  <head>
    <title>Child Page</title>
    <style type='text/css'> 
     p { margin: 10 }    
    </style>
  </head>
  <body>
    Content Goes here
  </body>
</html>

Depois que o decorador é aplicado à página filha, o resultado contém o corpo da página filha em que odecorador: corpo estava em, e odecorador: cabeça é substituído também, etc. Muito simples como ele funciona e uma maneira bastante eficaz de organizar um site.

Agora, digamos que estamos usando XSL / T e queremos usar uma estrutura semelhante, na qual não redefinimos a aparência do layout, em vez disso, definimos isso com sorte apenas uma vez (ou talvez algumas vezes para páginas que não são " muito semelhante) e substituímos as seções se o modelo filho as possuir. Parece que isso seria muito simples, mas o problema é que os dados que suportam este site terão a aparência (não é realmente um blog, mas apenas um exemplo do que estou lidando)

<xml>
<section>Blogs</section>
<page>UserBlogs</page>
<data>
 <blogs>
   <blog>
     <title>First Blog</title>
     <author>John Doe</author>
     <description>...</description>
   </blog>
 </blogs>
</data>
</xml>

Então agora vamos dizer que eu tenho um mestre t, emplaca assim:

<html>
<head>
  <title><!-- replace this with child title --> - Site Title</title>
  <script src="common-scripts.js"></script>
  <style type="text/css">@import "common.css" </style>
  <!-- insert everything in the child <head> here except the title -->

</head>
<body>
  <div id="header">Header/log that stuff here</div>
  <div id="menu">
     <ul><li><a href="#">Cat 1</a></li><li><a href="#">Cat 2</a></li></ul>
  </div>
  <div id="content">
    <!-- replace this with everything between <body>...</body> in the child -->
  </div>
  <div id="footer">My Site, copyright, bla bla</div>
</body>
</html>

Então, o que eu quero fazer é pegar esse xml de cima (aquele sobre blogs) e aplicá-lo à minha página filha, pegar o resultado dessa transformação e aplicá-lo ao meu modelo mestre (que copiará / aplicará elementos conforme necessário ) Não tenho certeza se existe uma maneira de fazer isso em uma única transformação. Atualmente, a arquitetura é tal que eu recebo o xml como mostrado, e preciso transformá-lo em uma página. Pensei que talvez o modelo mestre incluísse o modelo filho e, em seguida, use xsl: call-template embrulhado em uma declaração xsl: variable para capturar os resultados do modelo filho no xml atual. Preciso, de alguma forma, obter os resultados dessa transformação para substituir a seção de título / cabeçalho / conteúdo dos modelos principais.

Alguma idéia de como isso pode ser feito?

Eu vejo neste site:http://www.devguru.com/technologies/xslt/quickref/xslt_element_calltemplate.html que você pode capturar os resultados de um modelo de chamada xsl: na declaração de variável xsl: Estou confuso como você pode usar esses dados além de utilizá-los

Qualquer ajuda seria apreciada

questionAnswers(1)

yourAnswerToTheQuestion