在 PHP 中验证 XHTML5?

2023-12-13

背景

I have made the decision to serve my website as application/xhtml+xml to anyone who will accept it. I understand that there are consequences, which consequences I'm willing to accept.

Problem

I'm trying to validate XHTML5 in PHP. That way, I can serve the file as text/html if validation fails (hey, ain't nobody perfect). My question has merit even when taken outside of my situation, though.

那么我有哪些选项来验证 XHTML5?


我做了什么:

我已经在使用 PHP 了DOMDocument在我的源代码中作为模板的形式,所以我希望能够使用DOMDocument::relaxNGValidate or DOMDocument::schemaValidate。我都找不到.xsd nor .rng使用。不过,我想我已经找到了制作 rng 语法的目录在......之外。在今天之前,我从未听说过 Relax NG。对这个方向有帮助吗?


正如 @Kevin Peno 指出的那样,HTML5 不是 XML,尽管这最初让我感到不舒服,但我已经接受了它,并决定仅将 HTML5 视为最终输出格式,而不是有潜力的文档。通过 XML 工具重新使用和转换。

如果您希望走这条路,我的建议是通过保证 XML 有效的清理过程传递您的 HTML5 标记(我会想到 Tidy 等工具)。

您的另一个选择是重新考虑您的方法并将 HTML 视为最终输出格式。使用不同的标记语言来存储内容,甚至可能存储网站的结构。

例如,您可以将 Markdown 用于内容(轻松转换为 HTML)。如果您更愿意坚持使用 XML,也许可以定义您自己的 DSL,或者重复使用诸如简化文档手册。过去这对我来说效果很好。

然后利用 XSL 将 XML 混搭转换为 HTML5 或您喜欢的任何输出格式。

现在,要尝试直接回答您的问题,您肯定需要“整理” HTML5 标记,以确保它是有效的 XML,然后再使用 RelaxNG 或 XML Schema 等验证工具。至于您的 RNG 架构文件,我建议首先查找 XHTML 1.0 Strict .rng,然后仔细阅读 HTML5 规范并根据需要添加元素和属性。谷歌快速搜索出现了下列.

如果您在 RNG 和 XML Schema 之间做出选择,请选择 RelaxNG,这样可以省去一些麻烦。这是我的观点,但我已经广泛使用了这两种方法,并且 RelaxNG 更具人类可读性并且更易于使用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 中验证 XHTML5? 的相关文章

随机推荐

  • JSOUP HTML 解析器

    有没有办法得到起始行号和列号 and 结束行号和列号元素 标签 我正在创建 HTML 编辑器 需要突出显示标签以根据给定的某些场景进行速度优化起始和结束行号和列号 不 不幸的是 目前 jsoup 无法做到这一点 目前 Jsoup 不跟踪行号
  • Facebook Connect 和相册

    我目前正在为模特 演员开发一个网站 此时我只是想确定我可以使用 Facebook Connect 做什么和不能做什么 我几乎没有使用 Facebook Connect 或 FQL 的经验 基本上将会有一个设施 用户可以上传他们的照片 我想知
  • 在Android中播放Vimeo视频,视频url包含iframe

    你好 我正在开发 Android 应用程序 我想在其中播放 vimeo 视频 我从 json 中的 Api 获得响应 并使用 webview 播放视频 并且播放效果很好 但是 webview 显示非常小 播放的视频也很小 问题是 我希望播放
  • Mysql更改默认引擎

    如何将mysql引擎改为MYISAM 现在我有 INNODB 的 mysql 但我想将引擎更改为 MYISAM 我必须做什么 CREATE TABLE classifieds category id int 11 NOT NULL AUTO
  • laravel新建数据时无法按类别保存计算数据

    模型花费时间 在 laravel 中创建新数据时 无法按类别保存计算数据 public static function findOrCreate plan id data fromDate Carbon now gt subDay gt s
  • Android主项目与库项目-如何在项目之间传递设置

    刚刚开始使用 Android 我正在尝试创建一个具有免费和付费版本的应用程序 我也是 Java 新手 但我成功地在 Eclipse 中创建了一个简单的工作应用程序 它由 2 个主要项目组成 一个是免费版本 一个是付费版本 我还有一个库项目
  • 如何获取字符串中所有出现 Ruby 正则表达式的匹配数据?

    我需要MatchData对于字符串中正则表达式的每次出现 这与中建议的扫描方法不同匹配正则表达式的所有出现 因为这只给了我一个字符串数组 我需要完整的 MatchData 以获取开始和结束信息等 input abc12def34ghijkl
  • 在数据库中存储时间 (hh:mm) 的最佳方法

    我想将时间存储在数据库表中 但只需要存储小时和分钟 我知道我可以只使用 DATETIME 并忽略日期的其他组成部分 但是在不存储超出我实际需要的信息的情况下执行此操作的最佳方法是什么 您可以将其存储为午夜过后分钟数的整数 eg 0 00 0
  • 如果我包含某个包,Flutter Android 应用程序会在启动时崩溃

    最近突然出现了一个问题 只需将依赖项包含在 pubspec yaml 中的 位置 中 例如 dependencies flutter sdk flutter location 1 2 0 lt culprit firebase auth 0
  • 最短的GAS ARM (linux) 程序?

    我曾考虑过学习汇编语言 并决定尝试一下 ARM 我决定使用 GNU 汇编器 主要是因为它可以在我的手机存储库中找到 这样如果我感到无聊 我可以在任何地方尝试汇编 无论如何 我在网上搜索过 但找不到任何有关如何正确退出 ARM Linux 二
  • Java - 为什么强制垃圾收集不释放内存

    我正在生成一个大型数据结构并将其写入硬盘 之后我想摆脱该对象 以减少内存消耗 我的问题是 在强制垃圾收集之后 已用内存量至少与垃圾收集之前一样高 我添加了一个我正在做的最小工作示例 DataStructure data new DateSt
  • 在华为开发者控制台中为华为应用添加关键字

    我需要为用户提供在华为应用程序库中搜索我的应用程序的能力 就像苹果在应用程序商店中的关键字一样 但我在华为开发者控制台中找不到与之等效的内容 华为提供多种广告类型来帮助您增加Android应用的下载量 您可以设置字词或短语 使您的广告与用户
  • 如何将一个表单的实例传递给另一个表单

    我有一个名为form1带有在运行时创建的控件 当我按下表单上的按钮时 另一个表单会加载 称为combat and form1被隐藏 因此只有 1 种形式 combat 可见 当我按下按钮时combat我想要我的form1形成所显示的 但是我
  • jQuery 方法不适用于事件处理程序中的“this”

    当我使用下面的方法时 我无法获取 jQuerythis隐藏该元素 purplePanda click function e this hide 我收到此错误 Uncaught TypeError this hide is not a fun
  • 参数通过 ByVal 传递给 VB.NET 函数并在那里进行操作

    在此 Microsoft 示例中 将 Double 数组传递给函数MultiplyMatricesSequential and MultiplyMatricesParallel 作为参数结果使用ByVal修饰符 http msdn micr
  • Flutter:忽略小部件上的触摸事件

    我希望在其他小部件之上有一个模糊的图像 但是 当我这样做时 我无法与它下面的小部件进行交互 Solution 您可以解决您的交互问题 无法与Widget在你的模糊图像下方 通过包围你的BackdropFilter与IgnorePointer
  • 如何在支持8位无符号整数的设备上合法显示DICOM 16无符号整数?

    我正在 iOS 上开发一个医疗应用程序 iOS 设备仅支持 GL UNSIGNED BYTE 和 GL LUMINANCE 或者通常仅支持每个组件 8 位 现在我有一些灰度图像是 16 位无符号整数 我想显示它们 我发现我们无法显示 16
  • 使用any()和all()检查列表是否包含一组值或另一组值

    我的代码是针对井字游戏并检查平局状态的 但我认为这个问题在一般意义上可能更有用 我有一个代表董事会的列表 它看起来像这样 board 1 2 3 4 5 6 7 8 9 当玩家移动时 他们移动的整数将被替换为他们的标记 x 或 o 我已经进
  • Spring Security 中拦截 url 模式的顺序

    在 appSecurity xml 我有这个 拦截 url 模式 users profile 访问 hasRole VIEW PROFILES 拦截url模式 用户 个人资料 编辑 访问 hasRole EDIT PROFILES 我有一个
  • 在 PHP 中验证 XHTML5?

    背景 I have made the decision to serve my website as application xhtml xml to anyone who will accept it I understand that