Giter VIP home page Giter VIP logo

Comments (5)

ThomasWeinert avatar ThomasWeinert commented on June 10, 2024

Not really, FluentDOM\Query is a node list, just like jQuery. If you're working with a single node, using the extended DOM node objects is not a bad idea. If you iterate a FluentDOM\Query the items are node objects. FluentDOM\Element even provides ArrayAccess for the attributes.

See: https://github.com/FluentDOM/FluentDOM/wiki/Element-ArrayAccess

A node name is complex. It is actually 3 properties. DOMNode::$nodeName, DOMNode::$localName and DOMNode::$namespaceURI. The node name is the tag name including the namespace prefix. It is not stable (the namespace prefix can change and is optional). To validate a node you should verify the local name and the namespace URI.

if ($node->namespaceURI= 'urn:foo' && $node->localName = 'foo') {
  ...
}

So I suggesting working with the element nodes and only putting them back into a FluentDOM\Query if you really need the traversing/manipulation API again.

Additionally FluentDOM\Query::is() and FluentDOM\Query::filter() could be used to verify the condition.

from fluentdom.

creativefctr avatar creativefctr commented on June 10, 2024

Thanks Thomas, but I still believe adding functions for getting full name or local name to your query/element object would be very useful. Something like this:

$fd->find('//div')->children()->first()->getlocalTagName()

  • Most XML documents used in the web for casual porpuses don't have namespaces. Including, HTML.

from fluentdom.

ThomasWeinert avatar ThomasWeinert commented on June 10, 2024

Why not just:

$fd->find('//div')->children()[0]->localName

or as a validation

$fd->find('//div')->children()->first()->is('local-name() = "span"')

The jQuery API is large and a little messy. So I am feeling a little queasy about adding more methods. Especially if they are not in jQuery.

from fluentdom.

creativefctr avatar creativefctr commented on June 10, 2024

I understand your feeling ... but ... you know ... people care about methods that are not there, not the extra methods that they do not use. It's also quite a useful feature. And "children()[0]->localName" is not as elegant as "getLocalName()".
Anyway, it's your library and you're in charge. Do what you believe is the best...

from fluentdom.

ThomasWeinert avatar ThomasWeinert commented on June 10, 2024

Well it is FluentDOM($node)[0]->localName vs FluentDOM($node)->getLocalName(). The difference is not that big.

from fluentdom.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.