GVKun编程网logo

html – 通过xslt和xml错误呈现的xforms

23

对于html–通过xslt和xml错误呈现的xforms感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于C#使用XSLT实现xsl、xml与html相互转换、IE9中如何解析XML和XSLT,並

对于html – 通过xslt和xml错误呈现的xforms感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于C#使用XSLT实现xsl、xml与html相互转换、IE9 中如何解析 XML 和 XSLT,並通過 XSLT 將 XML 轉換成 HTML?、javascript – 您可以使用JQuery通过XSLT将XML转换为XML、Python将xml和xsl转换为html的方法的有用信息。

本文目录一览:

html – 通过xslt和xml错误呈现的xforms

html – 通过xslt和xml错误呈现的xforms

我知道这个问题听起来像是“从过去”的事情,但我需要做一个功课,我不能让它工作.

问题如下:

我有从数据库调用的xml数据,我使用xslt在浏览器上呈现xforms文档,顺便说一下它的旧firefox 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></div>
            <div>
                <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>
                    <![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>

                    <ahttps://www.jb51.cc/tag/mds/" target="_blank">mdsecond" 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中的bug有关但我希望有另一种方法可以使这项工作,你的帮助将非常感激和抱歉我的英语,我正在学习:D

解决方法

好吧,我没有找到解决方案,但使用了一种解决方法来使这项工作.

由于问题出在Firefox上,我不得不以另一种方式渲染样式表,所以我使用aspnet在代码后面预渲染样式表(我忘了提到我正在使用它),然后我把它写到了使用Response.Write的页面,它使用html作为xsl:output方法的魅力

C#使用XSLT实现xsl、xml与html相互转换

C#使用XSLT实现xsl、xml与html相互转换

XML文件

books.xml:

<xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book genre="autobiography" publicationdate="1991" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

一、转为html文档

1、xsl文件

books.xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
    <head>
        <title>Price List</title>
    </head>
<body>
    <table>
        <xsl:apply-templates/>
    </table>          
</body>  
</HTML>
</xsl:template>

<xsl:template match="bookstore">
    <xsl:apply-templates select="book"/>
</xsl:template>

<xsl:template match="book">
    <tr>
        <td>
            <xsl:value-of select="title"/>
        </td>
        <td>
            <xsl:value-of select="price"/>
        </td>
    </tr>
</xsl:template>
</xsl:stylesheet>

2、转换

将books.xml按照books.xsl定义的格式转换成out.html

XslCompiledTransform trans = new XslCompiledTransform(); 
trans.Load(@"..\..\books.xsl"); 
trans.Transform(@"..\..\books.xml", "out.html");

3、结果

out.html:

<HTML>
  <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Price List</title>
  </head>
  <body>
    <table>
      <tr>
        <td>The Autobiography of Benjamin Franklin</td>
        <td>8.99</td>
      </tr>
      <tr>
        <td>The Confidence Man</td>
        <td>11.99</td>
      </tr>
      <tr>
        <td>The Gorgias</td>
        <td>9.99</td>
      </tr>
    </table>
  </body>
</HTML>

二、转为xml文档

1、prices.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myObj="urn:price-conv">

Price conversion factor
<xsl:param name="conv" select="1.15"/>

  <xsl:template match="bookstore">
  <bookstore>
  <xsl:for-each select="book">
    <book>
    <xsl:copy-of select="node()"/>
       <new-price>
          <xsl:value-of select="myObj:NewPriceFunc(./price, $conv)"/>        
       </new-price>
    </book>
  </xsl:for-each>
  </bookstore>
  </xsl:template>
</xsl:stylesheet>

2、转换XsltArgumentList.AddExtensionObject

在以下示例中,样式表使用 XSLT 扩展对象要转换的书籍价格。

using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

public class Sample {

   public static void Main() {

    // Create the XslCompiledTransform and load the stylesheet.
    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load("prices.xsl");

    // Create an XsltArgumentList.
    XsltArgumentList xslArg = new XsltArgumentList();
         
    // Add an object to calculate the new book price.
    BookPrice obj = new BookPrice();
    xslArg.AddExtensionObject("urn:price-conv", obj);

    using (XmlWriter w = XmlWriter.Create("output.xml"))
    {
        // Transform the file.
        xslt.Transform("books.xml", xslArg, w);
    }
  }

  // Convert the book price to a new price using the conversion factor.
  public class BookPrice{

    private decimal newprice = 0;
        
    public decimal NewPriceFunc(decimal price, decimal conv){
       decimal tmp = price*conv;
       newprice = decimal.Round(tmp, 2);
       return newprice;
    }
  }
}

三 、调用XSL参数

1、xml文件

order.xml

Represents a customer order
<order>
  <book ISBN=''10-861003-324''>
    <title>The Handmaid''s Tale</title>
    <price>19.95</price>
  </book>
  <cd ISBN=''2-3631-4''>
    <title>Americana</title>
    <price>16.95</price>
  </cd>
</order>

2、order.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param name="date"/>
  <xsl:template match="/">
    <order>
      <date><xsl:value-of select="$date"/></date>
      <total><xsl:value-of select="sum(//price)"/>total>
    </order>
  </xsl:template>
</xsl:stylesheet>

3、转换

下面的示例使用AddParam方法来创建表示当前日期和时间的参数。

using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;

public class Sample
{

    public static void Main()
    {

        // Create the XslCompiledTransform and load the stylesheet.
        XslCompiledTransform xslt = new XslCompiledTransform();
        xslt.Load("order.xsl");

        // Create the XsltArgumentList.
        XsltArgumentList xslArg = new XsltArgumentList();

        // Create a parameter which represents the current date and time.
        DateTime d = DateTime.Now;
        xslArg.AddParam("date", "", d.ToString());

        // Transform the file.
        using (XmlWriter w = XmlWriter.Create("output.xml"))
        {
            xslt.Transform("order.xml", xslArg, w);
        }
    }
}

四、使用 XML 控件

有时候你可能希望把带有其他内容的转换后的 HTML 输出和 Web 控件组合在一起,XML 控件在页面独立的部分显示 XSL 转换后的结果:

ID="Xml1" runat="server" DocumentSource="DvdList.xml"    TransformSource="DvdList.xslt">

注意: 你也可以用编码中XmlDocument 对象赋给 Document 属性,或者把一个包含 XML 内容的字符串赋给 DocumentContent 属性,而不是使用 DocumentSource 属性。类似的,你可以一个 XslTransform 对象值赋给 Transform 属性来提供 XSLT 信息。

到此这篇关于C#使用XSLT实现xsl、xml与html相互转换的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:
  • C#实现实体类和XML的相互转换
  • C# XML字符串包含特殊字符的处理转换方法小结
  • C#实现实体类和XML相互转换
  • C#实现XML与实体类之间相互转换的方法(序列化与反序列化)
  • C#实现将文件转换为XML的方法
  • C#中使用JSON.NET实现JSON、XML相互转换
  • C# XML与Json之间相互转换实例详解
  • C#对象与XMl文件之间的相互转换

IE9 中如何解析 XML 和 XSLT,並通過 XSLT 將 XML 轉換成 HTML?

IE9 中如何解析 XML 和 XSLT,並通過 XSLT 將 XML 轉換成 HTML?

以下為我在網上找的方法,但是好像是不行的    

 

var xstt = new ActiveXObject("Msxml2.XSLTemplate");  
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");  
var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");  
xmlDoc.loadXML(xml);  
xslDoc.loadXML(xslt);  
xstt.stylesheet = xslDoc;  
var xslProc = xstt.createProcessor();  
xslProc.input = xmlDoc;  
xslProc.transform();  
target.html(xslProc.output);  

javascript – 您可以使用JQuery通过XSLT将XML转换为XML

javascript – 您可以使用JQuery通过XSLT将XML转换为XML

我有一个网站,其中包含基于文档类型动态填充的文档的链接,所有数据都位于一个中央xml文件中.我想让 JQuery将参数传递给样式表,样式表根据传递的参数使用xpath隔离节点,然后根据属性对注释进行排序.从我发现的所有文档中,JQuery本身不支持XSLT,并且一旦原始xml被转换,没有任何第三方插件可以返回新的XML对象.我错过了什么或是我想要的不可能吗? xsl文件已经在javascript之外进行了测试,它运行完美.

这是没有转换的代码示例

$.ajax({
            type: "GET",url: "xml/charts.xml",dataType: "xml",success: function(xml) {        

        $(xml).find('chart').each(function(){
            // Create link here
        });

    }
});

解决方法

另一个是 http://jquery.glyphix.com/jquery.xslTransform/example/index.html上的jquery.xslTransform
// Now load both files into variables for the next 2 transformations
var xsldoc = $.xsl.load('test.xsl');
var xmldoc = $.xsl.load('test.xml');

// with an xpath
$('#with').getTransform(
    xsldoc,xmldoc,{
        xpath: '/test/inside'
    }
);

或者作为一般文件说明:

$.getTransform(
'path-to-xsl.xsl',// path or xsl document in javascript variable
'path-to-xml.xml',// path or xml document in javascript variable
{
  params: {                     // object for your own xsl parameters
    paramName1: 'paramValue1',paramName2: 'paramValue2'
  },xpath: '/test/inside',// trims your xml file to that defined by this xpath
  eval: true,// evaluates any <script> blocks it finds in the transformed result
  callback: function(){}        // getTransform evaluates this function when transformation is complete
});

// loads an xml file,parses it and stores it in xmlDoc
var xmlDoc = xslTransform.load('path-to-xml.xml');

在链接页面上有一个使用示例,猜测它可以满足您的需求,虽然它是sarissa的javascript包装器,它试图在所有浏览器中为XSL工具制作独立于浏览器的API.

Python将xml和xsl转换为html的方法

Python将xml和xsl转换为html的方法

本文实例讲述了Python将xml和xsl转换为html的方法。分享给大家供大家参考。具体分析如下:

这里需要用libxml2,所以还要先安装了libxml2模块才能使用。代码如下:

# -*- coding: mbcs -*-
#!/usr/bin/python
import libxml2,libxslt
class compoundXML:
  def __init__(self):
    self._result = None
    self._xsl = None
    self._xml = None
  def do(self,xml_file_name,xsl_file_name):
    self._xml = libxml2.parseFile(xml_file_name)
    if self._xml == None:
      return 0
    styledoc = libxml2.parseFile(xsl_file_name)
    if styledoc == None:
      return 0
    self._xsl = libxslt.parseStylesheetDoc(styledoc)
    if self._xsl == None:
      return 0
    self._result = self._xsl.applyStylesheet(self._xml,None)
  def get_xml_doc(self):
    return self._result      
  def get_translated(self):
    return self._result.serialize('UTF-8')    
  def save_translated(self,file_name):
    self._xsl.saveResultToFilename(file_name,self._result,0)
  def release(self):
    '''
    this function must be called in the end.
    '''
    self._xsl.freeStylesheet()
    self._xml.freeDoc()
    self._result.freeDoc()
    self._xsl = None
    self._xml = None
    self._result = None
if __name__ == '__main__':
  test = compoundXML()
  test.do('test/testxmlutil.xml','test/testxmlutil.xsl')
  print test.get_translated()
  test.save_translated('test/testxmlutil.htm')
  test.release()

希望本文所述对大家的Python程序设计有所帮助。

今天关于html – 通过xslt和xml错误呈现的xforms的介绍到此结束,谢谢您的阅读,有关C#使用XSLT实现xsl、xml与html相互转换、IE9 中如何解析 XML 和 XSLT,並通過 XSLT 將 XML 轉換成 HTML?、javascript – 您可以使用JQuery通过XSLT将XML转换为XML、Python将xml和xsl转换为html的方法等更多相关知识的信息可以在本站进行查询。

本文标签: