2011-11-28 10 views
7

Sé que esta pregunta parecerá algo "del pasado", pero tengo que hacer esto para hacer los deberes y no puedo hacer que funcione.xforms prestados a través de xslt y xml error

El problema lo siguiente:

tengo datos XML, llamados desde una base de datos, que utilizan XSLT para hacer un documento xforms en el navegador, por la forma en que su antiguo Firefox 3.6 que fue instalado sólo para utilizar el xforms extensión. Representa el documento de xforms correctamente, pero los controles no funcionan como se esperaba, no puedo enviar un formulario y tampoco los datos de la instancia completan las entradas.

Mi hoja de estilo XSL es el siguiente:

<xsl:stylesheet version="1.0" 
      xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:xf="http://www.w3.org/2002/xforms"> 
<xsl:output method="xml" 
indent="yes" 
omit-xml-declaration="yes" 
media-type="application/xhtml+xml" 
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" /> 
<xsl:template match="/"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" dir="ltr" lang="es"> 
     <head> 
      <xf:model> 
       <xf:instance> 
        <data xmlns=""> 
         <iCargo_Id>1</iCargo_Id> 
         <sCargo_Desc>lalala</sCargo_Desc> 
         <iConcurrencia_Id>1</iConcurrencia_Id> 
        </data> 
       </xf:instance> 
       <xf:submission id="prueba" action="EditarCargos.aspx" method="post"/> 
      </xf:model> 

      <link href="../css/style.css" rel="stylesheet" type="text/css" /> 
      <title><![CDATA[Adicionar Cargos]]></title> 
     </head> 
     <body> 
      <div class="header"></div> 
      <div class="menu"> 
       <a href="../empleados/editarempleados.aspx"><![CDATA[Empleados]]></a> 
       <a href="../horarios/editarhorarios.aspx"><![CDATA[Horarios]]></a> 
       <a href="../jornadas/editarjornadas.aspx"><![CDATA[Jornadas]]></a> 
       <a href="../cargos/editarcargos.aspx"><![CDATA[Cargos]]></a> 
       <a href="../usuarios/editarusuarios.aspx"><![CDATA[Usuarios]]></a> 
       <a href="../profesiones/editarprofesiones.aspx"><![CDATA[Profesiones]]></a> 
       <a href="../reportes/ReporteMarcaciones.aspx"><![CDATA[Rep. de Marcaciones]]></a> 
       <a href="../cerrarSesion.aspx"><![CDATA[Cerrar Sesión]]></a> 
      </div> 
      <div id="main"> 
       <div class="mainTitle"> 
        <![CDATA[Adicionar Cargos]]> 
       </div> 
       <div> 
        <xf:input ref="sCargo_Desc"> 
         <xf:label><![CDATA[Cargo]]></xf:label> 
        </xf:input> 
        <div> 
         <xf:submit submission="prueba"> 
          <xf:label><![CDATA[Guardar Cambios]]></xf:label> 
         </xf:submit> 
        </div> 
       </div> 
       <div> 

        <a class="cmdSecond" href="EditarCargos.aspx"><![CDATA[Volver]]></a> 
       </div> 
      </div> 
     </body> 
    </html> 
</xsl:template> 
<xsl:template match="cargo[iCargo_Id]"> 
    <iCargo_Id> 
     <xsl:value-of select="iCargo_Id"/> 
    </iCargo_Id> 
    <sCargo_Desc> 
     <xsl:value-of select="sCargo_Desc"/> 
    </sCargo_Desc> 
    <iConcurrencia_Id> 
     <xsl:value-of select="iConcurrencia_Id"/> 
    </iConcurrencia_Id> 
</xsl:template> 
<xsl:template match="cargo[not(iCargo_Id)]"> 
    <iCargo_Id></iCargo_Id> 
    <sCargo_Desc></sCargo_Desc> 
    <iConcurrencia_Id></iConcurrencia_Id> 
</xsl:template> 
</xsl:stylesheet> 

y mi código XML siguiente aspecto:

<cargo> 
    <iCargo_Id>1</iCargo_Id> 
    <sCargo_Desc>Jefe de Sistemas</sCargo_Desc> 
    <iConcurrencia_Id>1</iConcurrencia_Id> 
</cargo> 

Creo que el problema es el atributo <xsl:output method="xml" , porque xforms requiere XHTML para hacer, pero Firefox lanza una excepción XSLT cuando lo hago.

por favor ayuda! He buscado en todas partes, y he encontrado que tiene algo que ver con un error en Firefox pero espero que haya otra manera de hacer que esto funcione, tu ayuda será muy apreciada y lo siento por mi inglés, actualmente estoy aprendiendo: D

+1

No existe la salida xhtml. Puede ser xml, html, texto. Firefox es compatible con html/xml. – FailedDev

+0

@FailedDev, ¿quiere decir que no hay un método de salida 'xhtml' * en XSLT 1.0? que es cierto, pero puede generar XHTML desde XSLT 1.0, ya que es XML. Entonces no estoy seguro de lo que estás diciendo. – LarsH

+1

Puede intentar transformar con otro procesador XSLT, particularmente con un procesador XSLT 2.0 donde puede especificar '' - luego intente ver si el resultado producido tiene el comportamiento esperado. Si esto no es así, entonces su hipótesis para la causa del problema es incorrecta. –

Respuesta

0

bien, no encontré una solución, pero utilicé una solución alternativa para que esto funcione.

Como el problema era con Firefox, tuve que renderizar la hoja de estilo de otra manera, así que usé aspnet para preescribir la hoja de estilo en el código (olvidé mencionar que estaba trabajando con ella), y luego lo escribió en la página utilizando Response.Write y funcionó como un encanto usando html como el método xsl: output