31723


以下のようなXMLがあるときに`XPath`を使えば問題なく取得できるのですが、CSSセレクタでも同様の取得はできますか？

[code]

    doc = Nokogiri::XML(<<-EOF
    <xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance">
    <xbrli:context id="AsOf2016-09-30">
          <xbrli:entity>
            <xbrli:identifier scheme="http://www.sec.gov/CIK">0001621697</xbrli:identifier>
          </xbrli:entity>
          <xbrli:period>
            <xbrli:instant>2016-09-30</xbrli:instant>
          </xbrli:period>
          </xbrli:context>
          EOF
    )
    
[/code]

`XPath`ならこの形で取れるので

[code]

    > doc.at_xpath('//*[@id="AsOf2016-09-30"]/xbrli:period/xbrli:instant')
    # => <xbrli:instant>2016-09-30</xbrli:instant>
    
[/code]

CSSセレクタはこのようにすればいけるかと思ったのですが取得できませんでした。

[code]

    > doc.at_css('#AsOf2016-09-30 > xbrli:period > xbrli:instant')
    # => nil
    
[/code]

CSSセレクタでは namespace の取扱はどうすればよいのでしょうか？


CC BY-SA 3.0
2017-01-09T06:58:50.767
31722
2017-01-09T07:06:11.987
3271
question
ruby css xpath nokogiri
CSSセレクタでネームスペースを含むタグを選択する方法


CSSセレクターでのXML namespaceは`|`で表現します。 [Selectors Level 3 / 6.1.1. Type selectors
and namespaces](https://www.w3.org/TR/selectors/#typenmsp)

[code]

    doc.at_css('#AsOf2016-09-30 > xbrli|period > xbrli|instant')
    
[/code]

でどうでしょうか？


CC BY-SA 3.0
2017-01-09T07:06:11.987
31723
2017-01-09T07:06:11.987
4236
31722
answer