我需要在XHTML HEAD元素中存储一些任意XML数据,浏览器会忽略这些元素。有点像构成自己属性的“data- *”机制的元素版本。是否有符合标准的方法来做到这一点?
编辑:有些人问我为什么要这样做。基本上我正在构建一个处理网页的服务,我希望网页的创建者能够将可选的“提示”传递给这个服务,告诉它如何解析页面。我还没有确切地确定提示是什么,所以我想保持相当灵活。
我的代码已经使用Java JSoup库来解析XHTML,所以我认为如果同一个库可以解析“提示”信息而不必单独解析它会很好。
答案 0 :(得分:0)
有几种可能的方法:
1 - 将简单信息存储在<meta>
元素
<meta name="yourApp-NamedElement" content="simple_info" />
我不确定内容字段的最大长度是多少。从理论上讲,您可以将所有编码的 XML数据推送到一个元元素中。但是,您需要解码字符然后解析为XML:
<meta name="yourApp-Config" content="<xml><config><user>123</user><foo>bar</foo></config></xml>" />
2 - 在<script>
块中使用CDATA
<script type="text">
//<![CDATA[
<arbitrary>
<markup>blahblah</markup>
</arbitrary>
//]]>
</script>
CDATA用于说明解析文档的任意内容character data。
3 - 使用<object>
阻止<params>
<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严格允许对象,并且可以互相嵌套(<params>
可能不嵌套)。
但是,您是否有充分理由需要对xhtml进行验证?有些人会认为验证是一种有用的调试工具,而不是一种要求。
答案 1 :(得分:0)
我在HTML评论中找到了以下关于数据存储原始概念的文章,所有浏览器都忽略了这一点。它是俄语,但谷歌翻译将帮助你:)。
http://www.manhunter.ru/webmaster/322_ispolzovanie_html_kommentariev_dlya_hraneniya_dannih.html
答案 2 :(得分:0)
您是否尝试将信息放入元素中?例如,你可以试试这个:
<meta name="blammy" content="<blah blam="my">">
修改的 查看Dev Opera上的这篇文章。第13项(在页面上向下滚动)解决了这个问题。
答案 3 :(得分:0)
https://developer.mozilla.org/en/Using_XML_Data_Islands_in_Mozilla
Internet Explorer具有允许Web的“XML Data Islands”功能 作者使用
<xml>
标记在HTML文档中包含内联的XML数据。 此功能不是基于多供应商Web标准,也不是 在Firefox(或其他非IE浏览器)中受支持。但是,HTML5有一个 更常见的功能称为“数据块”,几乎可以携带任何数据块 文本数据,包括XML。
<script>
,当它没有src属性且具有类型时 不标识可执行脚本类型的属性。该 然后,<script>
元素的内容是JavaScript的数据块 可以使用。将XML放入数据块时,需要确保这一点 您嵌入的XML内容没有结束标记 不区分大小写匹配“</script>
”。例如,可以嵌入一个简单的XML采购订单:
<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>
然后可以像这样检索XML源文本:
var orderSource = document.getElementById("purchase-order").textContent;
可以使用DOMParser API将XML源文本解析为DOM树:
var parser = new DOMParser();
var doc = parser.parseFromString(orderSource, "application/xml");
此处显示的基于HTML5数据块的方式适用于Firefox,Opera,基于WebKit的浏览器(如Chrome和Safari)以及IE9,而IE的XML数据岛仅适用于IE。