小编Bor*_*era的帖子

将 <main> 或 <article> 用于同时也是文章的页面的主要内容是否更正确?

我目前正在清理我的个人博客,我正在努力使 HTML 正确遵守 HTML 标准。博客结构很简单。我有一个链接到博客文章的主页和每个博客文章的页面。

对于博客文章页面。我不确定是否应该使用<main>or<article>标签来包装所有内容。

我要么用

<html>
<body>
  { heading, navigation, etc. }
  <main>
    <h1>{title}</h1>
    <time datetime="{publish date}">{human readable publish date}</time>

    {content}
  </main>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

或者

<html>
<body>
  { heading, navigation, etc. }
  <article>
    <h1>{title}</h1>
    <time datetime="{publish date}">{human readable publish date}</time>

    {content}
  </article>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我读的HTML规范<article>正确使用<main>似乎是更好的选择,因为<article>是为了分离HTML文档的独立自足的部分,而<main>意在表示在文档的文档或肉的主要部分。

我犹豫的原因是因为<article><time>元素一起使用以允许我指定帖子的发布时间。

来自 MDN(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article):

元素的发布日期和时间可以使用元素的 datetime 属性来描述。请注意, 的 pubdate 属性不再是 W3C HTML 5 标准的一部分。

html semantic-markup

7
推荐指数
1
解决办法
3688
查看次数

如何在带有前缀但没有名称空间的节点上使用xpath?

我有一个我需要解析的XML文件。我无法控制文件的格式,无法更改它。

该文件使用前缀(称为a),但未在任何地方为该前缀定义名称空间。我似乎无法xpath用来查询具有a名称空间的节点。

这是xml文档的内容

<?xml version="1.0" encoding="UTF-8"?>

<a:root>
  <a:thing>stuff0</a:thing>
  <a:thing>stuff1</a:thing>
  <a:thing>stuff2</a:thing>
  <a:thing>stuff3</a:thing>
  <a:thing>stuff4</a:thing>
  <a:thing>stuff5</a:thing>
  <a:thing>stuff6</a:thing>
  <a:thing>stuff7</a:thing>
  <a:thing>stuff8</a:thing>
  <a:thing>stuff9</a:thing>
</a:root>
Run Code Online (Sandbox Code Playgroud)

我正在使用Nokogiri查询文档:

doc = Nokogiri::XML(open('text.xml'))
things = doc.xpath('//a:thing')
Run Code Online (Sandbox Code Playgroud)

失败,出现以下错误:

Nokogiri::XML::XPath::SyntaxError: Undefined namespace prefix: //a:thing
Run Code Online (Sandbox Code Playgroud)

从我的研究中,我发现可以在xpath方法中为前缀指定名称空间:

things = doc.xpath('//a:thing', a: 'nobody knows')
Run Code Online (Sandbox Code Playgroud)

这将返回一个空数组。

对我来说,获得所需节点的最佳方法是什么?

ruby xml xpath namespaces nokogiri

5
推荐指数
1
解决办法
549
查看次数

Quicktime播放未完成的HLS事件播放列表无法搜索

我有一个EVENT类型的HLS播放列表.它有#EXT-X-PLAYLIST-TYPE:EVENT标签.播放列表尚未完成.它没有#EXT-X-ENDLIST标签.

当我在Quicktime中播放播放列表时,它不允许我四处寻找.由于这是一个事件播放列表,因此所有以前的段都可用.Quicktime应该拥有回头所需的一切.

我在OS X 10.6和Maverick上试过这个问题并且出现问题.我也在运行iOS 5的旧iPad上试过这个.在iOS 5上,问题不会发生.

这是播放列表本身:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-START:TIME-OFFSET=0,PRECISE=NO
#EXT-X-TARGETDURATION:10
#EXTINF:10,
live_robocop_hd-rate_01_6512.ts
#EXTINF:10,
live_robocop_hd-rate_01_6513.ts
#EXTINF:10,
live_robocop_hd-rate_01_6514.ts
#EXTINF:10,
live_robocop_hd-rate_01_6515.ts
# ... more segments here ...
Run Code Online (Sandbox Code Playgroud)

quicktime http-live-streaming m3u8

5
推荐指数
0
解决办法
618
查看次数

在Elixir中按值过滤Map的有效方法

在Elixir中,Map通过其值过滤a是一种有效的方法.

现在我有以下解决方案

%{foo: "bar", biz: nil, baz: 4}
|> Enum.reject(fn {_, v} -> is_nil(v) end)
|> Map.new
Run Code Online (Sandbox Code Playgroud)

这个解决方案对我来说似乎效率很低.当调用a时Map,Enum.reject/2返回a Keywords.因为我想要一个Map,我需要打电话Map.new/1将它转换Keywords回给我.

这似乎是低效的,因为Enum.reject/2必须迭代Map一次然后可能Map.new/1必须迭代Keywords另一次.

什么是更有效的解决方案?

dictionary filter elixir

5
推荐指数
1
解决办法
2972
查看次数