2011-11-28 12 views
7

我知道這個問題聽起來像一個「從過去」的事情,但我需要做這個功課,我不能讓它工作。通過xslt和xml錯誤呈現的xforms

的問題如下:

我的XML數據,從數據庫中調用,我使用XSLT來呈現在瀏覽器中的XForms文檔,由只安裝使用方式的舊火狐3.6 xforms擴展。 它正確呈現xforms文檔,但控件並不像預期的那樣工作,我不能提交表單並且實例數據也沒有填充輸入。

我的XSL樣式表如下:

<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> 

和我的XML代碼如下所示:

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

我認爲這個問題是<xsl:output method="xml"屬性 ,因爲XForms的要求XHTML來呈現,但是當我創建它時,firefox會拋出XSLT異常。

請幫忙!我已經到處搜索了,我發現它有一些與Firefox中的錯誤,但我希望有另一種方法來使這項工作,你的幫助將非常感激和對我的英語感到抱歉,我目前正在學習:D

+1

沒有xhtml輸出這樣的東西。它可以是XML,HTML,文本。 Firefox支持html/xml。 – FailedDev

+0

@FailedDev,你的意思是在XSLT 1.0中沒有'xhtml'輸出*方法*?這是真的,但你可以從XSLT 1.0輸出XHTML,因爲它是XML。所以我不確定你在說什麼。 – LarsH

+1

您可以嘗試使用另一個XSLT處理器進行轉換 - 特別是使用可指定'的XSLT 2.0處理器 - 然後嘗試查看生成的結果是否具有預期的行爲。如果情況並非如此,那麼你對問題原因的假設是錯誤的。 –

回答

0

好的,我沒有找到一個解決方案,但使用一種解決方法,使這項工作。

由於問題出在Firefox上,我不得不以另一種方式渲染樣式表,所以我使用aspnet在代碼後面預渲染樣式表(我忘記提及我正在使用它),然後我使用Response.Write將它寫入頁面,它像使用html一樣使用html作爲xsl:輸出方法