对于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
- C#使用XSLT实现xsl、xml与html相互转换
- IE9 中如何解析 XML 和 XSLT,並通過 XSLT 將 XML 轉換成 HTML?
- javascript – 您可以使用JQuery通过XSLT将XML转换为XML
- Python将xml和xsl转换为html的方法
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相互转换
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?
以下為我在網上找的方法,但是好像是不行的
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
这是没有转换的代码示例
$.ajax({ type: "GET",url: "xml/charts.xml",dataType: "xml",success: function(xml) { $(xml).find('chart').each(function(){ // Create link here }); } });
解决方法
// 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的方法。分享给大家供大家参考。具体分析如下:
这里需要用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的方法等更多相关知识的信息可以在本站进行查询。
本文标签: