public static function create( \Aimeos\MShop\Context\Item\Iface $context, $path, $name = null )
	{
		$path = trim( $path, '/' );

		if( empty( $path ) ) {
			return self::createRoot( $context, $path, $name );
		}

		$parts = explode( '/', $path );

		foreach( $parts as $key => $part )
		{
			if( ctype_alnum( $part ) === false )
			{
				$msg = sprintf( 'Invalid client "%1$s"', $path );
				throw new \Aimeos\Client\JsonApi\Exception( $msg, 400 );
			}

			$parts[$key] = ucfirst( $part );
		}

		$factory = '\\Aimeos\\Client\\JsonApi\\' . join( '\\', $parts ) . '\\Factory';

		if( class_exists( $factory ) === true )
		{
			if( ( $client = @call_user_func_array( [$factory, 'create'], [$context, $path, $name] ) ) === false ) {
				throw new \Aimeos\Client\JsonApi\Exception( sprintf( 'Invalid factory "%1$s"', $factory ), 400 );
			}
		}
		else
		{
			$client = self::createRoot( $context, $path, $name );
		}

		return $client;
	}