protected function createProcessor( $type, $domain )
	{
		$context = $this->getContext();
		$config = $context->getConfig();
		$parts = explode( '/', $type );

		foreach( $parts as $part )
		{
			if( ctype_alnum( $part ) === false )
			{
				$msg = sprintf( 'Invalid characters in processor type "%1$s"', $type );
				throw new \Aimeos\Controller\Common\Exception( $msg );
			}
		}

		if( ctype_alnum( $domain ) === false )
		{
			$msg = sprintf( 'Invalid characters in data domain name "%1$s"', $domain );
			throw new \Aimeos\Controller\Common\Exception( $msg );
		}

		$name = $config->get( 'controller/common/' . $domain . '/import/xml/processor/' . $type . '/name', 'Standard' );

		if( ctype_alnum( $name ) === false )
		{
			$msg = sprintf( 'Invalid characters in processor name "%1$s"', $name );
			throw new \Aimeos\Controller\Common\Exception( $msg );
		}

		$segment = str_replace( '/', '\\', ucwords( $type, '/' ) ) . '\\' . $name;
		$classname = '\\Aimeos\\Controller\\Common\\Common\\Import\\Xml\\Processor\\' . $segment;

		if( class_exists( $classname ) === false )
		{
			$classname = '\\Aimeos\\Controller\\Common\\' . ucfirst( $domain ) . '\\Import\\Xml\\Processor\\' . $segment;

			if( class_exists( $classname ) === false ){
				throw new \Aimeos\Controller\Common\Exception( sprintf( 'Class "%1$s" not found', $classname ) );
			}
		}

		$iface = \Aimeos\Controller\Common\Common\Import\Xml\Processor\Iface::class;
		return \Aimeos\MW\Common\Base::checkClass( $iface, new $classname( $context ) );
	}