在PHP中,我们可以使用 libxml_use_internal_errors(true)和 libxml_get_errors()函数来检测XML文件的有效性,以下是具体的步骤:,1、使用 libxml_use_internal_errors(true) 开启错误报告。,2、使用 simplexml_load_file() 或 simplexml_load_string() 加载 XML文件或字符串。,3、使用 libxml_get_errors() 获取加载过程中的错误。,4、检查获取到的错误,如果返回的数组为空,那么说明XML文件有效,否则无效。,以下是示例代码:,这个函数接受一个XML文件路径作为参数,然后尝试加载它,如果加载过程中没有产生任何错误,那么就打印”XML文件有效”,否则打印”XML文件无效”。, ,<?php function checkXml($xmlFile){ libxml_use_internal_errors(true); // 开启错误报告 $simpleXml = simplexml_load_file($xmlFile); // 加载XML文件 $errors = libxml_get_errors(); // 获取错误 // 如果没有错误,则说明XML文件有效 if(empty($errors)){ echo “XML文件有效”; }else{ echo “XML文件无效”; } } ?>,
XML解析器是 一种用于读取和操作XML文档的软件工具。,XML(Extensible Markup Language,即可扩展标记语言)是一种通用的数据交换格式,它通过标签来定义数据的结构和内容,被广泛用于网络数据交换和配置文件中,XML的设计目的是为了使数据的交换和共享更加容易,同时它的平台无关性、语言无关性和系统无关性为数据集成与交互带来了极大的方便。,XML 解析器的主要功能是将XML文档转换为程序可以理解和操作的对象,以便进一步的处理和分析,以下是XML解析器的详细介绍:,1、 解析技术:, DOM (Document Object Model):将整个XML文档加载到内存中,形成一个树状结构,可以通过编程语言如JavaScript或Java等来操作这个结构。, SAX (Simple API for XML):基于事件驱动的解析方式,一边读取XML文档一边处理,适合处理大型XML文件,因为它不需要将整个文档加载到内存中。,2、 解析原理:,当解析器读取XML文档时,它会检查文档的语法是否正确,并构建相应的数据结构(如DOM树或事件流)。,这些数据结构可以被程序用来提取或修改XML文档中的数据。,3、 应用场景:, 网页开发:在浏览器中,XML解析器可以将XML文档转换为DOM对象,然后使用JavaScript进行操作。, Java应用程序:可以使用javax.xml.parsers包中的类来创建DOM或SAX解析器对象,以便在Java程序中处理XML数据。,XML解析器是处理XML文档的关键工具,它使得程序员能够在不同的编程环境中方便地操作和处理XML数据,无论是在客户端的浏览器中还是在服务器端的应用程序中,XML解析器都扮演着重要的角色。, ,
在XML中添加filter时遇到报错是一个常见的问题,这通常是由于多种原因造成的,例如filter的定义不正确, XML文件的格式错误,或者是相关的配置文件没有正确加载,以下是一些解决这个问题的详细指导。,我们需要了解filter在XML中的基本结构和用途,在XML中,filter通常用于筛选或修改数据流,它可以根据一定的条件,对XML文档中的数据进行过滤,只留下满足条件的数据。,常见错误分析,1、 语法错误:XML对格式非常敏感,如果filter定义的标签没有正确关闭,或者使用了不正确的字符,都会导致报错。,2、 未定义实体:如果filter中引用了未定义的实体或变量,解析器将无法识别,从而抛出错误。,3、 类型不匹配:filter中的条件表达式类型与数据类型不匹配,试图将字符串与数字进行比较。,4、 配置错误:filter可能依赖于外部配置文件,如果这些文件没有正确加载或者配置错误,也会导致添加filter时报错。,5、 权限问题:如果XML文件或相关的配置文件没有足够的访问权限,也会导致filter添加失败。,解决方案,1、 检查XML语法:仔细检查XML文件的语法,确保所有的标签都已正确关闭,字符使用得当。,“`xml,<!错误示例 >,<filter>,<condition>…</condition>,</filter>,<!缺少闭合标签 >,<!正确示例 >,<filters>,<filter>,<condition>…</condition>,</filter>,</filters>,“`,2、 定义实体和变量:确保filter中引用的所有实体和变量都在XML文档中定义。,“`xml,<!定义变量 >,<variables>,<variable name=”exampleVar” value=”exampleValue”/>,</variables>,“`,3、 类型匹配:在设置条件时,确保表达式两边的类型一致。,“`xml,<!正确的类型匹配 >,<condition variable=”exampleVar” operator=”equalTo” value=”100″/>,“`,4、 检查配置文件:如果filter依赖于外部配置文件,检查这些文件是否正确加载,配置项是否正确。,5、 调整权限:确保XML文件和相关的配置文件有足够的权限,以便应用程序可以读取和写入。,6、 使用日志:利用应用程序或服务器的日志功能,查找详细的错误信息,日志通常能提供错误的具体位置和原因。,7、 验证XML结构:使用XML Schema(XSD)或其他验证工具来检查XML文件的结构是否符合预期的格式。,8、 查阅文档:参考相关的XML和filter配置的文档,了解所有的配置选项和限制。,9、 错误示例分析:,假设我们遇到以下错误:,“`,XML Parsing Error: not wellformed,Location: path/to/xml/file.xml,Line Number: 10, Column 32:,“`,这意味着在文件的第10行,第32列有一个格式错误,需要检查那一行的代码,确保所有的标签都是正确闭合的,并且所有的特殊字符都被正确转义。,结论,在处理XML中添加filter的报错时,关键是要耐心和细致,通过以上步骤,应该能够定位并解决大部分的问题,如果问题仍然存在,可能需要深入分析XML解析器的具体实现,或是寻求专业的技术支持,在所有操作过程中,保持代码的整洁和良好的文档记录习惯,将有助于减少错误的发生,并使问题更容易解决。, ,
XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它具有自我描述性,允许用户定义自己的标签,在使用 XML的过程中,我们可能会遇到DTD(文档类型定义)报错,这是因为XML文档违反了 DTD定义的结构和规则,解决这类问题,我们需要遵循以下步骤:,1、理解DTD报错信息,当XML文件报错时,错误信息通常会提示具体的问题所在,如“URI is not registered”、“not wellformed (invalid token)”等,理解这些错误信息是解决问题的第一步。,“URI is not registered”错误通常表示XML解析器无法找到指定的DTD定义,这可能是因为DTD的URL地址错误或网络连接问题。,2、验证XML文件结构,检查XML文件是否符合DTD定义的结构,包括元素、属性和实体等的使用,以下是一些常见的结构问题:,标签拼写错误或大小写不正确;,忘记闭合标签或闭合标签位置错误;,属性值未加引号或引号使用错误;,使用了未定义的元素或属性;,文档中存在非法字符。,3、解决“URI is not registered”错误,如果遇到“URI is not registered”错误,可以尝试以下方法:,确保DTD的URL地址正确无误,注意URL地址中的大小写和结尾的斜杠;,如果是本地DTD文件,检查文件路径是否正确;,将DTD内容直接嵌入到XML文档中,而不是通过外部引用;,在开发工具(如IDEA)中配置DTD,添加到DTDS中。,4、解决“not wellformed (invalid token)”错误,这类错误通常是由于XML文件中存在非法字符或格式不正确导致的,以下是一些解决方法:,检查XML文件中是否有中文字符或其他非法字符,如有,请删除或转义;,确保所有的标签、属性和实体引用都符合XML规范;,使用UTF8编码保存XML文件,避免编码问题;,使用XML解析器时,指定正确的编码格式。,5、使用XML验证工具,使用XML验证工具可以帮助我们发现XML文件中的错误,许多开发工具(如Eclipse、IDEA等)都提供了内置的XML验证功能。,6、查阅文档和资料,如果以上方法都无法解决问题,建议查阅相关XML和DTD的文档和资料,了解规范,以便更好地理解问题所在。,7、社区和专家帮助,如果问题仍然无法解决,可以尝试在开发者社区、论坛和问答平台提问,寻求专家的帮助。,解决XML DTD报错需要我们耐心地分析错误信息,检查XML文件结构和内容,以及使用合适的工具和方法,通过逐步排查和尝试,我们通常可以找到问题所在并成功解决,在解决过程中,熟练掌握XML和DTD规范,善于利用开发工具和社区资源,将有助于提高解决问题的效率。,,
在使用Eclipse进行开发时,我们经常会遇到XML文件的报错提示不明显或者完全不提示的问题,这会大大降低我们的开发效率,并可能导致项目运行时出现预期之外的问题,以下是一些解决 Eclipse中 XML报错不提示问题的详细方法。,需要确认几点基本事项:,1、确保Eclipse安装完整,没有缺失必要的插件。,2、检查Eclipse是否处于正常工作状态,有时候软件的异常可能会导致各种提示功能失效。,3、确认项目的XML文件是否有正确的文件类型关联,即文件扩展名是否为.xml。,下面是针对Eclipse XML 报错不提示的一系列解决方案:,检查XML Validation设置,检查Eclipse中XML Validation的设置,确保它已经开启。,1、右击项目,选择“Properties”。,2、在左侧导航栏中选择“Validation”。,3、在右侧找到“XML”这一项,勾选下面的“Enable incremental validation”和“Enable automatic validation”。,4、点击“Apply”和“OK”应用更改。,清理和重建项目,清理项目然后重新构建它,有时候可以解决一些缓存或索引引起的问题。,1、右击项目,选择“Clean”。,2、等待清理过程完成,然后右击项目选择“Build Project”。,检查XML文件内容,确认XML文件没有语法错误,比如未闭合的标签、非法的字符等。,1、检查XML声明,确保它符合XML规范。,2、确保所有打开的标签都有相应的闭合标签。,3、使用正确的字符编码保存文件。,检查Eclipse插件,有些时候,某些插件可能与Eclipse内置的XML编辑器冲突。,1、检查已安装的插件,看是否有与XML编辑相关的插件。,2、如果发现冲突的插件,尝试禁用或卸载它们。,检查Eclipse问题报告,查看Eclipse的错误日志和问题报告,可能存在一些错误信息能提供为什么XML报错不提示的原因。,1、去Window > Show View > Error Log。,2、检查是否有关于XML解析的错误信息。,更新Eclipse和项目相关的Schema,如果XML文件依赖于某些Schema,确保这些Schema是最新的,并且正确地被引用。,1、查看XML文件顶部schemaLocation的声明,确保URL是有效的。,2、如果有本地schema文件,确保Eclipse可以访问到这些文件。,重置Eclipse Workspace,Eclipse工作空间可能会出现一些难以追踪的问题,重置工作空间是一个最后的手段。,1、关闭Eclipse。,2、删除工作空间目录下的 .metadata文件夹。,3、重新启动Eclipse,并重新导入项目。,配置XML编辑器设置,检查和调整XML编辑器的设置,可能某些选项关闭了错误提示。,1、打开Window > Preferences。,2、在左侧导航到“XML” > “XML Files” > “Editor”。,3、检查这里面的设置,确保没有关闭错误标记显示的选项。,以上方法都是针对Eclipse中XML报错不提示问题的潜在解决方案,如果上述方法都不能解决问题,可以考虑重新安装Eclipse,或者在社区论坛中寻求帮助,可能有一些相似的问题和解决方案可以参考。,通过以上步骤的检查和设置,通常可以解决大部分Eclipse中XML报错不提示的问题,在解决问题的过程中,需要耐心和细心,逐步排查,希望这些信息能够帮助你解决问题。, ,
在使用Eclipse进行开发时,我们经常会遇到各种配置文件,其中XML(Extensible Markup Language)是一种常用的标记语言,被广泛用于配置文件的编写,有时我们在编写 XML文件时,可能会遇到一些错误,但 Eclipse并没有给出报错提示,这可能会给我们的开发过程带来困扰,以下将详细分析为什么在Eclipse中编写XML文件可能不报错,以及如何解决这个问题。,我们需要了解Eclipse对XML文件的支持,Eclipse内置了XML编辑器,它可以对XML文件进行语法高亮、智能提示、错误检查等功能,当我们编写XML文件时,Eclipse会根据XML的语法规则进行检查,如果发现错误,通常会以红色波浪线或者错误提示的形式显示,但在某些情况下,Eclipse可能不会报错,这主要有以下几个原因:,1、缩进和格式问题:虽然缩进和格式不会影响XML文件的功能,但它们对于提高代码的可读性和维护性非常重要,有时,如果缩进和格式不正确,Eclipse可能不会报错,但这可能会导致其他问题,例如无法正确解析XML文件。,2、未知的XML实体或标签:如果XML文件中包含了Eclipse无法识别的实体或标签,Eclipse可能不会报错,这通常发生在自定义XML文件或者使用了非标准的XML命名空间时。,3、文件类型关联问题:如果Eclipse没有将XML文件正确地关联到内置的XML编辑器,那么它可能不会对XML文件进行错误检查,这时,我们需要检查Eclipse的文件关联设置。,4、缓存或索引问题:Eclipse有时可能会出现缓存或索引问题,导致XML文件没有正确地被解析和检查,重启Eclipse或者更新项目索引通常可以解决这个问题。,针对以上问题,以下是一些建议的解决方法:,1、检查XML文件格式:确保XML文件的缩进和格式正确,可以使用Eclipse的格式化功能(Ctrl+Shift+F)来优化XML文件的格式。,2、验证XML文件:我们可以使用Eclipse内置的XML验证功能来检查XML文件,右键点击XML文件,选择“Validate”菜单项,如果存在错误,Eclipse会给出提示。,3、检查XML命名空间:如果使用了自定义的XML实体或标签,确保已经正确地声明了命名空间,这可以通过在XML文件中添加相应的命名空间声明来实现。,4、修改文件关联:打开Eclipse的“Preferences”对话框,找到“General” > “Editors” > “File Associations”选项,确保XML文件关联到了内置的XML编辑器。,5、重启Eclipse和更新索引:如果怀疑是缓存或索引问题,可以尝试重启Eclipse,或者右键点击项目,选择“Maven” > “Update Project”来更新项目索引。,6、安装第三方XML编辑器:如果Eclipse内置的XML编辑器无法满足需求,可以考虑安装第三方XML编辑器插件,如XMLSpy、Notepad++等。,7、使用命令行工具:我们可以使用命令行工具(如xmllint)来检查XML文件的正确性,这可以帮助我们找出Eclipse没有检测到的错误。,8、仔细阅读XML规范:了解XML的语法和规范,有助于我们编写正确的XML文件,也可以参考相关文档,了解如何在Eclipse中更好地使用XML。,通过以上方法,我们应该能够解决Eclipse中XML不报错的问题,需要注意的是,在处理XML文件时,保持良好的编码习惯和遵循相关规范是非常重要的,这样,我们可以确保XML文件的正确性和稳定性,从而避免潜在的问题,不要忘记定期备份XML文件,以防在解决错误时丢失数据。, ,
在使用Eclipse进行开发时,经常会遇到XML文件的报错问题,这些错误可能是由多种原因引起的,比如 XML格式错误、DTD约束不满足、XML Schema验证失败等,以下是一些常见的XML 报错及其解决方法。,1、XML格式错误,XML格式错误通常是由于标签未正确关闭、特殊字符未转义、属性值未加引号等原因引起的。,解决方法:,确保所有标签都已正确关闭。,使用转义字符(如 < 表示 <, > 表示 >)替换XML保留字符。,为属性值添加引号(单引号或双引号)。,2、DTD约束不满足,当XML文件使用DTD约束时,如果不符合约束条件, Eclipse会报错。,在这个例子中,缺少了 <heading>元素。,解决方法:,根据DTD约束,确保XML文件中的元素和属性都符合要求。,如果需要修改DTD约束,可以修改DOCTYPE声明。,3、XML Schema验证失败,当XML文件使用XML Schema进行验证时,如果不符合Schema定义,Eclipse会报错。,在这个例子中,如果XML文件中的元素顺序或类型不正确,将无法通过验证。,解决方法:,根据XML Schema的定义,确保XML文件中的元素、属性和类型都符合要求。,如果需要修改XML Schema,可以修改相应的schema文件。,4、其他常见问题,字符编码问题:确保Eclipse中XML文件的字符编码与文件中声明的编码一致。,空格和换行问题:有时,XML文件中的空格和换行也会导致报错,可以通过设置Eclipse的XML格式化选项来解决。,插件冲突:某些情况下,Eclipse中的插件可能会导致XML文件报错,可以尝试禁用相关插件或重新安装Eclipse。,在解决Eclipse中XML报错问题时,首先要仔细阅读错误信息,了解错误原因,然后根据错误类型,逐一检查XML文件中的格式、DTD约束、XML Schema定义等,还可以参考以下方法:,使用Eclipse的XML编辑器,它提供了语法高亮、自动完成和错误提示等功能,有助于发现和解决XML问题。,使用Eclipse的“validate”功能,检查XML文件是否符合指定的约束。,在Eclipse的“Preferences”中,检查XML相关的设置,如字符编码、格式化选项等。,通过以上方法,相信大部分XML报错问题都可以得到解决,在实际开发过程中,熟练掌握XML相关知识,有助于提高开发效率和代码质量。, ,<error>这是一个错误的例子,因为没有关闭标签,<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <body>Don’t forget the meeting!</body> </note>,<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”> <xsd:element name=”note”> <xsd:complexType> <xsd:sequence> <xsd:element name=”to” type=”xsd:string”/> <xsd:element name=”from” type=”xsd:string”/> <xsd:element name=”heading” type=”xsd:string”/> <xsd:element name=”body” type=”xsd:string”/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>,
在使用 IDEA(IntelliJ IDEA)编写 XML 文件时,可能会遇到一些报错,导致无法正常编译或运行,以下是一些常见的 XML 报错及其解决方法,供您参考。,1、语法错误,XML 对语法要求非常严格,任何不符合语法规范的写法都会导致报错,标签未正确关闭、属性值未加引号等。,解决方法:检查 XML 文件中的标签、属性和文本是否符合 XML 语法规范,确保所有标签都已正确关闭,属性值使用双引号或单引号括起来。,2、命名空间错误,在使用 XML 命名空间时,可能会出现错误,命名空间声明不正确或未使用正确的命名空间。,解决方法:确保在使用命名空间时,正确声明命名空间前缀和对应的 URI,在 XML 文件中,为每个命名空间使用唯一的前缀,并在同一个文件中保持一致。,3、引用错误,XML 文件中可能包含对其他文件的引用,如 DTD、XML Schema 等,如果引用的文件不存在或路径错误,会导致报错。,解决方法:检查引用的文件路径是否正确,确保文件存在于指定的位置,如果引用的是网络资源,请检查网络连接是否正常。,4、验证错误,在 IDEA 中,可以配置 XML 文件的验证方式(如 DTD、XML Schema等),XML 文件不符合验证规则,将导致报错。,解决方法:检查 XML 文件是否符合所配置的验证规则,在 IDEA 中,可以通过点击文件右侧的 XML 标签,查看验证错误的具体原因。,5、编码错误,XML 文件的编码格式可能与其他文件不同,如果未正确设置编码格式,可能会导致乱码或报错。,解决方法:在 IDEA 中,可以通过以下步骤设置 XML 文件的编码格式:,1) 打开 File > Settings(或 Preferences)。,2) 选择 Editor > File Encodings。,3) 在 Global Encoding 和 Project Encoding 中,选择 UTF8(或其他需要的编码格式)。,4) 点击 OK,保存设置。,6、插件冲突,IDEA 中的插件可能会导致 XML 文件报错。,解决方法:检查是否安装了与 XML 处理相关的插件,并尝试禁用这些插件,如果问题得到解决,可以尝试更新或卸载插件。,7、其他错误,除了上述错误,还可能遇到其他类型的错误,以下是一些建议:,1) 确保 IDEA 和相关插件已更新到最新版本。,2) 清理和重建项目,以消除可能的缓存问题。,3) 如果问题仍然无法解决,可以尝试将 XML 文件内容简化,逐步排除错误原因。,在 IDEA 中编写 XML 文件时,遇到报错是很常见的情况,通过分析错误原因,采取相应的解决方法,通常可以解决问题,希望以上内容对您有所帮助。, ,
在HTML中,JavaScript 提供了几种方法来导入和处理 XML,以下是一个详细的技术教学,说明如何使用 JavaScript 从 XML 文件读取数据。,步骤1:准备XML文件,确保你有一个格式正确的XML文件。 data.xml 的内容可能如下:,步骤2:创建 HTML结构,在HTML文档中,你需要一个容器来显示XML数据,你可以创建一个列表:,步骤3:编写JavaScript代码,接下来,创建一个名为 loadXml.js 的 JavaScript 文件,用于加载和解析 XML 数据。,使用 XMLHttpRequest 对象,XMLHttpRequest 是传统的方式,用来异步获取 XML 数据。,使用 fetch API,现代浏览器支持 fetch API,它返回的是 Promise 对象,可以更简洁地处理异步操作。,步骤4:运行代码,将HTML文件和JavaScript文件放在同一个目录下,并在浏览器中打开HTML文件,你应该能看到来自XML文件的数据被解析并显示在页面上。,归纳,以上介绍了两种在HTML中使用JavaScript导入和解析XML的方法。 XMLHttpRequest 是一种传统方法,而 fetch API 提供了一种更现代的替代方案,根据你的需求和浏览器支持情况选择适合的方法,记得,由于同源策略的限制,如果XML文件位于不同的域,可能会遇到跨域问题,在这种情况下,你可能需要在服务器端配置CORS(CrossOrigin Resource Sharing)策略,或者使用JSONP等其他技术。, ,<?xml version=”1.0″ encoding=”UTF8″?> <items> <item> <name>Item 1</name> <description>This is item 1</description> </item> <item> <name>Item 2</name> <description>This is item 2</description> </item> </items>,<!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF8″> <title>Load XML with JavaScript</title> </head> <body> <ul id=”itemList”></ul> <script src=”loadXml.js”></script> </body> </html>,// loadXml.js function loadXMLDoc(filename) { if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { // IE5/IE6 xhttp = new ActiveXObject(“Microsoft.XMLHTTP”); } xhttp.open(“GET”, filename, false); try { xhttp.send(); } catch (e) { window.alert(“Unable to load file: ” + e); return null; } return xhttp.responseXML; } var xmlDoc =...
XML(可扩展标记语言)是一种用于描述数据的标记语言,而HTML(超文本标记语言)则是一种用于创建网页的标记语言,将 XML转换为HTML可以帮助我们更好地展示和处理数据,在本教程中,我们将学习如何使用Python将XML输出为HTML。,1、我们需要安装一个名为 lxml的Python库,它可以帮助我们处理XML和HTML数据,在命令行中输入以下命令进行安装:,2、接下来,我们将编写一个简单的Python脚本来读取XML文件并将其转换为HTML,我们需要导入所需的库:,3、我们将定义一个函数 convert_xml_to_html,该函数接受一个XML文件路径作为参数,并返回一个HTML字符串:,4、现在,我们可以使用 convert_xml_to_html函数将XML文件转换为HTML字符串,假设我们有一个名为 example.xml的XML文件,我们可以这样使用该函数:,5、我们可以将生成的HTML字符串保存到一个文件中,为此,我们可以使用以下代码:,现在,我们已经成功地将XML文件转换为HTML文件,你可以使用任何Web浏览器打开 output.html文件以查看生成的HTML内容。, ,pip install lxml,from lxml import etree,def convert_xml_to_html(xml_file): # 读取XML文件 tree = etree.parse(xml_file) root = tree.getroot() # 创建HTML根元素 html = etree.Element(‘html’) # 遍历XML树并将每个元素转换为HTML标签 for element in root.iter(): # 获取元素的标签名和属性 element_tag = element.tag element_attributes = ” if element.attrib: element_attributes = ‘ ‘ + etree.serialize(element.attrib) + ‘ ‘ # 获取元素的文本内容 element_text = element.text or ” # 创建HTML标签并设置属性和文本内容 html_element = etree.Element(element_tag + element_attributes) html_element.text = element_text # 将HTML标签添加到根元素中 html.append(html_element) # 将HTML树转换为字符串并返回 return etree.tostring(html, encoding=’unicode’, method=’html’).decode(‘utf8’),xml_file = ‘example.xml’ html = convert_xml_to_html(xml_file) print(html),with open(‘output.html’, ‘w’, encoding=’utf8′) as f: f.write(html)