VRML is extensible too. Why is X3D more extensible than VRMLs EXTERNPROTO mechanism?
A component can contain many nodes (i.e. the Nurbs profile contains all of the related nurbs nodes). Also, a component can add other areas of functionality, such as a new scripting language support, or user-interface requirements, etc. A component can also simply be a collection of externprotos. VRML has only the Externproto mechanism for extensibility, but no real mechanism for creating groups of functionality extensions. X3D’s component, level, and profile mechanisms allows for this. And while the individual browsers can implement profiles by using protos and externprotos, it is not forced on the browser companies to do this. Plus, components can be in terms of more than just nodes. It can be for entire functional areas. For example, we might decide we need in-line ECMAScript within the X3D file at some point. The component mechanism permits this kind of extension.