我可以使用什么标记在浏览器忽略的XHTML文档头中存储信息?

我可以使用什么标记在浏览器忽略的XHTML文档头中存储信息?,html,xml,xhtml,Html,Xml,Xhtml,我需要在XHTML头元素中存储一些任意XML数据,浏览器将忽略这些数据。有点像“data-*”机制的元素版本,用于构建自己的属性。是否有符合标准的方法来做到这一点 编辑:有人问我为什么要这样做。基本上,我正在构建一个处理网页的服务,我希望网页的创建者能够向该服务传递可选的“提示”,告诉它如何解析网页。我还没有决定具体的提示是什么,所以我想保持相当的灵活性 我的代码已经使用Java JSoup库来解析XHTML,因此我认为如果同一个库能够解析“提示”信息,而不必单独解析,那就更好了。有几种可能的方

我需要在XHTML头元素中存储一些任意XML数据,浏览器将忽略这些数据。有点像“data-*”机制的元素版本,用于构建自己的属性。是否有符合标准的方法来做到这一点

编辑:有人问我为什么要这样做。基本上,我正在构建一个处理网页的服务,我希望网页的创建者能够向该服务传递可选的“提示”,告诉它如何解析网页。我还没有决定具体的提示是什么,所以我想保持相当的灵活性


我的代码已经使用Java JSoup库来解析XHTML,因此我认为如果同一个库能够解析“提示”信息,而不必单独解析,那就更好了。

有几种可能的方法:

1-将简单信息存储在
元素中

<meta name="yourApp-NamedElement" content="simple_info" />

我不确定内容字段的最大长度是多少。理论上,您可以将所有编码的XML数据推送到一个元元素中。但是,您需要解码字符,然后将其解析为XML:

<meta name="yourApp-Config" content="&lt;xml&gt;&lt;config&gt;&lt;user&gt;123&lt;/user&gt;&lt;foo&gt;bar&lt;/foo&gt;&lt;/config&gt;&lt;/xml&gt;" />

2-在
块中使用CDATA

<script type="text">
//<![CDATA[
    <arbitrary>
        <markup>blahblah</markup>
    </arbitrary>
//]]>
</script>

//
3-将
块与

<object classid="foobar">
    <param name="something" value="something's value" />
    <object classid="foobarA">
        <param name="foobar2sbaseparam" value="blahblahlbah" />
        <object classid="foobarA1">
            <param name="sortofnested" value="startstogetunwieldy" />
            <param name="a123" value="barbar" />
        </object>
    </object>
</object>

我不喜欢这个解决方案,但尽管如此,XHTML strict允许对象,并且可以相互嵌套(
可能不嵌套)


但是,您需要验证xhtml有什么好的理由吗?有人会争辩说,验证是一种有用的调试工具,而不是一种要求。

我发现下面这篇文章是关于HTML注释中数据存储的非常原始的想法,所有浏览器都忽略了这一点。它是俄语的,但谷歌翻译会帮你:)

您是否尝试过将信息放入元元素中?例如,您可以尝试以下方法:

<meta name="blammy" content="&lt;blah blam=&quot;my&quot;&gt;">

编辑 请在上查看这篇文章。第13项(向下滚动页面上的部分内容)解决了这一问题。

Internet Explorer有一个“”功能,允许Web 作者使用
标记将XML数据内联到HTML文档中。 此功能不是基于多供应商Web标准,也不是 Firefox(或其他非IE浏览器)支持。然而,HTML5有一个缺点 更通用的功能称为“数据块”,可以携带几乎所有的数据 文本数据,包括XML

一个
,当它没有src属性且具有类型 属性,该属性不标识可执行脚本类型。这个 然后,
元素的内容是一个可以使用JavaScript的数据块 可以用。将XML放入数据块时,需要确保 正在嵌入的XML内容没有结束标记 大小写不敏感地匹配“

例如,可以像这样嵌入一个简单的XML采购订单:

可以使用DOMParser API将XML源文本解析为DOM树:

这里显示的基于HTML5数据块的方式在Firefox、Opera、基于WebKit的浏览器(如Chrome和Safari)以及IE9中都可以使用,而IE的XML数据岛只在IE中使用


我在最初的问题中详细阐述了元元素可以生孩子吗?它们可以包含什么?没有嵌套,是的,有限制。我用更多信息编辑了答案。所以你是建议我自己制作标签?@sanity我不确定我是否明白你的意思。上面的代码允许您存储任何内容(编或不编),并且仍然可以将页面解析为有效的严格XHTML。啊,我明白了-但是我需要“重新解析”脚本标记中的数据。肯定是一个潜在的解决方案,但如果有一种方法可以在解析原始HTML文档时解析嵌入的数据,那就太好了。@sanity我提供了另一种解决方案。这很难处理,但是XHTML Strict允许在
中嵌套
对象
,从而验证并允许您直接在文档上解析。
<script id="purchase-order" type="application/xml">
<purchaseOrder xmlns="http://example.mozilla.org/PurchaseOrderML">
  <lineItem>
    <name>Line Item 1</name>
    <price>1.25</price>
  </lineItem>
  <lineItem>
    <name>Line Item 2</name>
    <price>2.48</price>
  </lineItem>
</purchaseOrder>
</script>
var orderSource = document.getElementById("purchase-order").textContent;
var parser = new DOMParser();
var doc = parser.parseFromString(orderSource, "application/xml");