Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

The Queen

ASP e XSLT 2

Recommended Posts

Trabalho com arquivos XML para geração de relatórios complexos .... Precisei gerar um relatório que usava vários níveis de subtotais .... a maneira mais fácil que consegui para transformar o xml bruto em relatório web foi usando funções próprias para isso no XSLT versão 2. Porém quando tento carregá-lo na web, o componente nativo do IIS para XML não reconhece a versão 2.0 do XSLT, ele só reconhece a versão 1.0.

Dúvidas:

1-Alguém conhece um componente para ISS 5.1 capaz de ler esta versão do XSLT?

2-Alguém conhece uma função que carregue o xml e xslt como página da web?

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se esse link te ajuda:

 

http://www.freecode.com.br/forum/index.php...iew=getlastpost

 

Qualquer coisa posta aí.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funciona ... eu estava tentando isso mas Msxmldom não suporta o XSLT 2 ... acredito que deve haver uma sdk ou coisa parecida para converter este formato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja tentou fazer o update do Windows, pode ser que ja tenha uma versão que seje compativel com 2.0 do XSLT, ou instalar o IIS 6 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não posso instalar o IIS6 pois o servidor web daqui do trabalho é o IIS 5.1. O problema real é que eu preciso criar relatórios com vários níveis de subtotais e no xsl 2 tem a clausula fro-each-group que gera facilmente estes subtotais. Se houver outro jeito de criar eu fico agradecida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser que por uma limitação do serviço (IIS) nao dando suporte pra essa versão, e consequentemente nao reconhecendo o for-each-group, você terá que criar os relatórios no modo tradicional, usando as funções do ASP (WHILE), somando, armazenando em variáveis e exibindo os totais dos níveis.

 

Caso eu veja alguma coisa sobre isso, torno a postar.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok...

 

Após conseguir, compartilhe com o pessoal a sua solução. Sucessos...

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer o subtotal usando um método de agrupamento chamado MÉTOD MUENCHIAN ....

LINK: http://www.jenitennison.com/xslt/grouping/

 

Vou colocar o xml e xsl usado para o agrupamento ... qualquer dúdida é só manda um e-mail:

 

 

 

XML....

 

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="rel_total_resumo2.xsl"?>

<Total>

<Resumo>

<SUBGRUPO>CDC - DEMAIS CONVENIOS</SUBGRUPO>

<GRUPO>DEMAIS CONVENIOS</GRUPO>

<VALANT>124343.99</VALANT>

<VALATU>201007.64</VALATU>

<METANT>198400</METANT>

<METATU>125469</METATU>

<VALDIA>2309</VALDIA>

</Resumo>

<Resumo>

<SUBGRUPO>CDC - DEMAIS CONVENIOS</SUBGRUPO>

<GRUPO>DEMAIS CONVENIOS</GRUPO>

<VALANT>124343.99</VALANT>

<VALATU>201007.64</VALATU>

<METANT>198400</METANT>

<METATU>125469</METATU>

<VALDIA>2309</VALDIA>

</Resumo>

<Resumo>

<SUBGRUPO>DEMAIS - OUTROS CONVÊNIOS</SUBGRUPO>

<GRUPO>DEMAIS CONVENIOS</GRUPO>

<VALANT>34328958.16</VALANT>

<VALATU>35042103.4</VALATU>

<METANT>16969010</METANT>

<METATU>789456</METATU>

<VALDIA>1566626.72</VALDIA>

</Resumo>

<Resumo>

<SUBGRUPO>FEDERAIS</SUBGRUPO>

<GRUPO>DEMAIS CONVENIOS</GRUPO>

<VALANT>4164723.79</VALANT>

<VALATU>539219.01</VALATU>

<METANT>1700000</METANT>

<METATU>45684</METATU>

<VALDIA>66163.19</VALDIA>

</Resumo>

<Resumo>

<SUBGRUPO>NACIONAIS</SUBGRUPO>

<GRUPO>DEMAIS CONVENIOS</GRUPO>

<VALANT>27185902.47</VALANT>

<VALATU>28976469.78</VALATU>

<METANT>13558321</METANT>

<METATU>423578</METATU>

<VALDIA>954334.74</VALDIA>

</Resumo>

<Resumo>

<SUBGRUPO>CDC - INSS</SUBGRUPO>

<GRUPO>INSS</GRUPO>

<VALANT>9834234.67</VALANT>

<VALATU>9718739.84</VALATU>

<METANT>3722800</METANT>

<METATU>9635842</METATU>

<VALDIA>3010030.4</VALDIA>

</Resumo>

<Resumo>

<SUBGRUPO>INSS</SUBGRUPO>

<GRUPO>INSS</GRUPO>

<VALANT>76465908.4</VALANT>

<VALATU>84403155.06</VALATU>

<METANT>60685817</METANT>

<METATU>746422</METATU>

<VALDIA>34758989.22</VALDIA>

</Resumo>

<Resumo>

<SUBGRUPO>INSS</SUBGRUPO>

<GRUPO>INSS</GRUPO>

<VALANT>76465908.4</VALANT>

<VALATU>84403155.06</VALATU>

<METANT>60685817</METANT>

<METATU>787874</METATU>

<VALDIA>34758989.22</VALDIA>

</Resumo>

</Total>

 

 

 

XSL ...

 

<?xml version="1.0" encoding="UTF-8"?>

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

<!-- Chaves -->

<xsl:key use="GRUPO" name="linha-por-grupo" match="Resumo"/>

<xsl:key use="concat(GRUPO, '+', SUBGRUPO)" name="linha-por-grupo-e-subgrupo" match="Resumo"/>

<!-- **********************************************-->

<xsl:template match="Total">

<html>>

<body>

<table border="1">

<xsl:for-each select="Resumo[not(preceding-sibling::Resumo[1]/GRUPO = GRUPO)]">

<xsl:variable name="grupo-por-grupo" select="key('linha-por-grupo', GRUPO)"/>

<xsl:for-each select="$grupo-por-grupo[not(preceding-sibling::Resumo[1]/SUBGRUPO = SUBGRUPO)]">

<xsl:variable name="grupo-por-subgrupo" select="key('linha-por-grupo-e-subgrupo', concat(GRUPO, '+', SUBGRUPO))"/>

<xsl:if test="position() = 1">

<tr>

<td>

<xsl:value-of select="GRUPO"/>

</td>

<td>qqqq</td>

<td>qqqq</td>

<td>qqqq</td>

<td>qqqq</td>

<td>qqqq</td>

<td>qqqq</td>

<td>qqqq</td>

<td>qqqq</td>

<td>qqqq</td>

</tr>

</xsl:if>

<tr>

<td>

<xsl:value-of select="SUBGRUPO"/>

</td>

<td>

<xsl:value-of select="format-number(sum($grupo-por-subgrupo/VALANT), '##.00')"/>

</td>

<td>

<xsl:value-of select="format-number(sum($grupo-por-subgrupo/METANT), '##.00')"/>

</td>

<td>

<xsl:value-of select="format-number(sum($grupo-por-subgrupo/VALANT) div sum($grupo-por-subgrupo/METANT), '.00%')"/>

</td>

<td>

<xsl:value-of select="format-number(sum($grupo-por-subgrupo/VALDIA), '##.00')"/>

</td>

<td>

<xsl:value-of select="format-number(sum($grupo-por-subgrupo/VALATU), '##.00')"/>

</td>

<td>

<xsl:value-of select="format-number(sum($grupo-por-subgrupo/METATU), '##.00')"/>

</td>

<td>

<xsl:value-of select="format-number(sum($grupo-por-subgrupo/VALATU) div sum($grupo-por-subgrupo/METATU), '.00%')"/>

</td>

<td>

<xsl:value-of select="format-number((sum($grupo-por-subgrupo/VALATU) div 20)*22, '.00')"/>

</td>

<td>

<xsl:value-of select="format-number(((sum($grupo-por-subgrupo/VALATU) div 20)*22) div sum($grupo-por-subgrupo/METATU), '.00%')"/>

</td>

</tr>

<xsl:if test="position() = last()">

<xsl:call-template name="subtotal">

<xsl:with-param name="ggrupo" select="$grupo-por-grupo"/>

</xsl:call-template>

</xsl:if>

</xsl:for-each>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

<xsl:template name="subtotal">

<xsl:param name="ggrupo"/>

<tr>

<td style="font-weight: bold;">

Total <xsl:value-of select="$ggrupo/GRUPO"/> -->

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(sum($ggrupo/VALANT), '##.00')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(sum($ggrupo/METANT), '##.00')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(sum($ggrupo/VALANT) div sum($ggrupo/METANT), '.00%')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(sum($ggrupo/VALDIA), '##.00')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(sum($ggrupo/VALATU), '##.00')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(sum($ggrupo/METATU), '##.00')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(sum($ggrupo/VALATU) div sum($ggrupo/METATU), '.00%')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number((sum($ggrupo/VALATU) div 20)*22, '.00')"/>

</td>

<td style="font-weight: bold;">

<xsl:value-of select="format-number(((sum($ggrupo/VALATU) div 20)*22) div sum($ggrupo/METATU), '.00%')"/>

</td>

</tr>

</xsl:template>

</xsl:stylesheet>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.